/[MITgcm]/MITgcm/model/src/checkpoint.F
ViewVC logotype

Contents of /MITgcm/model/src/checkpoint.F

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


Revision 1.49 - (show annotations) (download)
Wed Oct 13 04:37:37 2004 UTC (19 years, 7 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint56b_post, checkpoint57, checkpoint56, checkpoint55i_post, checkpoint57a_post, checkpoint55g_post, checkpoint55j_post, checkpoint55h_post, checkpoint55f_post, checkpoint56a_post, checkpoint56c_post, checkpoint57a_pre
Changes since 1.48: +7 -1 lines
 o I am *sick* of moving these variables around.  But Jean-Michel has
   all but threatened a hissy fit if they aren't removed from PARAMS.h.
   So now here they are *back* in MNC_PARAMS.h where they were just a
   few days ago.

1 C $Header: /u/gcmpack/MITgcm/model/src/checkpoint.F,v 1.48 2004/10/10 06:08:47 edhill Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP
9 C !ROUTINE: SET_WRITE_GLOBAL_PICKUP
10 C !INTERFACE:
11 SUBROUTINE SET_WRITE_GLOBAL_PICKUP( flag )
12
13 C !DESCRIPTION:
14 C Sets an internal logical state to indicate whether files written
15 C by subsequent calls to the READ_WRITE_FLD package should create
16 C "global" or "tiled" files:
17 C \begin{center}
18 C \begin{tabular}[h]{|l|l|}\hline
19 C \texttt{flag} & Meaning \\\hline
20 C \texttt{.TRUE.} & use ``global'' files \\
21 C \texttt{.TRUE.} & use ``tiled'' files \\\hline
22 C \end{tabular}
23 C \end{center}
24
25 C !USES:
26 IMPLICIT NONE
27
28 C !INPUT PARAMETERS:
29 LOGICAL flag
30 CEOP
31 COMMON /PCKP_GBLFLS/ globalFile
32 LOGICAL globalFile
33
34 globalFile = flag
35
36 RETURN
37 END
38
39 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
40 CBOP
41 C !ROUTINE: READ_CHECKPOINT
42 C !INTERFACE:
43 SUBROUTINE READ_CHECKPOINT(
44 I myIter, myThid )
45
46 C !DESCRIPTION:
47 C This is the controlling routine for IO to write restart (or
48 C ``pickup'' or ``checkpoint'') files. It calls routines from other
49 C packages (\textit{eg.} mdsio and mnc) to do the per-variable
50 C reads.
51
52 C !USES:
53 IMPLICIT NONE
54 #include "SIZE.h"
55 #include "EEPARAMS.h"
56 #include "PARAMS.h"
57 #ifdef ALLOW_MNC
58 #include "MNC_PARAMS.h"
59 #endif
60 #include "DYNVARS.h"
61 #include "SURFACE.h"
62 #ifdef ALLOW_NONHYDROSTATIC
63 #include "GW.h"
64 #include "SOLVE_FOR_PRESSURE3D.h"
65 #endif
66 INTEGER IO_ERRCOUNT
67 EXTERNAL IO_ERRCOUNT
68
69 C !INPUT/OUTPUT PARAMETERS:
70 C myThid - Thread number for this instance of the routine.
71 C myIter - Iteration number
72 INTEGER myThid
73 INTEGER myIter
74 CEOP
75
76 C !LOCAL VARIABLES:
77 C oldPrec :: Temp. for hold I/O precision information
78 C prec
79 C fn :: Temp. for building file name.
80 INTEGER i, oldPrec, prec
81 CHARACTER*(MAX_LEN_FNAM) fn
82 CHARACTER*(10) suff
83
84 C Suffix for pickup files
85 DO i = 1,MAX_LEN_FNAM
86 fn(i:i) = ' '
87 ENDDO
88 IF (pickupSuff .EQ. ' ') THEN
89 WRITE(suff,'(I10.10)') myIter
90 ELSE
91 WRITE(suff,'(A10)') pickupSuff
92 ENDIF
93 WRITE(fn,'(A,A10)') 'pickup.',suff
94
95 C Going to really do some IO. Make everyone except master thread wait.
96 _BARRIER
97 _BEGIN_MASTER( myThid )
98
99 IF (pickup_read_mdsio) THEN
100
101 #ifdef OLD_STYLE_WITH_MANY_FILES
102
103 C Force 64-bit IO
104 oldPrec = readBinaryPrec
105 readBinaryPrec = precFloat64
106
107 C Read model fields
108 C Raw fields
109 CALL READ_REC_XYZ_RL( 'uVel', uVel, 1,myIter,myThid)
110 CALL READ_REC_XYZ_RL( 'gU', gU, 1,myIter,myThid)
111 CALL READ_REC_XYZ_RL( 'guNm1', gUNm1, 1,myIter,myThid)
112 CALL READ_REC_XYZ_RL( 'vVel', vVel, 1,myIter,myThid)
113 CALL READ_REC_XYZ_RL( 'gV', gV, 1,myIter,myThid)
114 CALL READ_REC_XYZ_RL( 'gvNm1', gVNm1, 1,myIter,myThid)
115 CALL READ_REC_XYZ_RL( 'theta', theta, 1,myIter,myThid)
116 CALL READ_REC_XYZ_RL( 'gT', gT, 1,myIter,myThid)
117 CALL READ_REC_XYZ_RL( 'gtNm1', gTNm1, 1,myIter,myThid)
118 CALL READ_REC_XYZ_RL( 'salt', salt, 1,myIter,myThid)
119 CALL READ_REC_XYZ_RL( 'gS', gS, 1,myIter,myThid)
120 CALL READ_REC_XYZ_RL( 'gsNm1', gSNm1, 1,myIter,myThid)
121 CALL READ_REC_XY_RL ( 'etaN', etaN, 1,myIter,myThid)
122
123 #ifdef ALLOW_NONHYDROSTATIC
124 IF ( nonHydrostatic ) THEN
125 CALL READ_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
126 CALL READ_REC_XYZ_RL( 'gW', gW,1,myIter,myThid)
127 c CALL READ_REC_XYZ_RL( 'gWnm1', gWnm1,1,myIter,myThid)
128 ENDIF
129 #endif
130
131 C Reset default IO precision
132 readBinaryPrec = oldPrec
133
134 #else /* OLD_STYLE_WITH_MANY_FILES */
135
136 prec = precFloat64
137
138 C Read model fields
139 IF ( usePickupBeforeC54 ) THEN
140 CALL MDSREADFIELD(fn,prec,'RL',Nr,uVel, 1,myThid)
141 CALL MDSREADFIELD(fn,prec,'RL',Nr,gU, 2,myThid)
142 CALL MDSREADFIELD(fn,prec,'RL',Nr,gUnm1, 3,myThid)
143 CALL MDSREADFIELD(fn,prec,'RL',Nr,vVel, 4,myThid)
144 CALL MDSREADFIELD(fn,prec,'RL',Nr,gV, 5,myThid)
145 CALL MDSREADFIELD(fn,prec,'RL',Nr,gVnm1, 6,myThid)
146 CALL MDSREADFIELD(fn,prec,'RL',Nr,theta, 7,myThid)
147 CALL MDSREADFIELD(fn,prec,'RL',Nr,gT, 8,myThid)
148 CALL MDSREADFIELD(fn,prec,'RL',Nr,gTnm1, 9,myThid)
149 CALL MDSREADFIELD(fn,prec,'RL',Nr,salt, 10,myThid)
150 CALL MDSREADFIELD(fn,prec,'RL',Nr,gS, 11,myThid)
151 CALL MDSREADFIELD(fn,prec,'RL',Nr,gSnm1, 12,myThid)
152 CALL MDSREADFIELD(fn,prec,'RL', 1,etaN,12*Nr+1,myThid)
153 #ifdef NONLIN_FRSURF
154 IF (nonlinFreeSurf .GE. 0) THEN
155 CALL MDSREADFIELD(fn,prec,'RL',1,etaH,12*Nr+2,myThid)
156 ENDIF
157 #endif
158 ELSE
159 CALL MDSREADFIELD(fn,prec,'RL',Nr,uVel, 1,myThid)
160 CALL MDSREADFIELD(fn,prec,'RL',Nr,gUnm1, 2,myThid)
161 CALL MDSREADFIELD(fn,prec,'RL',Nr,vVel, 3,myThid)
162 CALL MDSREADFIELD(fn,prec,'RL',Nr,gVnm1, 4,myThid)
163 CALL MDSREADFIELD(fn,prec,'RL',Nr,theta, 5,myThid)
164 CALL MDSREADFIELD(fn,prec,'RL',Nr,gTnm1, 6,myThid)
165 CALL MDSREADFIELD(fn,prec,'RL',Nr,salt, 7,myThid)
166 CALL MDSREADFIELD(fn,prec,'RL',Nr,gSnm1, 8,myThid)
167 CALL MDSREADFIELD(fn,prec,'RL', 1,etaN, 8*Nr+1,myThid)
168 #ifdef EXACT_CONSERV
169 IF (exactConserv) THEN
170 CALL MDSREADFIELD(fn,prec,'RL',1,dEtaHdt,8*Nr+2,myThid)
171 ENDIF
172 IF (nonlinFreeSurf .GT. 0) THEN
173 CALL MDSREADFIELD(fn,prec,'RL',1,etaH, 8*Nr+3,myThid)
174 ENDIF
175 #endif
176 ENDIF
177
178 IF ( useDynP_inEos_Zc ) THEN
179 WRITE(fn,'(A,A10)') 'pickup_ph.',suff
180 CALL MDSREADFIELD(fn,prec,'RL',Nr,totPhiHyd,1,myThid)
181 ENDIF
182 #ifdef ALLOW_NONHYDROSTATIC
183 IF ( nonHydrostatic ) THEN
184 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
185 CALL MDSREADFIELD(fn,prec,'RL',Nr,phi_nh,1,myThid)
186 CALL MDSREADFIELD(fn,prec,'RL',Nr, gW,2,myThid)
187 c CALL MDSREADFIELD(fn,prec,'RL',Nr, gWnm1,3,myThid)
188 ENDIF
189 #endif
190
191 #endif /* OLD_STYLE_WITH_MANY_FILES */
192
193 ENDIF
194
195 #ifdef ALLOW_MNC
196 IF (useMNC .AND. pickup_read_mnc) THEN
197 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
198 CALL MNC_CW_SET_UDIM(fn, 1, myThid)
199 CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
200 CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
201 CALL MNC_CW_RL_R('D',fn,0,0,'Temp',theta, myThid)
202 CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
203 CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
204 CALL MNC_CW_RL_R('D',fn,0,0,'gUnm1',gUnm1, myThid)
205 CALL MNC_CW_RL_R('D',fn,0,0,'gVnm1',gVnm1, myThid)
206 CALL MNC_CW_RL_R('D',fn,0,0,'gTnm1',gTnm1, myThid)
207 CALL MNC_CW_RL_R('D',fn,0,0,'gSnm1',gSnm1, myThid)
208 C#ifdef NONLIN_FRSURF
209 C IF ( nonlinFreeSurf.GE.0 .AND. usePickupBeforeC54 )
210 C & CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
211 C#endif
212 #ifdef EXACT_CONSERV
213 IF (exactConserv) THEN
214 CALL MNC_CW_RL_R('D',fn,0,0,'dEtaHdt',dEtaHdt,myThid)
215 ENDIF
216 IF (nonlinFreeSurf .GT. 0) THEN
217 CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
218 ENDIF
219 #endif
220 #ifdef ALLOW_NONHYDROSTATIC
221 IF (nonHydrostatic) THEN
222 CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
223 CALL MNC_CW_RL_R('D',fn,0,0,'gW', gW, myThid)
224 ENDIF
225 #endif
226 IF ( useDynP_inEos_Zc ) THEN
227 CALL MNC_CW_RL_R('D',fn,0,0,'phiHyd',totPhiHyd,myThid)
228 ENDIF
229 ENDIF
230 #endif /* ALLOW_MNC */
231
232 _END_MASTER( myThid )
233 _BARRIER
234
235 C Fill in edge regions
236 CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
237 CALL EXCH_UV_XYZ_RL(gU,gV,.TRUE.,myThid)
238 CALL EXCH_UV_XYZ_RL(gUnm1,gVnm1,.TRUE.,myThid)
239 _EXCH_XYZ_R8(theta , myThid )
240 _EXCH_XYZ_R8(gt , myThid )
241 _EXCH_XYZ_R8(gtNM1 , myThid )
242 _EXCH_XYZ_R8(salt , myThid )
243 _EXCH_XYZ_R8(gs , myThid )
244 _EXCH_XYZ_R8(gsNM1 , myThid )
245 _EXCH_XY_R8 (etaN, myThid )
246 _EXCH_XY_R8( etaH, myThid )
247
248 #ifdef EXACT_CONSERV
249 _EXCH_XY_R8( etaH, myThid )
250 _EXCH_XY_R8( detaHdt, myThid )
251 #endif
252
253 IF ( useDynP_inEos_Zc )
254 & _EXCH_XYZ_RL( totPhiHyd, myThid )
255
256 #ifdef ALLOW_NONHYDROSTATIC
257 IF ( nonHydrostatic ) THEN
258 _EXCH_XYZ_R8(phi_nh, myThid )
259 _EXCH_XYZ_R8(gW , myThid )
260 c _EXCH_XYZ_R8(gWNM1 , myThid )
261 ENDIF
262 #endif
263
264 RETURN
265 END
266
267 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
268 CBOP
269 C !ROUTINE: WRITE_CHECKPOINT
270 C !INTERFACE:
271 SUBROUTINE WRITE_CHECKPOINT(
272 I modelEnd, myTime,
273 I myIter, myThid )
274
275 C !DESCRIPTION:
276 C This is the controlling routine for IO to write restart (or
277 C ``pickup'' or ``checkpoint'') files. It calls routines from other
278 C packages (\textit{eg.} mdsio and mnc) to do the per-variable
279 C writes.
280 C
281 C Both ``rolling-checkpoint'' files and permanent checkpoint files
282 C are written here. A rolling checkpoint works through a circular
283 C list of suffices. Generally the circular list has two entries so
284 C that a rolling checkpoint will overwrite the last rolling
285 C checkpoint but one. This is useful for running long jobs without
286 C filling too much disk space. In a permanent checkpoint, data is
287 C written suffixed by the current timestep number. Permanent
288 C checkpoints can be used to provide snap-shots from which the
289 C model can be restarted.
290
291 C !USES:
292 IMPLICIT NONE
293 #include "SIZE.h"
294 #include "EEPARAMS.h"
295 #include "PARAMS.h"
296 #ifdef ALLOW_MNC
297 #include "MNC_PARAMS.h"
298 #endif
299 LOGICAL DIFFERENT_MULTIPLE
300 EXTERNAL DIFFERENT_MULTIPLE
301 INTEGER IO_ERRCOUNT
302 EXTERNAL IO_ERRCOUNT
303
304 C !INPUT PARAMETERS:
305 C modelEnd :: Checkpoint call at end of model run.
306 C myThid :: Thread number for this instance of the routine.
307 C myIter :: Iteration number
308 C myTime :: Current time of simulation ( s )
309 LOGICAL modelEnd
310 INTEGER myThid
311 INTEGER myIter
312 _RL myTime
313 CEOP
314
315 C !LOCAL VARIABLES:
316 C permCheckPoint :: Flag indicating whether a permanent checkpoint will
317 C be written.
318 C tempCheckPoint :: Flag indicating if it is time to write a non-permanent
319 C checkpoint (that will be permanent if permCheckPoint=T)
320 LOGICAL permCheckPoint, tempCheckPoint
321
322 permCheckPoint = .FALSE.
323 tempCheckPoint = .FALSE.
324 permCheckPoint =
325 & DIFFERENT_MULTIPLE(pChkptFreq,myTime,myTime-deltaTClock)
326 tempCheckPoint =
327 & DIFFERENT_MULTIPLE( ChkptFreq,myTime,myTime-deltaTClock)
328
329 IF (
330 & ( .NOT.modelEnd .AND. (permCheckPoint.OR.tempCheckPoint) )
331 & .OR.
332 & ( modelEnd .AND. .NOT.(permCheckPoint.OR.tempCheckPoint) )
333 & ) THEN
334
335 CALL WRITE_CHECKPOINT_NOW(
336 & permCheckPoint, myTime, myIter, myThid )
337
338
339 ENDIF
340 RETURN
341 END
342
343 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
344 CBOP
345 C !ROUTINE: WRITE_CHECKPOINT_NOW
346 C !INTERFACE:
347 SUBROUTINE WRITE_CHECKPOINT_NOW(
348 I permCheckPoint, myTime,
349 I myIter, myThid )
350
351 C !DESCRIPTION:
352 C Write the checkpoint and do it NOW.
353
354 C !USES:
355 IMPLICIT NONE
356 #include "SIZE.h"
357 #include "EEPARAMS.h"
358 #include "PARAMS.h"
359 #ifdef ALLOW_MNC
360 #include "MNC_PARAMS.h"
361 #endif
362 #include "DYNVARS.h"
363 #include "SURFACE.h"
364 #ifdef ALLOW_NONHYDROSTATIC
365 #include "GW.h"
366 #include "SOLVE_FOR_PRESSURE3D.h"
367 #endif
368 INTEGER IO_ERRCOUNT
369 EXTERNAL IO_ERRCOUNT
370 COMMON /PCKP_GBLFLS/ globalFile
371 LOGICAL globalFile
372
373 C !INPUT PARAMETERS:
374 C permCheckPoint :: Is or is not a permanent checkpoint.
375 C myThid :: Thread number for this instance of the routine.
376 C myIter :: Iteration number
377 C myTime :: Current time of simulation ( s )
378 LOGICAL permCheckPoint
379 INTEGER myThid
380 INTEGER myIter
381 _RL myTime
382 CEOP
383
384 C !LOCAL VARIABLES:
385 C oldPrc :: Temp. for holding I/O precision
386 C fn :: Temp. for building file name string.
387 C lgf :: Flag to indicate whether to use global file mode.
388 INTEGER i, oldPrec, prec
389 CHARACTER*(MAX_LEN_FNAM) fn
390 CHARACTER*(MAX_LEN_MBUF) msgBuf
391 LOGICAL lgf
392 COMMON /PCKP_SWAP/ pickup_ext
393 CHARACTER*(1) pickup_ext
394
395 C Write model fields
396 DO i = 1,MAX_LEN_FNAM
397 fn(i:i) = ' '
398 ENDDO
399 IF ( permCheckPoint ) THEN
400 WRITE(fn,'(A,I10.10)') 'pickup.',myIter
401 ELSE
402 WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
403 ENDIF
404
405 C Going to really do some IO. Make everyone except master thread wait.
406 _BARRIER
407 _BEGIN_MASTER( myThid )
408
409 IF (pickup_write_mdsio) THEN
410
411 #ifdef OLD_STYLE_WITH_MANY_FILES
412
413 C Force 64-bit IO
414 oldPrec = writeBinaryPrec
415 writeBinaryPrec = precFloat64
416 C Write model fields
417 C Raw fields
418 CALL WRITE_REC_XYZ_RL( 'uVel', uVel, 1,myIter,myThid)
419 CALL WRITE_REC_XYZ_RL( 'gU', gU, 1,myIter,myThid)
420 CALL WRITE_REC_XYZ_RL( 'gUNm1', gUNm1, 1,myIter,myThid)
421 CALL WRITE_REC_XYZ_RL( 'vVel', vVel, 1,myIter,myThid)
422 CALL WRITE_REC_XYZ_RL( 'gV', gV, 1,myIter,myThid)
423 CALL WRITE_REC_XYZ_RL( 'gVNm1', gVNm1, 1,myIter,myThid)
424 CALL WRITE_REC_XYZ_RL( 'theta', theta, 1,myIter,myThid)
425 CALL WRITE_REC_XYZ_RL( 'gT', gT, 1,myIter,myThid)
426 CALL WRITE_REC_XYZ_RL( 'gTNm1', gTNm1, 1,myIter,myThid)
427 CALL WRITE_REC_XYZ_RL( 'salt', salt, 1,myIter,myThid)
428 CALL WRITE_REC_XYZ_RL( 'gS', gS, 1,myIter,myThid)
429 CALL WRITE_REC_XYZ_RL( 'gSNm1', gSNm1, 1,myIter,myThid)
430 CALL WRITE_REC_XY_RL ( 'etaN', etaN, 1,myIter,myThid)
431 #ifdef ALLOW_NONHYDROSTATIC
432 IF ( nonHydrostatic ) THEN
433 CALL WRITE_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
434 CALL WRITE_REC_XYZ_RL( 'gW', gW,1,myIter,myThid)
435 C CALL WRITE_REC_XYZ_RL( 'gWnm1', gWnm1,1,myIter,myThid)
436 ENDIF
437 #endif
438 C Reset binary precision
439 writeBinaryPrec = oldPrec
440
441 #else /* OLD_STYLE_WITH_MANY_FILES */
442
443 prec = precFloat64
444 lgf = globalFile
445
446 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,uVel, 1,myIter,myThid)
447 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gUnm1,2,myIter,myThid)
448 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,vVel, 3,myIter,myThid)
449 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gVnm1,4,myIter,myThid)
450 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,theta,5,myIter,myThid)
451 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gTnm1,6,myIter,myThid)
452 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,salt, 7,myIter,myThid)
453 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gSnm1,8,myIter,myThid)
454 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaN, 8*Nr+1,
455 & myIter,myThid)
456 #ifdef EXACT_CONSERV
457 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,dEtaHdt,8*Nr+2,
458 & myIter,myThid)
459 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaHnm1,8*Nr+3,
460 & myIter,myThid)
461 #endif /* EXACT_CONSERV */
462 IF ( useDynP_inEos_Zc ) THEN
463 IF ( permCheckPoint ) THEN
464 WRITE(fn,'(A,I10.10)') 'pickup_ph.',myIter
465 ELSE
466 WRITE(fn,'(A,A)') 'pickup_ph.',checkPtSuff(nCheckLev)
467 ENDIF
468 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,totPhiHyd,
469 & 1,myIter,myThid)
470 ENDIF
471 #ifdef ALLOW_NONHYDROSTATIC
472 IF ( nonHydrostatic ) THEN
473 IF ( permCheckPoint ) THEN
474 WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
475 ELSE
476 WRITE(fn,'(A,A)') 'pickup_nh.',checkPtSuff(nCheckLev)
477 ENDIF
478 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,phi_nh, 1,
479 & myIter,myThid)
480 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gW, 2,
481 & myIter,myThid)
482 C CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gWnm1, 3,
483 C & myIter,myThid)
484 ENDIF
485 #endif /* ALLOW_NONHYDROSTATIC */
486
487 #endif /* OLD_STYLE_WITH_MANY_FILES */
488
489 ENDIF
490
491 #ifdef ALLOW_MNC
492 IF (useMNC .AND. pickup_write_mnc) THEN
493 CALL MNC_CW_SET_UDIM(fn, -1, myThid)
494 CALL MNC_CW_I_W_S('I',fn,0,0,'iter', myIter, myThid)
495 CALL MNC_CW_SET_UDIM(fn, 0, myThid)
496 CALL MNC_CW_RL_W('D',fn,0,0,'U', uVel, myThid)
497 CALL MNC_CW_RL_W('D',fn,0,0,'V', vVel, myThid)
498 CALL MNC_CW_RL_W('D',fn,0,0,'Temp', theta, myThid)
499 CALL MNC_CW_RL_W('D',fn,0,0,'S', salt, myThid)
500 CALL MNC_CW_RL_W('D',fn,0,0,'Eta', etaN, myThid)
501 CALL MNC_CW_RL_W('D',fn,0,0,'gUnm1', gUnm1, myThid)
502 CALL MNC_CW_RL_W('D',fn,0,0,'gVnm1', gVnm1, myThid)
503 CALL MNC_CW_RL_W('D',fn,0,0,'gTnm1', gTnm1, myThid)
504 CALL MNC_CW_RL_W('D',fn,0,0,'gSnm1', gSnm1, myThid)
505 #ifdef EXACT_CONSERV
506 CALL MNC_CW_RL_W('D',fn,0,0,'dEtaHdt', dEtaHdt, myThid)
507 CALL MNC_CW_RL_W('D',fn,0,0,'EtaH', etaHnm1, myThid)
508 #endif
509 #ifdef ALLOW_NONHYDROSTATIC
510 IF ( nonHydrostatic ) THEN
511 CALL MNC_CW_RL_W('D',fn,0,0,'phi_nh', phi_nh, myThid)
512 CALL MNC_CW_RL_W('D',fn,0,0,'gW', gW, myThid)
513 ENDIF
514 #endif
515 IF ( useDynP_inEos_Zc ) THEN
516 CALL MNC_CW_RL_W('D',fn,0,0,'phiHyd', totPhiHyd, myThid)
517 ENDIF
518 ENDIF
519 #endif /* ALLOW_MNC */
520
521 C Write suffix for stdout information
522 IF ( permCheckPoint ) THEN
523 WRITE(fn,'(I10.10)') myIter
524 ELSE
525 WRITE(fn,'(A)') checkPtSuff(nCheckLev)
526 ENDIF
527
528 IF ( .NOT. permCheckPoint ) THEN
529 nCheckLev = MOD(nCheckLev, maxNoChkptLev)+1
530 ENDIF
531
532 _END_MASTER(myThid)
533 _BARRIER
534
535 C Write information to stdout so there is a record that the
536 C checkpoint was completed
537 _BEGIN_MASTER(myThid)
538 WRITE(msgBuf,'(A11,I10,1X,A10)')
539 & "%CHECKPOINT ",myIter,fn
540 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
541 _END_MASTER(myThid)
542
543 RETURN
544 END

  ViewVC Help
Powered by ViewVC 1.1.22