/[MITgcm]/MITgcm_contrib/heimbach/OpenAD/code_shallow_openad3/ad_template.checkpoint.f
ViewVC logotype

Annotation of /MITgcm_contrib/heimbach/OpenAD/code_shallow_openad3/ad_template.checkpoint.f

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Tue Aug 1 15:44:27 2006 UTC (20 years, 3 months ago) by utke
Branch: MAIN
gmredi enabled setup

1 utke 1.1 subroutine template()
2     use OpenAD_checkpoints
3     use OpenAD_tape
4     use OpenAD_rev
5    
6     c we may need these for the checkpointing
7     use SIZE_mod
8     use EEPARAMS_mod
9     use PARAMS_mod
10     use BAR2_mod
11     use BARRIER_mod
12     use CD_CODE_VARS_mod
13     use CG2D_mod
14     use CG3D_mod
15     use DFILE_mod
16     use DYNVARS_mod
17     use EEIO_mod
18     use EESUPPORT_mod
19     use EOS_mod
20     use EXCH_JAM_mod
21     use EXCH_mod
22     use FC_NAMEMANGLE_mod
23     use FFIELDS_mod
24     use GAD_mod
25     use GLOBAL_MAX_mod
26     use GLOBAL_SUM_mod
27     use GMREDI_mod
28     use GMREDI_TAVE_mod
29     use GRID_mod
30     use MPI_INFO_mod
31     use SOLVE_FOR_PRESSURE3D_mod
32     use SOLVE_FOR_PRESSURE_mod
33     use SURFACE_mod
34     use tamc_mod
35     use tamc_keys_mod
36     use cost_mod
37     use g_cost_mod
38     use ctrl_mod
39     use ctrl_dummy_mod
40     use ctrl_weights_mod
41     use optim_mod
42     use grdchk_mod
43    
44     !$TEMPLATE_PRAGMA_DECLARATIONS
45    
46     integer :: cp_loop_variable_1,cp_loop_variable_2,
47     + cp_loop_variable_3,cp_loop_variable_4,cp_loop_variable_5
48    
49     type(modeType) :: our_orig_mode
50    
51     integer iaddr
52     external iaddr
53    
54     character*(80):: indentation='
55     + '
56    
57     our_indent=our_indent+1
58    
59     write(*,
60     +'(A,A,A,A,L,A,L,A,L,A,L,A,L,A,L,A,I6,A,I6,A,I6,A,I6,A,I8,A,I8)')
61     +'JU:',indentation(1:our_indent), 'enter __SRNAME__:',
62     +' As:',our_rev_mode%arg_store,
63     +' Ar:',our_rev_mode%arg_restore,
64     +' Pl:',our_rev_mode%plain,
65     +' Ta:',our_rev_mode%tape,
66     +' Ad:',our_rev_mode%adjoint,
67     +' Sw:',our_rev_mode%switchedToCheckpoint,
68     +' CD:',cp_double_pointer,
69     +' CI:',cp_integer_pointer,
70     +' CB:',cp_boolean_pointer,
71     +' CS:',cp_string_pointer,
72     +' TD:',double_tape_pointer,
73     +' TI:',integer_tape_pointer
74    
75     if (our_rev_mode%switchedToCheckpoint) then
76    
77     if (our_rev_mode%arg_store) then
78     write(*,'(A,A,A)')
79     +'JU:',indentation(1:our_indent),
80     +' __SRNAME__: entering arg store'
81     !$PLACEHOLDER_PRAGMA$ id=4
82     end if
83     if (our_rev_mode%arg_restore) then
84     write(*,'(A,A,A)')
85     +'JU:',indentation(1:our_indent),
86     +' __SRNAME__: entering arg restore'
87     !$PLACEHOLDER_PRAGMA$ id=6
88     end if
89     if (our_rev_mode%plain) then
90     write(*,'(A,A,A)')
91     +'JU:',indentation(1:our_indent),
92     +' __SRNAME__: entering plain'
93     our_orig_mode=our_rev_mode
94     our_rev_mode%arg_store=.FALSE.
95     write(*,'(A,A,A)')
96     +'JU:',indentation(1:our_indent),
97     +' __SRNAME__: run plain, down plain'
98     !$PLACEHOLDER_PRAGMA$ id=1
99     our_rev_mode=our_orig_mode
100     end if
101     if (our_rev_mode%tape) then
102     write(*,'(A,A,A)')
103     +'JU:',indentation(1:our_indent),
104     +' __SRNAME__: entering tape'
105     our_orig_mode=our_rev_mode
106     our_rev_mode%arg_store=.TRUE.
107     our_rev_mode%arg_restore=.FALSE.
108     our_rev_mode%plain=.TRUE.
109     our_rev_mode%tape=.FALSE.
110     our_rev_mode%adjoint=.FALSE.
111     write(*,'(A,A,A)')
112     +'JU:',indentation(1:our_indent),
113     +' __SRNAME__: run tape, down arg store/plain'
114     !$PLACEHOLDER_PRAGMA$ id=2
115     our_rev_mode%arg_store=.FALSE.
116     our_rev_mode%arg_restore=.TRUE.
117     our_rev_mode%plain=.FALSE.
118     our_rev_mode%tape=.TRUE.
119     our_rev_mode%adjoint=.FALSE.
120     write(*,'(A,A,A)')
121     +'JU:',indentation(1:our_indent),
122     +' __SRNAME__: following with adjoint, down arg restor/tape'
123     !$PLACEHOLDER_PRAGMA$ id=3
124     our_rev_mode=our_orig_mode
125     end if
126    
127     else
128    
129     our_rev_mode%switchedToCheckpoint = .TRUE.
130    
131     if (our_rev_mode%arg_store) then
132     write(*,'(A,A,A)')
133     +'JU:',indentation(1:our_indent),
134     +' __SRNAME__: s2c entering arg store'
135     write(*,*) 'JU: ERROR : arg store here is wrong logic'
136     stop
137     end if
138     if (our_rev_mode%arg_restore) then
139     write(*,'(A,A,A)')
140     +'JU:',indentation(1:our_indent),
141     +' __SRNAME__: entering arg restore'
142     write(*,*) 'JU: ERROR : arg restore here is wrong logic'
143     stop
144     end if
145     if (our_rev_mode%plain) then
146     write(*,'(A,A,A)')
147     +'JU:',indentation(1:our_indent),
148     +' __SRNAME__: s2c entering plain'
149     our_orig_mode=our_rev_mode
150     !$PLACEHOLDER_PRAGMA$ id=1
151     our_rev_mode=our_orig_mode
152     end if
153     if (our_rev_mode%tape) then
154     write(*,'(A,A,A)')
155     +'JU:',indentation(1:our_indent),
156     +' __SRNAME__: s2c entering as tape'
157     c we have to switch from split to checkpointing mode
158     c i.e. outside taping means top level checkpointing here
159     write(*,'(A,A,A)')
160     +'JU:',indentation(1:our_indent),
161     +' __SRNAME__: s2c store argument cp'
162     !$PLACEHOLDER_PRAGMA$ id=4
163     c now do the forward run down a plain
164     our_orig_mode=our_rev_mode
165     our_rev_mode%arg_store=.FALSE.
166     our_rev_mode%arg_restore=.FALSE.
167     our_rev_mode%plain=.TRUE.
168     our_rev_mode%tape=.FALSE.
169     our_rev_mode%adjoint=.FALSE.
170     write(*,'(A,A,A)')
171     +'JU:',indentation(1:our_indent), ' __SRNAME__: s2c run plain'
172     !$PLACEHOLDER_PRAGMA$ id=1
173     our_rev_mode=our_orig_mode
174     end if
175     if (our_rev_mode%adjoint) then
176     write(*,'(A,A,A)')
177     +'JU:',indentation(1:our_indent),
178     +' __SRNAME__: s2c entering as adjoint'
179     c we have to switch from split to checkpointing mode
180     c i.e. outside adjoint means argument restore, taping and then adjoint here
181     c argument restore
182     write(*,'(A,A,A)')
183     +'JU:',indentation(1:our_indent),
184     +' __SRNAME__: s2c restore argument cp'
185     !$PLACEHOLDER_PRAGMA$ id=6
186     c setup checkpointing downwards
187     our_orig_mode=our_rev_mode
188     our_rev_mode%arg_store=.TRUE.
189     our_rev_mode%arg_restore=.FALSE.
190     our_rev_mode%plain=.TRUE.
191     our_rev_mode%tape=.FALSE.
192     our_rev_mode%adjoint=.FALSE.
193     c taping this level
194     write(*,'(A,A,A,A)')
195     +'JU:',indentation(1:our_indent),
196     +' __SRNAME__: s2c run tape, down arg store/plain'
197     !$PLACEHOLDER_PRAGMA$ id=2
198     c setting up for taping downwards
199     our_rev_mode%arg_store=.FALSE.
200     our_rev_mode%arg_restore=.TRUE.
201     our_rev_mode%plain=.FALSE.
202     our_rev_mode%tape=.TRUE.
203     our_rev_mode%adjoint=.TRUE.
204     c adjoining this level
205     write(*,'(A,A,A,A)')
206     +'JU:',indentation(1:our_indent),
207     +' __SRNAME__: s2c run adjoint, down arg restore/tape'
208     !$PLACEHOLDER_PRAGMA$ id=3
209     our_rev_mode=our_orig_mode
210     end if
211    
212     our_rev_mode%switchedToCheckpoint=.FALSE.
213    
214     end if
215    
216     write(*,
217     +'(A,A,A,A,L,A,L,A,L,A,L,A,L,A,L,A,I6,A,I6,A,I6,A,I6,A,I8,A,I8)')
218     +'JU:',indentation(1:our_indent), 'leave __SRNAME__:',
219     +' As:',our_rev_mode%arg_store,
220     +' Ar:',our_rev_mode%arg_restore,
221     +' Pl:',our_rev_mode%plain,
222     +' Ta:',our_rev_mode%tape,
223     +' Ad:',our_rev_mode%adjoint,
224     +' Sw:',our_rev_mode%switchedToCheckpoint,
225     +' CD:',cp_double_pointer,
226     +' CI:',cp_integer_pointer,
227     +' CB:',cp_boolean_pointer,
228     +' CS:',cp_string_pointer,
229     +' TD:',double_tape_pointer,
230     +' TI:',integer_tape_pointer
231    
232     our_indent=our_indent-1
233     end subroutine template

  ViewVC Help
Powered by ViewVC 1.1.22