/[MITgcm]/MITgcm/pkg/autodiff/addummy_in_stepping.F
ViewVC logotype

Contents of /MITgcm/pkg/autodiff/addummy_in_stepping.F

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


Revision 1.65 - (show annotations) (download)
Fri Mar 24 23:34:13 2017 UTC (7 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.64: +10 -6 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/autodiff/addummy_in_stepping.F,v 1.64 2016/08/20 03:10:02 heimbach Exp $
2 C $Name: $
3
4 #include "AUTODIFF_OPTIONS.h"
5 #ifdef ALLOW_OPENAD
6 # include "OPENAD_OPTIONS.h"
7 #endif
8 #ifdef ALLOW_CTRL
9 # include "CTRL_OPTIONS.h"
10 #endif
11 #include "AD_CONFIG.h"
12
13 CBOP
14 C !ROUTINE: ADDUMMY_IN_STEPPING
15 C !INTERFACE:
16 SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid )
17
18 C !DESCRIPTION: \bv
19 C *==========================================================*
20 C | SUBROUTINE ADDUMMY_IN_STEPPING |
21 C *==========================================================*
22 C Extract adjoint variable from TAMC/TAF-generated
23 C adjoint common blocks, contained in adcommon.h
24 C and write fields to file;
25 C Make sure common blocks in adcommon.h are up-to-date
26 C w.r.t. current adjoint code.
27 C *==========================================================*
28 C | SUBROUTINE ADDUMMY_IN_STEPPING |
29 C *==========================================================*
30 C \ev
31
32 C !USES:
33 IMPLICIT NONE
34
35 C == Global variables ===
36 #ifdef ALLOW_OPENAD
37 use OAD_active
38 use OAD_rev
39 use OAD_tape
40 use OAD_cp
41 #endif
42 #include "SIZE.h"
43 #include "EEPARAMS.h"
44 #include "PARAMS.h"
45 #ifdef ALLOW_OPENAD
46 # include "DYNVARS.h"
47 # include "FFIELDS.h"
48 #endif
49 #include "AUTODIFF_PARAMS.h"
50 #ifdef ALLOW_MNC
51 #include "MNC_PARAMS.h"
52 #endif
53 c#include "GRID.h"
54 #ifdef ALLOW_AUTODIFF_MONITOR
55 # include "AUTODIFF.h"
56 # ifndef ALLOW_OPENAD
57 # include "adcommon.h"
58 # endif /* ALLOW_OPENAD */
59 #endif /* ALLOW_AUTODIFF_MONITOR */
60
61 C !INPUT/OUTPUT PARAMETERS:
62 C == Routine arguments ==
63 C myTime :: time counter for this thread
64 C myIter :: iteration counter for this thread
65 C myThid :: Thread number for this instance of the routine.
66 _RL myTime
67 INTEGER myIter
68 INTEGER myThid
69
70 #if (defined (ALLOW_ADJOINT_RUN) || defined (ALLOW_ADMTLM))
71 #ifdef ALLOW_AUTODIFF_MONITOR
72
73 C !FUNCTIONS:
74 LOGICAL DIFFERENT_MULTIPLE
75 EXTERNAL DIFFERENT_MULTIPLE
76
77 C !LOCAL VARIABLES:
78 c == local variables ==
79 C suff :: Hold suffix part of a filename
80 C msgBuf :: Error message buffer
81 CHARACTER*(10) suff
82 CHARACTER*(MAX_LEN_MBUF) msgBuf
83 _RL var2Du(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
84 _RL var2Dv(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
85 _RL foo2D (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
86 _RL var3Du(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
87 _RL var3Dv(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
88 _RL foo3D (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
89 _RS dumRS(1)
90 _RL dumRL(1)
91 CEOP
92
93 IF (
94 & DIFFERENT_MULTIPLE(adjDumpFreq,myTime,deltaTClock)
95 & ) THEN
96
97 CALL TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
98
99 c increment ad dump record number (used only if dumpAdByRec is true)
100 dumpAdRecMn=dumpAdRecMn+1
101 c#ifdef ALLOW_DEBUG
102 c IF ( debugMode ) print*,'dumpAdRecMn',dumpAdRecMn
103 c#endif
104
105 IF ( dumpAdVarExch.EQ.1 ) THEN
106 #ifdef ALLOW_OPENAD
107 C-- need to all the correct OpenAD EXCH S/R ; left empty for now
108 #else /* ALLOW_OPENAD */
109
110 #ifdef AUTODIFF_TAMC_COMPATIBILITY
111
112 call adexch_xy_rl( myThid,adetan)
113 call adexch_xyz_rl( myThid,adtheta)
114 call adexch_xyz_rl( myThid,adsalt)
115 call adexch_xyz_rl( myThid,adwvel )
116 call adexch_uv_xyz_rl( .true. ,myThid,aduvel,advvel )
117
118 call adexch_uv_xy_rs( .true., myThid, adfu, adfv )
119 call adexch_xy_rs( myThid,adqnet )
120 call adexch_xy_rs( myThid,adempmr )
121 # ifdef ALLOW_EDDYPSI_CONTROL
122 call adexch_uv_xyz_rs( .true. ,myThid,adeddypsix,adeddypsiy )
123 # endif
124 # ifdef ALLOW_DIFFKR_CONTROL
125 call adexch_xyz_rl( myThid,addiffkr )
126 # endif
127 # ifdef ALLOW_KAPGM_CONTROL
128 call adexch_xyz_rl( myThid,adkapgm )
129 # endif
130 # ifdef ALLOW_KAPREDI_CONTROL
131 call adexch_xyz_rl( myThid,adkapredi )
132 # endif
133 # ifdef ALLOW_SST0_CONTROL
134 call adexch_xy_rl( myThid,adsst )
135 # endif
136 # ifdef ALLOW_SSS0_CONTROL
137 call adexch_xy_rl( myThid,adsss )
138 # endif
139 # ifdef ALLOW_BOTTOMDRAG_CONTROL
140 call adexch_xy_rl( myThid,adbottomdragfld)
141 # endif
142
143 # else /* ndfef AUTODIFF_TAMC_COMPATIBILITY */
144
145 CALL ADEXCH_3D_RL( adEtaN, 1 , myThid )
146 # ifndef ALLOW_BULK_OFFLINE
147 CALL ADEXCH_3D_RL( adTheta,Nr, myThid )
148 CALL ADEXCH_3D_RL( adSalt, Nr, myThid )
149 CALL ADEXCH_3D_RL( adwVel, Nr, myThid )
150 CALL ADEXCH_UV_3D_RL( aduVel,advVel, .TRUE., Nr, myThid )
151 # endif
152 CALL ADEXCH_UV_XY_RS( adFu, adFv, .TRUE., myThid )
153 CALL ADEXCH_XY_RS( adQnet, myThid )
154 CALL ADEXCH_XY_RS( adEmPmR, myThid )
155 # ifdef ALLOW_EDDYPSI_CONTROL
156 CALL ADEXCH_UV_XYZ_RS( adEddyPsiX, adEddyPsiY, .TRUE., myThid )
157 # endif
158 # ifdef ALLOW_DIFFKR_CONTROL
159 CALL ADEXCH_3D_RL( adDiffKr, Nr, myThid )
160 # endif
161 # ifdef ALLOW_KAPGM_CONTROL
162 CALL ADEXCH_3D_RL( adKapGM, Nr, myThid )
163 # endif
164 # ifdef ALLOW_KAPREDI_CONTROL
165 CALL ADEXCH_3D_RL( adKapRedi, Nr, myThid )
166 # endif
167 # ifdef ALLOW_SST0_CONTROL
168 CALL ADEXCH_XY_RS( adSST, myThid )
169 # endif
170 # ifdef ALLOW_SSS0_CONTROL
171 CALL ADEXCH_XY_RS( adSSS, myThid )
172 # endif
173 # ifdef ALLOW_BOTTOMDRAG_CONTROL
174 CALL ADEXCH_3D_RL( adBottomDragFld, 1 , myThid )
175 # endif
176
177 #endif /* AUTODIFF_TAMC_COMPATIBILITY */
178 #endif /* ALLOW_OPENAD */
179 ENDIF
180
181 C-- Set suffix for this set of data files.
182 IF ( rwSuffixType.EQ.0 ) THEN
183 WRITE(suff,'(I10.10)') myIter
184 ELSE
185 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
186 ENDIF
187 C ==>> Resetting run-time parameter writeBinaryPrec in the middle of a run
188 C ==>> is very very very nasty !!!
189 c writeBinaryPrec = writeStatePrec
190 C <<== If you really want to mess-up with this at your own risk,
191 C <<== uncomment the line above
192
193 C-----------------------------------------------------------------------
194 #ifndef ALLOW_OPENAD
195 C-----------------------------------------------------------------------
196
197 IF ( ( dumpAdVarExch.NE.2 ).AND.(.NOT.dumpAdByRec) ) THEN
198 CALL WRITE_FLD_XYZ_RL( 'ADJtheta.', suff,
199 & adTheta, myIter, myThid )
200 CALL WRITE_FLD_XYZ_RL( 'ADJsalt.', suff,
201 & adSalt, myIter, myThid )
202 CALL WRITE_FLD_XYZ_RL( 'ADJuvel.', suff,
203 & aduVel, myIter, myThid )
204 CALL WRITE_FLD_XYZ_RL( 'ADJvvel.', suff,
205 & advVel, myIter, myThid )
206 CALL WRITE_FLD_XYZ_RL( 'ADJwvel.', suff,
207 & adwVel, myIter, myThid )
208 CALL WRITE_FLD_XY_RL ( 'ADJetan.', suff,
209 & adEtaN, myIter, myThid )
210
211 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
212 CALL WRITE_FLD_XY_RS('ADJtaux.',suff, adFu, myIter, myThid )
213 CALL WRITE_FLD_XY_RS('ADJtauy.',suff, adFv, myIter, myThid )
214 CALL WRITE_FLD_XY_RS('ADJqnet.',suff, adQnet,myIter,myThid )
215 CALL WRITE_FLD_XY_RS('ADJempr.',suff,adEmPmR,myIter,myThid )
216 #ifdef SHORTWAVE_HEATING
217 CALL WRITE_FLD_XY_RS('ADJqsw.', suff, adQsw,myIter, myThid )
218 #endif
219 ENDIF
220
221 #ifdef ALLOW_GGL90
222 c CALL WRITE_FLD_XYZ_RL ( 'ADJggl90diffkr.',suff,
223 c & adGGL90DiffKr, myIter, myThid )
224 CALL WRITE_FLD_XYZ_RL( 'ADJggl90tke.', suff,
225 & adGGL90TKE, myIter, myThid )
226 #endif
227 #ifdef ALLOW_DIFFKR_CONTROL
228 CALL WRITE_FLD_XYZ_RL( 'ADJdiffkr.', suff,
229 & adDiffKr, myIter, myThid )
230 #endif
231 #ifdef ALLOW_KAPGM_CONTROL
232 CALL WRITE_FLD_XYZ_RL( 'ADJkapgm.', suff,
233 & adKapGM, myIter, myThid )
234 #endif
235 #ifdef ALLOW_KAPREDI_CONTROL
236 CALL WRITE_FLD_XYZ_RL( 'ADJkapredi.', suff,
237 & adKapRedi, myIter, myThid )
238 #endif
239 #ifdef ALLOW_EDDYPSI_CONTROL
240 CALL WRITE_FLD_XYZ_RS( 'ADJeddypsix.', suff,
241 & adEddyPsiX, myIter, myThid )
242 CALL WRITE_FLD_XYZ_RS( 'ADJeddypsiy.', suff,
243 & adEddyPsiY, myIter, myThid )
244 #endif
245 #ifdef ALLOW_SST0_CONTROL
246 CALL WRITE_FLD_XY_RS( 'ADJsst.',suff, adSST, myIter, myThid )
247 #endif
248 #ifdef ALLOW_SSS0_CONTROL
249 CALL WRITE_FLD_XY_RS( 'ADJsss.',suff, adSSS, myIter, myThid )
250 #endif
251 #ifdef ALLOW_BOTTOMDRAG_CONTROL
252 CALL WRITE_FLD_XY_RL ( 'ADJbottomdrag.', suff,
253 & adBottomDragFld, myIter, myThid )
254 #endif
255
256 ELSEIF ( ( dumpAdVarExch.NE.2 ).AND.(dumpAdByRec) ) THEN
257
258 CALL WRITE_REC_XYZ_RL( 'ADJtheta',
259 & adTheta, dumpAdRecMn, myIter,myThid )
260 CALL WRITE_REC_XYZ_RL( 'ADJsalt',
261 & adSalt, dumpAdRecMn, myIter, myThid )
262 CALL WRITE_REC_XYZ_RL( 'ADJuvel',
263 & aduVel, dumpAdRecMn, myIter, myThid )
264 CALL WRITE_REC_XYZ_RL( 'ADJvvel',
265 & advVel, dumpAdRecMn, myIter, myThid )
266 CALL WRITE_REC_XYZ_RL( 'ADJwvel',
267 & adwVel, dumpAdRecMn, myIter, myThid )
268 CALL WRITE_REC_XY_RL ( 'ADJetan',
269 & adEtaN, dumpAdRecMn, myIter, myThid )
270
271 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
272 CALL WRITE_REC_XY_RS('ADJtaux',
273 & adFu, dumpAdRecMn, myIter, myThid )
274 CALL WRITE_REC_XY_RS('ADJtauy',
275 & adFv, dumpAdRecMn, myIter, myThid )
276 CALL WRITE_REC_XY_RS('ADJqnet',
277 & adQnet,dumpAdRecMn, myIter,myThid )
278 CALL WRITE_REC_XY_RS('ADJempr',
279 & adEmPmR,dumpAdRecMn, myIter,myThid )
280 #ifdef SHORTWAVE_HEATING
281 CALL WRITE_REC_XY_RS('ADJqsw',
282 & adQsw,dumpAdRecMn, myIter, myThid )
283 #endif
284 ENDIF
285
286 #ifdef ALLOW_GGL90
287 c CALL WRITE_REC_XYZ_RL ( 'ADJggl90diffkr',
288 c & adGGL90DiffKr, dumpAdRecMn, myIter, myThid )
289 CALL WRITE_REC_XYZ_RL( 'ADJggl90tke',
290 & adGGL90TKE, dumpAdRecMn, myIter, myThid )
291 #endif
292 #ifdef ALLOW_DIFFKR_CONTROL
293 CALL WRITE_REC_XYZ_RL( 'ADJdiffkr',
294 & adDiffKr, dumpAdRecMn, myIter, myThid )
295 #endif
296 #ifdef ALLOW_KAPGM_CONTROL
297 CALL WRITE_REC_XYZ_RL( 'ADJkapgm',
298 & adKapGM, dumpAdRecMn, myIter, myThid )
299 #endif
300 #ifdef ALLOW_KAPREDI_CONTROL
301 CALL WRITE_REC_XYZ_RL( 'ADJkapredi',
302 & adKapRedi, dumpAdRecMn, myIter, myThid )
303 #endif
304 #ifdef ALLOW_EDDYPSI_CONTROL
305 CALL WRITE_REC_XYZ_RS( 'ADJeddypsix',
306 & adEddyPsiX, dumpAdRecMn, myIter, myThid )
307 CALL WRITE_REC_XYZ_RS( 'ADJeddypsiy',
308 & adEddyPsiY, dumpAdRecMn, myIter, myThid )
309 #endif
310 #ifdef ALLOW_SST0_CONTROL
311 CALL WRITE_REC_XY_RS( 'ADJsst',
312 & adSST, dumpAdRecMn, myIter, myThid )
313 #endif
314 #ifdef ALLOW_SSS0_CONTROL
315 CALL WRITE_REC_XY_RS( 'ADJsss',
316 & adSSS, dumpAdRecMn, myIter, myThid )
317 #endif
318 #ifdef ALLOW_BOTTOMDRAG_CONTROL
319 CALL WRITE_REC_XY_RL ( 'ADJbottomdrag',
320 & adBottomDragFld, dumpAdRecMn, myIter, myThid )
321 #endif
322
323 ELSE
324 C case dumpAdVarExch = 2
325 CALL COPY_ADVAR_OUTP( dumRS, adTheta,var3Du, Nr, 12, myThid )
326 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJtheta.',
327 & suff, var3Du, myIter, myThid )
328 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJtheta',
329 & var3Du, dumpAdRecMn, myIter, myThid )
330 CALL COPY_ADVAR_OUTP( dumRS, adSalt, var3Du, Nr, 12, myThid )
331 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJsalt.',
332 & suff, var3Du, myIter, myThid )
333 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJsalt',
334 & var3Du, dumpAdRecMn, myIter, myThid )
335 CALL COPY_AD_UV_OUTP( dumRS, dumRS, aduVel, advVel,
336 & var3Du, var3Dv, Nr, 34, myThid )
337 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJuvel.',
338 & suff, var3Du, myIter, myThid )
339 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJuvel',
340 & var3Du, dumpAdRecMn, myIter, myThid )
341 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJvvel.',
342 & suff, var3Dv, myIter, myThid )
343 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJvvel',
344 & var3Dv, dumpAdRecMn, myIter, myThid )
345 CALL COPY_ADVAR_OUTP( dumRS, adwVel, var3Du, Nr, 12, myThid )
346 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJwvel.',
347 & suff, var3Du, myIter, myThid )
348 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJwvel',
349 & var3Du, dumpAdRecMn, myIter, myThid )
350 CALL COPY_ADVAR_OUTP( dumRS, adEtaN, var2Du, 1 , 12, myThid )
351 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJetan.',
352 & suff, var2Du, myIter, myThid )
353 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJetan',
354 & var2Du, dumpAdRecMn, myIter, myThid )
355
356 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
357 CALL COPY_AD_UV_OUTP( adFu, adFv, dumRL, dumRL,
358 & var2Du, var2Dv, 1, 33, myThid )
359 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJtaux.',
360 & suff,var2Du,myIter,myThid )
361 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJtaux',
362 & var2Du,dumpAdRecMn, myIter,myThid )
363 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJtauy.',
364 & suff,var2Dv,myIter,myThid )
365 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJtauy',
366 & var2Dv,dumpAdRecMn, myIter,myThid )
367 CALL COPY_ADVAR_OUTP( adQnet, dumRL, var2Du, 1, 11, myThid )
368 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJqnet.',
369 & suff,var2Du,myIter,myThid )
370 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJqnet',
371 & var2Du,dumpAdRecMn, myIter,myThid )
372 CALL COPY_ADVAR_OUTP( adEmPmR,dumRL, var2Du, 1, 11, myThid )
373 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJempr.',
374 & suff,var2Du,myIter,myThid )
375 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJempr',
376 & var2Du,dumpAdRecMn, myIter,myThid )
377 #ifdef SHORTWAVE_HEATING
378 CALL COPY_ADVAR_OUTP( adQsw, dumRL, var2Du, 1, 11, myThid )
379 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJqsw.',
380 & suff,var2Du,myIter,myThid )
381 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJqsw',
382 & var2Du,dumpAdRecMn, myIter,myThid )
383 #endif
384 ENDIF
385 #ifdef ALLOW_GGL90
386 CALL COPY_ADVAR_OUTP( dumRS,adGGL90TKE,var3Du,Nr, 12,myThid )
387 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJggl90tke.',
388 & suff, var3Du, myIter, myThid )
389 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJggl90tke',
390 & var3Du, dumpAdRecMn, myIter, myThid )
391 #endif
392 #ifdef ALLOW_DIFFKR_CONTROL
393 CALL COPY_ADVAR_OUTP( dumRS, adDiffKr,var3Du, Nr, 12,myThid )
394 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJdiffkr.',
395 & suff, var3Du, myIter, myThid )
396 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJdiffkr',
397 & var3Du, dumpAdRecMn, myIter, myThid )
398 #endif
399 #ifdef ALLOW_KAPGM_CONTROL
400 CALL COPY_ADVAR_OUTP( dumRS, adKapGM, var3Du, Nr, 12,myThid )
401 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJkapgm.',
402 & suff, var3Du, myIter, myThid )
403 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJkapgm',
404 & var3Du, dumpAdRecMn, myIter, myThid )
405 #endif
406 #ifdef ALLOW_KAPREDI_CONTROL
407 CALL COPY_ADVAR_OUTP( dumRS,adKapRedi,var3Du, Nr, 12,myThid )
408 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJkapredi.',
409 & suff, var3Du, myIter, myThid )
410 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJkapredi',
411 & var3Du, dumpAdRecMn, myIter, myThid )
412 #endif
413 #ifdef ALLOW_EDDYPSI_CONTROL
414 CALL COPY_AD_UV_OUTP( adEddyPsiX, adEddyPsiY, dumRL, dumRL,
415 & var3Du, var3Dv, Nr, 33, myThid )
416 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJeddypsix.',
417 & suff, var3Du, myIter, myThid )
418 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJeddypsix',
419 & var3Du, dumpAdRecMn, myIter, myThid )
420 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJeddypsiy.',
421 & suff, var3Dv, myIter, myThid )
422 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJeddypsiy',
423 & var3Dv, dumpAdRecMn, myIter, myThid )
424 #endif
425 #ifdef ALLOW_SST0_CONTROL
426 CALL COPY_ADVAR_OUTP( adSST, dumRL, var2Du, 1, 11, myThid )
427 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJsst.',
428 & suff,var2Du,myIter,myThid )
429 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJsst',
430 & var2Du,dumpAdRecMn, myIter,myThid )
431 #endif
432 #ifdef ALLOW_SSS0_CONTROL
433 CALL COPY_ADVAR_OUTP( adSSS, dumRL, var2Du, 1, 11, myThid )
434 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJsss.',
435 & suff,var2Du,myIter,myThid )
436 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJsss',
437 & var2Du,dumpAdRecMn, myIter,myThid )
438 #endif
439 #ifdef ALLOW_BOTTOMDRAG_CONTROL
440 CALL COPY_ADVAR_OUTP( dumRS, adBottomDragFld,
441 & var2Du, 1, 12, myThid )
442 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJbottomdrag.',
443 & suff, var2Du, myIter, myThid )
444 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJbottomdrag',
445 & var2Du, dumpAdRecMn, myIter, myThid )
446 #endif
447 C end if dumpAdVarExch = 2
448 ENDIF
449
450 C-----------------------------------------------------------------------
451 #else /* ndef ALLOW_OPENAD */
452 C-----------------------------------------------------------------------
453
454 IF ( ( dumpAdVarExch.NE.2 ).AND.(.NOT.dumpAdByRec) ) THEN
455 foo3D = theta%d
456 CALL WRITE_FLD_XYZ_RL( 'ADJtheta.', suff,
457 & foo3D, myIter, myThid )
458 foo3D = salt%d
459 CALL WRITE_FLD_XYZ_RL( 'ADJsalt.', suff,
460 & foo3D, myIter, myThid )
461 foo3D = uvel%d
462 CALL WRITE_FLD_XYZ_RL( 'ADJuvel.', suff,
463 & foo3D, myIter, myThid )
464 foo3D = vvel%d
465 CALL WRITE_FLD_XYZ_RL( 'ADJvvel.', suff,
466 & foo3D, myIter, myThid )
467 foo3D = wvel%d
468 CALL WRITE_FLD_XYZ_RL( 'ADJwvel.', suff,
469 & foo3D, myIter, myThid )
470 foo2D = etaN%d
471 CALL WRITE_FLD_XY_RL ( 'ADJetan.', suff,
472 & foo2D, myIter, myThid )
473
474 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
475 foo2D = Fu%d
476 CALL WRITE_FLD_XY_RS('ADJtaux.',suff, foo2d, myIter, myThid )
477 foo2D = Fv%d
478 CALL WRITE_FLD_XY_RS('ADJtauy.',suff, foo2d, myIter, myThid )
479 foo2D = Qnet%d
480 CALL WRITE_FLD_XY_RS('ADJqnet.',suff, foo2d,myIter,myThid )
481 foo2D = EmPmR%d
482 CALL WRITE_FLD_XY_RS('ADJempr.',suff,foo2d,myIter,myThid )
483 #ifdef SHORTWAVE_HEATING
484 cc foo2D = Qsw%d
485 cc CALL WRITE_FLD_XY_RS('ADJqsw.', suff, foo2d,myIter, myThid )
486 #endif
487 ENDIF
488
489 #ifdef ALLOW_GGL90
490 c CALL WRITE_FLD_XYZ_RL ( 'ADJggl90diffkr.',suff,
491 c & adGGL90DiffKr, myIter, myThid )
492 cc foo3D = GGL90TKE%d
493 cc CALL WRITE_FLD_XYZ_RL( 'ADJggl90tke.', suff,
494 cc & foo3d, myIter, myThid )
495 #endif
496 #ifdef ALLOW_DIFFKR_CONTROL
497 foo3D = DiffKr%d
498 CALL WRITE_FLD_XYZ_RL( 'ADJdiffkr.', suff,
499 & foo3d, myIter, myThid )
500 #endif
501 #ifdef ALLOW_KAPGM_CONTROL
502 foo3D = KapGM%d
503 CALL WRITE_FLD_XYZ_RL( 'ADJkapgm.', suff,
504 & foo3d, myIter, myThid )
505 #endif
506 #ifdef ALLOW_KAPREDI_CONTROL
507 foo3D = KapRedi%d
508 CALL WRITE_FLD_XYZ_RL( 'ADJkapredi.', suff,
509 & foo3d, myIter, myThid )
510 #endif
511 #ifdef ALLOW_EDDYPSI_CONTROL
512 foo3D = EddyPsiX%d
513 CALL WRITE_FLD_XYZ_RS( 'ADJeddypsix.', suff,
514 & foo3d, myIter, myThid )
515 foo3D = EddyPsiY%d
516 CALL WRITE_FLD_XYZ_RS( 'ADJeddypsiy.', suff,
517 & foo3d, myIter, myThid )
518 #endif
519 #ifdef ALLOW_SST0_CONTROL
520 foo2D = sst%d
521 CALL WRITE_FLD_XY_RS( 'ADJsst.',suff, adSST, myIter, myThid )
522 #endif
523 #ifdef ALLOW_SSS0_CONTROL
524 foo2D = sss%d
525 CALL WRITE_FLD_XY_RS( 'ADJsss.',suff, adSSS, myIter, myThid )
526 #endif
527 #ifdef ALLOW_BOTTOMDRAG_CONTROL
528 foo2D = BottomDragFld%d
529 CALL WRITE_FLD_XY_RL ( 'ADJbottomdrag.', suff,
530 & adBottomDragFld, myIter, myThid )
531 #endif
532
533 ELSEIF ( ( dumpAdVarExch.NE.2 ).AND.(dumpAdByRec) ) THEN
534
535 foo3D = theta%d
536 CALL WRITE_REC_XYZ_RL( 'ADJtheta',
537 & foo3d, dumpAdRecMn, myIter,myThid )
538 foo3D = salt%d
539 CALL WRITE_REC_XYZ_RL( 'ADJsalt',
540 & foo3d, dumpAdRecMn, myIter, myThid )
541 foo3D = uvel%d
542 CALL WRITE_REC_XYZ_RL( 'ADJuvel',
543 & foo3d, dumpAdRecMn, myIter, myThid )
544 foo3D = vvel%d
545 CALL WRITE_REC_XYZ_RL( 'ADJvvel',
546 & foo3d, dumpAdRecMn, myIter, myThid )
547 foo3D = wvel%d
548 CALL WRITE_REC_XYZ_RL( 'ADJwvel',
549 & foo3d, dumpAdRecMn, myIter, myThid )
550 foo2D = etan%d
551 CALL WRITE_REC_XY_RL ( 'ADJetan',
552 & foo2d, dumpAdRecMn, myIter, myThid )
553
554 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
555 foo2D = fu%d
556 CALL WRITE_REC_XY_RS('ADJtaux',
557 & foo2d, dumpAdRecMn, myIter, myThid )
558 foo2D = fv%d
559 CALL WRITE_REC_XY_RS('ADJtauy',
560 & foo2d, dumpAdRecMn, myIter, myThid )
561 foo2D = Qnet%d
562 CALL WRITE_REC_XY_RS('ADJqnet',
563 & foo2d,dumpAdRecMn, myIter,myThid )
564 foo2D = EmPmR%d
565 CALL WRITE_REC_XY_RS('ADJempr',
566 & foo2d,dumpAdRecMn, myIter,myThid )
567 #ifdef SHORTWAVE_HEATING
568 cc foo2D = Qsw%d
569 cc CALL WRITE_REC_XY_RS('ADJqsw',
570 cc & foo2d,dumpAdRecMn, myIter, myThid )
571 #endif
572 ENDIF
573
574 #ifdef ALLOW_GGL90
575 c CALL WRITE_REC_XYZ_RL ( 'ADJggl90diffkr',
576 c & adGGL90DiffKr, dumpAdRecMn, myIter, myThid )
577 cc foo3D = GGL90TKE%d
578 cc CALL WRITE_REC_XYZ_RL( 'ADJggl90tke',
579 cc & foo3d, dumpAdRecMn, myIter, myThid )
580 #endif
581 #ifdef ALLOW_DIFFKR_CONTROL
582 foo3D = Diffkr%d
583 CALL WRITE_REC_XYZ_RL( 'ADJdiffkr',
584 & foo3d, dumpAdRecMn, myIter, myThid )
585 #endif
586 #ifdef ALLOW_KAPGM_CONTROL
587 foo3D = KapGM%d
588 CALL WRITE_REC_XYZ_RL( 'ADJkapgm',
589 & foo3d, dumpAdRecMn, myIter, myThid )
590 #endif
591 #ifdef ALLOW_KAPREDI_CONTROL
592 foo3D = KapRedi%d
593 CALL WRITE_REC_XYZ_RL( 'ADJkapredi',
594 & foo3d, dumpAdRecMn, myIter, myThid )
595 #endif
596 #ifdef ALLOW_EDDYPSI_CONTROL
597 foo3D = EddyPsiX%d
598 CALL WRITE_REC_XYZ_RS( 'ADJeddypsix',
599 & foo3d, dumpAdRecMn, myIter, myThid )
600 foo3D = EddyPsiY%d
601 CALL WRITE_REC_XYZ_RS( 'ADJeddypsiy',
602 & foo3d, dumpAdRecMn, myIter, myThid )
603 #endif
604 #ifdef ALLOW_SST0_CONTROL
605 foo2D = sst%d
606 CALL WRITE_REC_XY_RS( 'ADJsst',
607 & foo2d, dumpAdRecMn, myIter, myThid )
608 #endif
609 #ifdef ALLOW_SSS0_CONTROL
610 foo2D = sss%d
611 CALL WRITE_REC_XY_RS( 'ADJsss',
612 & foo2d, dumpAdRecMn, myIter, myThid )
613 #endif
614 #ifdef ALLOW_BOTTOMDRAG_CONTROL
615 foo2D = BottomDragFld%d
616 CALL WRITE_REC_XY_RL ( 'ADJbottomdrag',
617 & foo2d, dumpAdRecMn, myIter, myThid )
618 #endif
619
620 ELSE
621 C case dumpAdVarExch = 2
622
623 CALL COPY_ADVAR_OUTP( dumRS, theta%d,var3Du, Nr, 12, myThid )
624 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJtheta.',
625 & suff, var3Du, myIter, myThid )
626 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJtheta',
627 & var3Du, dumpAdRecMn, myIter, myThid )
628 CALL COPY_ADVAR_OUTP( dumRS, salt%d, var3Du, Nr, 12, myThid )
629 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJsalt.',
630 & suff, var3Du, myIter, myThid )
631 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJsalt',
632 & var3Du, dumpAdRecMn, myIter, myThid )
633 CALL COPY_AD_UV_OUTP( dumRS, dumRS, uVel%d, vVel%d,
634 & var3Du, var3Dv, Nr, 34, myThid )
635 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJuvel.',
636 & suff, var3Du, myIter, myThid )
637 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJuvel',
638 & var3Du, dumpAdRecMn, myIter, myThid )
639 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJvvel.',
640 & suff, var3Dv, myIter, myThid )
641 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJvvel',
642 & var3Dv, dumpAdRecMn, myIter, myThid )
643 CALL COPY_ADVAR_OUTP( dumRS, wVel%d, var3Du, Nr, 12, myThid )
644 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJwvel.',
645 & suff, var3Du, myIter, myThid )
646 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJwvel',
647 & var3Du, dumpAdRecMn, myIter, myThid )
648 CALL COPY_ADVAR_OUTP( dumRS, EtaN%d, var2Du, 1 , 12, myThid )
649 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJetan.',
650 & suff, var2Du, myIter, myThid )
651 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJetan',
652 & var2Du, dumpAdRecMn, myIter, myThid )
653
654 IF ( .NOT. useSEAICE .AND. .NOT. useEXF ) THEN
655 CALL COPY_AD_UV_OUTP( Fu%d, Fv%d, dumRL, dumRL,
656 & var2Du, var2Dv, 1, 33, myThid )
657 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJtaux.',
658 & suff,var2Du,myIter,myThid )
659 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJtaux',
660 & var2Du,dumpAdRecMn, myIter,myThid )
661 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJtauy.',
662 & suff,var2Dv,myIter,myThid )
663 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJtauy',
664 & var2Dv,dumpAdRecMn, myIter,myThid )
665 CALL COPY_ADVAR_OUTP( Qnet%d, dumRL, var2Du, 1, 11, myThid )
666 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJqnet.',
667 & suff,var2Du,myIter,myThid )
668 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJqnet',
669 & var2Du,dumpAdRecMn, myIter,myThid )
670 CALL COPY_ADVAR_OUTP( EmPmR%d,dumRL, var2Du, 1, 11, myThid )
671 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJempr.',
672 & suff,var2Du,myIter,myThid )
673 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJempr',
674 & var2Du,dumpAdRecMn, myIter,myThid )
675 #ifdef SHORTWAVE_HEATING
676 cc CALL COPY_ADVAR_OUTP( Qsw%d, dumRL, var2Du, 1, 11, myThid )
677 cc IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJqsw.',
678 cc & suff,var2Du,myIter,myThid )
679 cc IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJqsw',
680 cc & var2Du,dumpAdRecMn, myIter,myThid )
681 #endif
682 ENDIF
683 #ifdef ALLOW_GGL90
684 cc CALL COPY_ADVAR_OUTP( dumRS,GGL90TKE%d,var3Du,Nr, 12,myThid )
685 cc IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJggl90tke.',
686 cc & suff, var3Du, myIter, myThid )
687 cc IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJggl90tke',
688 cc & var3Du, dumpAdRecMn, myIter, myThid )
689 #endif
690 #ifdef ALLOW_DIFFKR_CONTROL
691 CALL COPY_ADVAR_OUTP( dumRS, DiffKr%d,var3Du, Nr, 12,myThid )
692 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJdiffkr.',
693 & suff, var3Du, myIter, myThid )
694 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJdiffkr',
695 & var3Du, dumpAdRecMn, myIter, myThid )
696 #endif
697 #ifdef ALLOW_KAPGM_CONTROL
698 CALL COPY_ADVAR_OUTP( dumRS, KapGM%d, var3Du, Nr, 12,myThid )
699 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJkapgm.',
700 & suff, var3Du, myIter, myThid )
701 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJkapgm',
702 & var3Du, dumpAdRecMn, myIter, myThid )
703 #endif
704 #ifdef ALLOW_KAPREDI_CONTROL
705 CALL COPY_ADVAR_OUTP( dumRS,KapRedi%d,var3Du, Nr, 12,myThid )
706 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJkapredi.',
707 & suff, var3Du, myIter, myThid )
708 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJkapredi',
709 & var3Du, dumpAdRecMn, myIter, myThid )
710 #endif
711 #ifdef ALLOW_EDDYPSI_CONTROL
712 CALL COPY_AD_UV_OUTP( EddyPsiX%d, EddyPsiY%d, dumRL, dumRL,
713 & var3Du, var3Dv, Nr, 33, myThid )
714 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJeddypsix.',
715 & suff, var3Du, myIter, myThid )
716 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJeddypsix',
717 & var3Du, dumpAdRecMn, myIter, myThid )
718 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XYZ_RL( 'ADJeddypsiy.',
719 & suff, var3Dv, myIter, myThid )
720 IF ( dumpAdByRec ) CALL WRITE_REC_XYZ_RL( 'ADJeddypsiy',
721 & var3Dv, dumpAdRecMn, myIter, myThid )
722 #endif
723 #ifdef ALLOW_SST0_CONTROL
724 CALL COPY_ADVAR_OUTP( SST%d, dumRL, var2Du, 1, 11, myThid )
725 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJsst.',
726 & suff,var2Du,myIter,myThid )
727 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJsst',
728 & var2Du,dumpAdRecMn, myIter,myThid )
729 #endif
730 #ifdef ALLOW_SSS0_CONTROL
731 CALL COPY_ADVAR_OUTP( SSS%d, dumRL, var2Du, 1, 11, myThid )
732 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJsss.',
733 & suff,var2Du,myIter,myThid )
734 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJsss',
735 & var2Du,dumpAdRecMn, myIter,myThid )
736 #endif
737 #ifdef ALLOW_BOTTOMDRAG_CONTROL
738 CALL COPY_ADVAR_OUTP( dumRS, BottomDragFld%d,
739 & var2Du, 1, 12, myThid )
740 IF (.NOT.dumpAdByRec) CALL WRITE_FLD_XY_RL( 'ADJbottomdrag.',
741 & suff, var2Du, myIter, myThid )
742 IF ( dumpAdByRec ) CALL WRITE_REC_XY_RL( 'ADJbottomdrag',
743 & var2Du, dumpAdRecMn, myIter, myThid )
744 #endif
745
746 C end if dumpAdVarExch = 2
747 ENDIF
748
749 C-----------------------------------------------------------------------
750 #endif /* ndef ALLOW_OPENAD */
751 C-----------------------------------------------------------------------
752
753 C-- NOW NMC output
754
755 #ifndef ALLOW_OPENAD
756 #ifdef ALLOW_MNC
757 IF (useMNC .AND. autodiff_mnc) THEN
758 CALL MNC_CW_SET_UDIM('adstate', -1, myThid)
759 CALL MNC_CW_RL_W_S('D','adstate',0,0,'T',myTime,myThid)
760 CALL MNC_CW_SET_UDIM('adstate', 0, myThid)
761 CALL MNC_CW_I_W_S('I','adstate',0,0,'iter',myIter,myThid)
762 CALL MNC_CW_RL_W_S('D','adstate',0,0,'model_time',myTime,
763 & myThid)
764
765 IF ( dumpAdVarExch.EQ.2 ) THEN
766 CALL COPY_AD_UV_OUTP( dumRS, dumRS, aduVel, advVel,
767 & var3Du, var3Dv, Nr, 34, myThid )
768 CALL MNC_CW_RL_W('D','adstate',0,0,'adU', var3Du, myThid)
769 CALL MNC_CW_RL_W('D','adstate',0,0,'adV', var3Dv, myThid)
770 CALL COPY_ADVAR_OUTP( dumRS, adTheta,var3Du, Nr, 12, myThid )
771 CALL MNC_CW_RL_W('D','adstate',0,0,'adT', var3Du, myThid)
772 CALL COPY_ADVAR_OUTP( dumRS, adSalt,var3Du, Nr, 12, myThid )
773 CALL MNC_CW_RL_W('D','adstate',0,0,'adS', var3Du, myThid)
774 CALL COPY_ADVAR_OUTP( dumRS, adEtaN, var2Du, 1 , 12, myThid )
775 CALL MNC_CW_RL_W('D','adstate',0,0,'adEta', var2Du, myThid)
776 CALL COPY_ADVAR_OUTP( dumRS, adwVel, var3Du, Nr, 12, myThid )
777 CALL MNC_CW_RL_W('D','adstate',0,0,'adW', var3Du, myThid)
778
779 CALL COPY_ADVAR_OUTP( adQnet, dumRL, var2Du, 1, 11, myThid )
780 CALL MNC_CW_RL_W('D','adstate',0,0,'adQnet', var2Du, myThid)
781 CALL COPY_ADVAR_OUTP( adEmPmR,dumRL, var2Du, 1, 11, myThid )
782 CALL MNC_CW_RL_W('D','adstate',0,0,'adEmpmr', var2Du, myThid)
783 CALL COPY_AD_UV_OUTP( adFu, adFv, dumRL, dumRL,
784 & var2Du, var2Dv, 1, 33, myThid )
785 CALL MNC_CW_RL_W('D','adstate',0,0,'adFu', var2Du, myThid)
786 CALL MNC_CW_RL_W('D','adstate',0,0,'adFv', var2Dv, myThid)
787
788 #ifdef ALLOW_SST0_CONTROL
789 CALL COPY_ADVAR_OUTP( adSST, dumRL, var2Du, 1, 11, myThid )
790 CALL MNC_CW_RL_W('D','adstate',0,0,'adSST', var2Du, myThid)
791 #endif
792 #ifdef ALLOW_SSS0_CONTROL
793 CALL COPY_ADVAR_OUTP( adSSS, dumRL, var2Du, 1, 11, myThid )
794 CALL MNC_CW_RL_W('D','adstate',0,0,'adSSS', var2Du, myThid)
795 #endif
796 #ifdef ALLOW_BOTTOMDRAG_CONTROL
797 CALL COPY_ADVAR_OUTP( dumRS, adBottomDragFld,
798 & var2Du, 1, 12, myThid )
799 CALL MNC_CW_RL_W('D','adstate',0,0,
800 & 'adBottomDrag', var2Du, myThid)
801 #endif
802 #ifdef ALLOW_DIFFKR_CONTROL
803 CALL COPY_ADVAR_OUTP( dumRS, adDiffKr,var3Du, Nr, 12,myThid )
804 CALL MNC_CW_RL_W('D','adstate',0,0,
805 & 'adDiffkr', var3Du, myThid)
806 #endif
807 #ifdef ALLOW_KAPGM_CONTROL
808 CALL COPY_ADVAR_OUTP( dumRS, adKapGM, var3Du, Nr, 12,myThid )
809 CALL MNC_CW_RL_W('D','adstate',0,0,
810 & 'adkapgm', var3Du, myThid)
811 #endif
812 #ifdef ALLOW_KAPREDI_CONTROL
813 CALL COPY_ADVAR_OUTP( dumRS,adKapRedi,var3Du, Nr, 12,myThid )
814 CALL MNC_CW_RL_W('D','adstate',0,0,
815 & 'adkapredi', var3Du, myThid)
816 #endif
817 ELSE
818 C dumpAdVarExch.NE.2
819 CALL MNC_CW_RL_W('D','adstate',0,0,'adU', aduVel, myThid)
820 CALL MNC_CW_RL_W('D','adstate',0,0,'adV', advVel, myThid)
821 CALL MNC_CW_RL_W('D','adstate',0,0,'adT', adtheta, myThid)
822 CALL MNC_CW_RL_W('D','adstate',0,0,'adS', adsalt, myThid)
823 CALL MNC_CW_RL_W('D','adstate',0,0,'adEta', adetaN, myThid)
824 CALL MNC_CW_RL_W('D','adstate',0,0,'adW', adwVel, myThid)
825
826 CALL MNC_CW_RS_W('D','adstate',0,0,'adQnet', adQnet, myThid)
827 CALL MNC_CW_RS_W('D','adstate',0,0,'adEmpmr', adEmpmr, myThid)
828 CALL MNC_CW_RS_W('D','adstate',0,0,'adFu', adfu, myThid)
829 CALL MNC_CW_RS_W('D','adstate',0,0,'adFv', adfv, myThid)
830
831 #ifdef ALLOW_SST0_CONTROL
832 CALL MNC_CW_RS_W('D','adstate',0,0,'adSST', adsst, myThid)
833 #endif
834 #ifdef ALLOW_SSS0_CONTROL
835 CALL MNC_CW_RS_W('D','adstate',0,0,'adSSS', adsss, myThid)
836 #endif
837 #ifdef ALLOW_BOTTOMDRAG_CONTROL
838 CALL MNC_CW_RL_W('D','adstate',0,0,
839 & 'adBottomDrag', adbottomdragfld, myThid)
840 #endif
841 #ifdef ALLOW_DIFFKR_CONTROL
842 CALL MNC_CW_RL_W('D','adstate',0,0,
843 & 'adDiffkr', addiffkr, myThid)
844 #endif
845 #ifdef ALLOW_KAPGM_CONTROL
846 CALL MNC_CW_RL_W('D','adstate',0,0,
847 & 'adkapgm', adkapgm, myThid)
848 #endif
849 #ifdef ALLOW_KAPREDI_CONTROL
850 CALL MNC_CW_RL_W('D','adstate',0,0,
851 & 'adkapredi', adkapredi, myThid)
852 #endif
853 ENDIF
854 C endif mnc
855 ENDIF
856 #endif /* ALLOW_MNC */
857 #endif /* ALLOW_OPENAD */
858
859 #ifdef ALLOW_EXF
860 cph IF ( useEXF ) CALL EXF_AD_DUMP( myTime, myIter, myThid )
861 #endif
862
863 #ifdef ALLOW_SEAICE
864 IF ( useSEAICE )
865 & CALL SEAICE_AD_DUMP( myTime, myIter, myThid )
866 #endif
867
868 #ifdef ALLOW_PTRACERS
869 IF ( usePTRACERS )
870 & CALL PTRACERS_AD_DUMP( myTime, myIter, myThid )
871 #endif
872
873 CALL TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
874
875 ENDIF
876
877 #endif /* ALLOW_AUTODIFF_MONITOR */
878 #endif /* ALLOW_ADJOINT_RUN */
879
880 RETURN
881 END

  ViewVC Help
Powered by ViewVC 1.1.22