/[MITgcm]/MITgcm/model/src/checkpoint.F
ViewVC logotype

Annotation of /MITgcm/model/src/checkpoint.F

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


Revision 1.27 - (hide 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 edhill 1.27 C $Header: /u/u3/gcmpack/MITgcm/model/src/checkpoint.F,v 1.26 2003/10/09 21:38:29 jmc Exp $
2 adcroft 1.10 C $Name: $
3 adcroft 1.1
4 edhill 1.25 #include "PACKAGES_CONFIG.h"
5 adcroft 1.1 #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 cnh 1.14 CBOP
33     C !ROUTINE: READ_CHECKPOINT
34     C !INTERFACE:
35 jmc 1.5 SUBROUTINE READ_CHECKPOINT ( myIter, myThid )
36 cnh 1.14 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 adcroft 1.1 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 adcroft 1.10 #include "SOLVE_FOR_PRESSURE3D.h"
54 adcroft 1.1 #endif
55     INTEGER IO_ERRCOUNT
56     EXTERNAL IO_ERRCOUNT
57    
58 cnh 1.14 C !INPUT/OUTPUT PARAMETERS:
59 adcroft 1.1 C == Routine arguments ==
60     C myThid - Thread number for this instance of the routine.
61 jmc 1.5 C myIter - Iteration number
62 adcroft 1.1 INTEGER myThid
63 jmc 1.5 INTEGER myIter
64 adcroft 1.1
65 cnh 1.14 C !LOCAL VARIABLES:
66 adcroft 1.1 C == Local variables ==
67 cnh 1.14 C oldPrec :: Temp. for hold I/O precision information
68     C prec
69     C fn :: Temp. for building file name.
70 adcroft 1.1 INTEGER oldPrec
71     CHARACTER*(MAX_LEN_FNAM) fn
72 adcroft 1.21 CHARACTER*(10) suff
73 adcroft 1.1 INTEGER prec
74 cnh 1.14 CEOP
75 adcroft 1.1
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 jmc 1.5 CALL READ_REC_XYZ_RL( 'guNm1', gUNm1, 1,myIter, myThid)
90 adcroft 1.1 CALL READ_REC_XYZ_RL( 'vVel', vVel, 1,myIter, myThid)
91     CALL READ_REC_XYZ_RL( 'gV', gV, 1,myIter, myThid)
92 jmc 1.5 CALL READ_REC_XYZ_RL( 'gvNm1', gVNm1, 1,myIter, myThid)
93 adcroft 1.1 CALL READ_REC_XYZ_RL( 'theta', theta, 1,myIter, myThid)
94     CALL READ_REC_XYZ_RL( 'gT', gT, 1,myIter, myThid)
95 jmc 1.5 CALL READ_REC_XYZ_RL( 'gtNm1', gTNm1, 1,myIter, myThid)
96 adcroft 1.1 CALL READ_REC_XYZ_RL( 'salt', salt, 1,myIter, myThid)
97     CALL READ_REC_XYZ_RL( 'gS', gS, 1,myIter, myThid)
98 jmc 1.5 CALL READ_REC_XYZ_RL( 'gsNm1', gSNm1, 1,myIter, myThid)
99 jmc 1.6 CALL READ_REC_XY_RL ('etaN', etaN, 1,myIter, myThid)
100 edhill 1.27 #ifdef ALLOW_CD_CODE
101 edhill 1.25 IF (useCDscheme) THEN
102 jmc 1.13 CALL READ_REC_XY_RL ('etaNm1', etaNm1, 1,myIter, myThid)
103 adcroft 1.1 CALL READ_REC_XYZ_RL( 'uVelD', uVelD, 1,myIter, myThid)
104     CALL READ_REC_XYZ_RL( 'vVelD', vVelD, 1,myIter, myThid)
105 jmc 1.5 CALL READ_REC_XYZ_RL( 'uNm1', uNM1, 1,myIter, myThid)
106     CALL READ_REC_XYZ_RL( 'vNm1', vNM1, 1,myIter, myThid)
107 jmc 1.20 c CALL READ_REC_XYZ_RL( 'guCD', guCD, 1,myIter, myThid)
108     c CALL READ_REC_XYZ_RL( 'gvCD', gvCD, 1,myIter, myThid)
109 edhill 1.25 ENDIF
110 adcroft 1.1 #endif
111 cheisey 1.16
112 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
113     IF ( nonHydrostatic ) THEN
114 adcroft 1.10 CALL READ_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
115 adcroft 1.1 CALL READ_REC_XYZ_RL( 'gW',gW, 1,myIter,myThid)
116 jmc 1.7 c CALL READ_REC_XYZ_RL( 'gWnm1',gWnm1, 1,myIter,myThid)
117 adcroft 1.1 ENDIF
118     #endif
119 jmc 1.11 #else /* OLD_STYLE_WITH_MANY_FILES */
120 adcroft 1.1
121     prec = precFloat64
122    
123 adcroft 1.21 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 adcroft 1.1 C-- Read model fields
131 adcroft 1.21 WRITE(fn,'(A,A10)') 'pickup.',suff
132 adcroft 1.1 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 jmc 1.6 CALL MDSREADFIELD(fn,prec,'RL', 1,etaN,12*Nr+1,myThid)
145 jmc 1.11 #ifdef NONLIN_FRSURF
146 jmc 1.26 IF ( nonlinFreeSurf.GE.0)
147 jmc 1.13 & CALL MDSREADFIELD(fn,prec,'RL',1,etaH,12*Nr+2,myThid)
148 jmc 1.11 #endif
149 jmc 1.19
150     IF ( useDynP_inEos_Zc ) THEN
151 adcroft 1.21 WRITE(fn,'(A,A10)') 'pickup_ph.',suff
152 jmc 1.19 CALL MDSREADFIELD(fn,prec,'RL',Nr,totPhiHyd,1,myThid)
153     ENDIF
154    
155 edhill 1.27 #ifdef ALLOW_CD_CODE
156 edhill 1.25 IF (useCDscheme) THEN
157 adcroft 1.21 WRITE(fn,'(A,A10)') 'pickup_cd.',suff
158 adcroft 1.1 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 jmc 1.20 c CALL MDSREADFIELD(fn,prec,'RL',Nr,guCD, 5,myThid)
163     c CALL MDSREADFIELD(fn,prec,'RL',Nr,gvCD, 6,myThid)
164 jmc 1.6 CALL MDSREADFIELD(fn,prec,'RL', 1,etaNm1,6*Nr+1,myThid)
165 edhill 1.25 ENDIF
166 edhill 1.27 #endif /* ALLOW_CD_CODE */
167 jmc 1.11
168 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
169     IF ( nonHydrostatic ) THEN
170 adcroft 1.21 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
171 adcroft 1.10 CALL MDSREADFIELD(fn,prec,'RL',Nr,phi_nh,1,myThid)
172 adcroft 1.1 CALL MDSREADFIELD(fn,prec,'RL',Nr,gW, 2,myThid)
173 jmc 1.7 c CALL MDSREADFIELD(fn,prec,'RL',Nr,gWnm1,3,myThid)
174 adcroft 1.1 ENDIF
175     #endif
176    
177 heimbach 1.8 C SPK 4/9/01: Open boundary checkpointing
178     #ifdef ALLOW_OBCS
179     IF (useOBCS) THEN
180 adcroft 1.21 CALL OBCS_READ_CHECKPOINT(prec, suff, myThid)
181 heimbach 1.8 ENDIF
182     #endif /* ALLOW_OBCS */
183    
184 jmc 1.11 #endif /* OLD_STYLE_WITH_MANY_FILES */
185 adcroft 1.1
186     C Reset default IO precision
187     readBinaryPrec = oldPrec
188    
189     _END_MASTER( myThid )
190     _BARRIER
191    
192 stephd 1.23 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 adcroft 1.15
201 adcroft 1.1 C-- Fill in edge regions
202 adcroft 1.9 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 adcroft 1.1 _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 jmc 1.6 _EXCH_XY_R8 (etaN, myThid )
218 jmc 1.13 _EXCH_XY_R8( etaH, myThid )
219 jmc 1.11
220 jmc 1.19 IF ( useDynP_inEos_Zc )
221     & _EXCH_XYZ_RL( totPhiHyd, myThid )
222    
223 edhill 1.27 #ifdef ALLOW_CD_CODE
224 edhill 1.25 IF (useCDscheme) THEN
225 adcroft 1.9 c**** CALL EXCH_DUV_XYZ_RL(uVelD,vVelD,.TRUE.,myThid)
226     c**** CALL EXCH_DUV_XYZ_RL(guCD,gvCD,.TRUE.,myThid)
227 adcroft 1.1 _EXCH_XYZ_R8( uVelD, myThid )
228     _EXCH_XYZ_R8( vVelD, myThid )
229 adcroft 1.9 CALL EXCH_UV_XYZ_RL(uNM1,vNM1,.TRUE.,myThid)
230     c _EXCH_XYZ_R8( uNM1, myThid )
231     c _EXCH_XYZ_R8( vNM1, myThid )
232 jmc 1.20 c _EXCH_XYZ_R8( guCD, myThid )
233     c _EXCH_XYZ_R8( gvCD, myThid )
234 jmc 1.13 _EXCH_XY_R8( etaNm1, myThid )
235 edhill 1.25 ENDIF
236 edhill 1.27 #endif /* ALLOW_CD_CODE */
237 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
238     IF ( nonHydrostatic ) THEN
239 adcroft 1.10 _EXCH_XYZ_R8(phi_nh, myThid )
240 adcroft 1.1 _EXCH_XYZ_R8(gW , myThid )
241 jmc 1.7 c _EXCH_XYZ_R8(gWNM1 , myThid )
242 adcroft 1.1 ENDIF
243     #endif
244    
245     RETURN
246     END
247    
248 cnh 1.14 CBOP
249     C !ROUTINE: WRITE_CHECKPOINT
250     C !INTERFACE:
251 adcroft 1.15 SUBROUTINE WRITE_CHECKPOINT ( modelEnd, myTime,
252 jmc 1.5 & myIter, myThid )
253 cnh 1.14 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 adcroft 1.1 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 adcroft 1.10 #include "SOLVE_FOR_PRESSURE3D.h"
283 adcroft 1.1 #endif
284     LOGICAL DIFFERENT_MULTIPLE
285     EXTERNAL DIFFERENT_MULTIPLE
286     INTEGER IO_ERRCOUNT
287     EXTERNAL IO_ERRCOUNT
288    
289 cnh 1.14 C !INPUT/OUTPUT PARAMETERS:
290 adcroft 1.1 C == Routine arguments ==
291 cnh 1.14 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 adcroft 1.15 C myTime :: Current time of simulation ( s )
295 adcroft 1.1 LOGICAL modelEnd
296     INTEGER myThid
297 jmc 1.5 INTEGER myIter
298 adcroft 1.15 _RL myTime
299 adcroft 1.1
300     C == Common blocks ==
301     COMMON /PCKP_GBLFLS/ globalFile
302     LOGICAL globalFile
303    
304 cnh 1.14 C !LOCAL VARIABLES:
305 adcroft 1.1 C == Local variables ==
306 cnh 1.14 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 adcroft 1.1 LOGICAL permCheckPoint
312     INTEGER oldPrec
313     CHARACTER*(MAX_LEN_FNAM) fn
314 adcroft 1.21 CHARACTER*(MAX_LEN_MBUF) msgBuf
315 adcroft 1.1 INTEGER prec
316     LOGICAL lgf
317 cnh 1.14 CEOP
318 adcroft 1.1
319     permCheckPoint = .FALSE.
320     permCheckPoint=
321 adcroft 1.15 & DIFFERENT_MULTIPLE(pChkptFreq,myTime,
322     & myTime-deltaTClock)
323 adcroft 1.1
324     IF (
325     & (.NOT. modelEnd .AND. (
326     & permCheckPoint
327     & .OR.
328     & DIFFERENT_MULTIPLE(chkptFreq,
329 adcroft 1.15 & myTime,myTime-deltaTClock)
330     & ) .AND. myIter.NE.nIter0
331 adcroft 1.1 & )
332     & .OR.
333     & (
334     & modelEnd
335     & .AND. .NOT.
336     & permCheckPoint
337     & .AND. .NOT.
338     & DIFFERENT_MULTIPLE(chkptFreq,
339 adcroft 1.15 & myTime,myTime-deltaTClock)
340 adcroft 1.1 & )
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 jmc 1.6 CALL WRITE_REC_XY_RL ('etaN', etaN, 1,myIter, myThid)
367 edhill 1.27 #ifdef ALLOW_CD_CODE
368 edhill 1.25 IF (useCDscheme) THEN
369 adcroft 1.1 CALL WRITE_REC_XY_RL
370 jmc 1.6 & ( 'etaNm1', etaNm1, 1,myIter, myThid)
371 adcroft 1.1 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 jmc 1.20 c CALL WRITE_REC_XYZ_RL( 'guCD', guCD, 1,myIter, myThid)
376     c CALL WRITE_REC_XYZ_RL( 'gvCD', gvCD, 1,myIter, myThid)
377 edhill 1.25 ENDIF
378 edhill 1.27 #endif /* ALLOW_CD_CODE */
379 cheisey 1.17
380    
381 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
382     IF ( nonHydrostatic ) THEN
383 adcroft 1.10 CALL WRITE_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
384 adcroft 1.1 CALL WRITE_REC_XYZ_RL( 'gW',gW, 1,myIter,myThid)
385 jmc 1.7 c CALL WRITE_REC_XYZ_RL( 'gWnm1',gWnm1, 1,myIter,myThid)
386 adcroft 1.1 ENDIF
387     #endif
388    
389 jmc 1.11 #else /* OLD_STYLE_WITH_MANY_FILES */
390 adcroft 1.1
391     prec = precFloat64
392     lgf = globalFile
393    
394     C-- Write model fields
395     IF ( permCheckPoint ) THEN
396 jmc 1.5 WRITE(fn,'(A,I10.10)') 'pickup.',myIter
397 adcroft 1.1 ELSE
398     WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
399     ENDIF
400 jmc 1.5 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 jmc 1.6 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaN,12*Nr+1,
413 jmc 1.5 & myIter,myThid)
414 jmc 1.11 #ifdef NONLIN_FRSURF
415 jmc 1.13 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaH,12*Nr+2,
416 jmc 1.11 & myIter,myThid)
417     #endif
418 jmc 1.19
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 edhill 1.27 #ifdef ALLOW_CD_CODE
429 edhill 1.25 IF (useCDscheme) THEN
430 adcroft 1.1 IF ( permCheckPoint ) THEN
431 jmc 1.5 WRITE(fn,'(A,I10.10)') 'pickup_cd.',myIter
432 adcroft 1.1 ELSE
433     WRITE(fn,'(A,A)') 'pickup_cd.',checkPtSuff(nCheckLev)
434     ENDIF
435 jmc 1.5 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 jmc 1.20 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 jmc 1.6 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaNm1,6*Nr+1,
446 jmc 1.5 & myIter,myThid)
447 edhill 1.25 ENDIF
448 edhill 1.27 #endif /* ALLOW_CD_CODE */
449 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
450     IF ( nonHydrostatic ) THEN
451     IF ( permCheckPoint ) THEN
452 jmc 1.5 WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
453 adcroft 1.1 ELSE
454     WRITE(fn,'(A,A)') 'pickup_nh.',checkPtSuff(nCheckLev)
455     ENDIF
456 jmc 1.5 WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
457 adcroft 1.10 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,phi_nh,1,myIter,myThid)
458 jmc 1.5 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gW, 2,myIter,myThid)
459 jmc 1.7 c CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gWnm1,3,myIter,myThid)
460 adcroft 1.1 ENDIF
461     #endif
462 heimbach 1.8
463 adcroft 1.15 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 adcroft 1.12 #ifdef ALLOW_OBCS
471 heimbach 1.8 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 jmc 1.24
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 adcroft 1.12
485     #ifdef ALLOW_FLT
486     C-- Write restart file for floats
487     IF (useFLT) THEN
488 adcroft 1.15 CALL FLT_RESTART(myTime, myIter, myThid)
489 jmc 1.22 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 adcroft 1.12 ENDIF
497     #endif
498 heimbach 1.8
499 adcroft 1.1 IF ( .NOT. permCheckPoint ) THEN
500     nCheckLev = MOD(nCheckLev, maxNoChkptLev)+1
501     ENDIF
502    
503 jmc 1.11 #endif /* OLD_STYLE_WITH_MANY_FILES */
504 adcroft 1.1
505     C-- Reset binary precision
506     writeBinaryPrec = oldPrec
507    
508     _END_MASTER( myThid )
509     _BARRIER
510 adcroft 1.15
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 adcroft 1.21
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 adcroft 1.1
526     ENDIF
527    
528     RETURN
529     END

  ViewVC Help
Powered by ViewVC 1.1.22