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

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

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


Revision 1.2 - (show annotations) (download)
Tue Jan 15 23:37:04 2008 UTC (17 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -1 lines
Error occurred while calculating annotation data.
FILE REMOVED
no longer in the MITgcm code.

1 C $Header: /u/gcmpack/manual/part3/case_studies/rotating_tank/code/checkpoint.F,v 1.1 2004/07/26 21:09:47 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