/[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.20 - (show annotations) (download)
Thu Apr 17 13:36:37 2003 UTC (21 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint50c_post, checkpoint50g_post, checkpoint50d_pre, checkpoint50d_post, checkpoint50f_post, checkpoint50f_pre, checkpoint50c_pre, checkpoint50e_pre, checkpoint50e_post, checkpoint50b_post
Changes since 1.19: +15 -11 lines
replace guCD,gvCD by local arrays.

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

  ViewVC Help
Powered by ViewVC 1.1.22