/[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.23 - (show annotations) (download)
Wed Jun 25 21:06:35 2003 UTC (20 years, 11 months ago) by stephd
Branch: MAIN
CVS Tags: checkpoint51f_post, checkpoint51d_post, checkpoint51j_post, checkpoint51b_pre, checkpoint51h_pre, branchpoint-genmake2, checkpoint51b_post, checkpoint51c_post, checkpoint51e_post, checkpoint51f_pre, checkpoint51g_post, checkpoint51a_post
Branch point for: branch-genmake2
Changes since 1.22: +9 -7 lines
additions for biogeochemistry packages

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

  ViewVC Help
Powered by ViewVC 1.1.22