/[MITgcm]/manual/s_examples/rotating_tank/code/checkpoint.F
ViewVC logotype

Annotation of /manual/s_examples/rotating_tank/code/checkpoint.F

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


Revision 1.1 - (hide annotations) (download)
Mon Jul 26 21:09:47 2004 UTC (20 years, 11 months ago) by afe
Branch: MAIN
CVS Tags: checkpoint57l_post
added code directory

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

  ViewVC Help
Powered by ViewVC 1.1.22