1 |
dgoldberg |
1.5 |
! $Header: /u/gcmpack/MITgcm/tools/OAD_support/ad_template.active_read_xy.F,v 1.4 2015/02/18 12:39:27 heimbach Exp $ |
2 |
heimbach |
1.2 |
! $Name: $ |
3 |
|
|
|
4 |
|
|
#include "OPENAD_OPTIONS.h" |
5 |
|
|
|
6 |
heimbach |
1.1 |
subroutine template() |
7 |
|
|
C !FUNCTIONS |
8 |
|
|
use OAD_tape |
9 |
|
|
use OAD_rev |
10 |
|
|
use OAD_cp |
11 |
|
|
|
12 |
|
|
|
13 |
|
|
! original arguments get inserted before version |
14 |
|
|
! ! and declared here together with all local variables |
15 |
|
|
! ! generated by xaifBooster |
16 |
|
|
|
17 |
|
|
!use mode_variables |
18 |
|
|
|
19 |
|
|
!$TEMPLATE_PRAGMA_DECLARATIONS |
20 |
|
|
type(modeType) :: our_orig_mode |
21 |
|
|
|
22 |
|
|
integer iaddr |
23 |
|
|
external iaddr |
24 |
|
|
|
25 |
|
|
!LOCAL VARIABLES: |
26 |
|
|
CHARACTER*(2) adpref |
27 |
|
|
CHARACTER*(80) fname |
28 |
|
|
INTEGER il |
29 |
|
|
INTEGER myNr |
30 |
|
|
LOGICAL useCurrentDir |
31 |
|
|
Real*8 active_var_p(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
32 |
|
|
INTEGER ILNBLNK |
33 |
|
|
EXTERNAL ILNBLNK |
34 |
|
|
|
35 |
heimbach |
1.4 |
#ifdef ALLOW_OPENAD_ACTIVE_READ_XY |
36 |
heimbach |
1.2 |
|
37 |
heimbach |
1.1 |
myNr = 1 |
38 |
|
|
useCurrentDir = .FALSE. |
39 |
|
|
|
40 |
|
|
if (our_rev_mode%plain) then |
41 |
|
|
our_orig_mode = our_rev_mode |
42 |
|
|
! original function |
43 |
|
|
active_var_p = active_var%v |
44 |
|
|
! set up for plain execution |
45 |
|
|
our_rev_mode%arg_store=.FALSE. |
46 |
|
|
our_rev_mode%arg_restore=.FALSE. |
47 |
|
|
our_rev_mode%plain=.TRUE. |
48 |
|
|
our_rev_mode%tape=.FALSE. |
49 |
|
|
our_rev_mode%adjoint=.FALSE. |
50 |
|
|
call ACTIVE_READ_3D_RL( |
51 |
|
|
& active_var_file, active_var_p, doglobalread, |
52 |
|
|
& useCurrentDir, lAdInit, iRec, myNr, |
53 |
|
|
& FORWARD_SIMULATION, myOptimIter, myThid ) |
54 |
|
|
! reset the mode |
55 |
|
|
our_rev_mode=our_orig_mode |
56 |
|
|
! copy back |
57 |
|
|
active_var%v = active_var_p |
58 |
|
|
end if |
59 |
|
|
|
60 |
|
|
if (our_rev_mode%tape) then |
61 |
|
|
! taping |
62 |
|
|
our_orig_mode=our_rev_mode |
63 |
dgoldberg |
1.5 |
! original function |
64 |
|
|
active_var_p = active_var%v |
65 |
heimbach |
1.1 |
our_rev_mode%arg_store=.FALSE. |
66 |
|
|
our_rev_mode%arg_restore=.FALSE. |
67 |
|
|
our_rev_mode%plain=.TRUE. |
68 |
|
|
our_rev_mode%tape=.FALSE. |
69 |
|
|
our_rev_mode%adjoint=.FALSE. |
70 |
heimbach |
1.3 |
if (oad_st_sz.lt.oad_st_ptr) call oad_st_grow() |
71 |
|
|
oad_st(oad_st_ptr) = active_var_file |
72 |
|
|
oad_st_ptr = oad_st_ptr+1 |
73 |
|
|
if (oad_it_sz.lt.oad_it_ptr) call oad_it_grow() |
74 |
|
|
oad_it(oad_it_ptr) = iRec |
75 |
|
|
oad_it_ptr = oad_it_ptr+1 |
76 |
heimbach |
1.1 |
call ACTIVE_READ_3D_RL( |
77 |
dgoldberg |
1.5 |
& active_var_file, active_var_p, doglobalread, |
78 |
heimbach |
1.1 |
& useCurrentDir, lAdInit, iRec, myNr, |
79 |
|
|
& FORWARD_SIMULATION, myOptimIter, myThid ) |
80 |
heimbach |
1.3 |
our_rev_mode=our_orig_mode |
81 |
dgoldberg |
1.5 |
! copy back |
82 |
|
|
active_var%v = active_var_p |
83 |
heimbach |
1.1 |
end if |
84 |
|
|
|
85 |
|
|
if (our_rev_mode%adjoint) then |
86 |
|
|
! adjoint |
87 |
heimbach |
1.3 |
oad_st_ptr = oad_st_ptr-1 |
88 |
|
|
active_var_file = oad_st(oad_st_ptr) |
89 |
|
|
oad_it_ptr = oad_it_ptr-1 |
90 |
|
|
iRec = oad_it(oad_it_ptr) |
91 |
heimbach |
1.1 |
adpref = 'ad' |
92 |
|
|
il = ILNBLNK( active_var_file ) |
93 |
|
|
WRITE(fname(1:80),'(A)') ' ' |
94 |
heimbach |
1.3 |
WRITE(fname(1:2+il),'(2A)') adpref, active_var_file(1:il) |
95 |
|
|
! WRITE(fname(1:2+il),'(2A)') adpref, active_var_file |
96 |
heimbach |
1.1 |
active_var_p = active_var%d |
97 |
|
|
! set up for plain execution |
98 |
|
|
our_orig_mode=our_rev_mode |
99 |
|
|
our_rev_mode%arg_store=.FALSE. |
100 |
|
|
our_rev_mode%arg_restore=.FALSE. |
101 |
|
|
our_rev_mode%plain=.TRUE. |
102 |
|
|
our_rev_mode%tape=.FALSE. |
103 |
|
|
our_rev_mode%adjoint=.FALSE. |
104 |
|
|
call ACTIVE_READ_3D_RL( |
105 |
|
|
& fname, active_var_p, doglobalread, |
106 |
|
|
& useCurrentDir, lAdInit, iRec, myNr, |
107 |
|
|
& REVERSE_SIMULATION, myOptimIter, myThid ) |
108 |
|
|
! reset the mode |
109 |
|
|
our_rev_mode=our_orig_mode |
110 |
|
|
! copy back |
111 |
|
|
active_var%d = active_var_p |
112 |
|
|
end if |
113 |
|
|
|
114 |
heimbach |
1.4 |
#endif /* ALLOW_OPENAD_ACTIVE_READ_XY */ |
115 |
heimbach |
1.2 |
|
116 |
heimbach |
1.1 |
end |