/[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.27 - (show annotations) (download)
Tue Oct 28 22:57:59 2003 UTC (20 years, 7 months ago) by edhill
Branch: MAIN
Changes since 1.26: +10 -10 lines
 o add a "cd_code" package and update all the verification tests
   so that they use the new package instead of "INCLUDE_CD_CODE"

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

  ViewVC Help
Powered by ViewVC 1.1.22