/[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.41 - (hide annotations) (download)
Tue Apr 6 01:44:26 2004 UTC (20 years, 2 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint53, checkpoint53d_post, checkpoint52m_post, checkpoint53b_post, checkpoint53c_post, checkpoint53a_post, checkpoint53g_post, checkpoint53f_post, checkpoint53b_pre, checkpoint52n_post, checkpoint53d_pre
Changes since 1.40: +261 -286 lines
 o adding MNC calls and flags for reading/writing checkpoints

1 edhill 1.41 C $Header: /u/gcmpack/MITgcm/model/src/checkpoint.F,v 1.40 2004/03/24 15:29:33 edhill 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 edhill 1.41 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8     CBOP
9     C !ROUTINE: SET_WRITE_GLOBAL_PICKUP
10     C !INTERFACE:
11     SUBROUTINE SET_WRITE_GLOBAL_PICKUP( flag )
12 adcroft 1.1
13 edhill 1.41 C !DESCRIPTION:
14     C Sets an internal logical state to indicate whether files written
15     C by subsequent calls to the READ_WRITE_FLD package should create
16     C "global" or "tiled" files:
17     C \begin{center}
18     C \begin{tabular}[h]{|l|l|}\hline
19     C \texttt{flag} & Meaning \\\hline
20     C \texttt{.TRUE.} & use ``global'' files \\
21     C \texttt{.TRUE.} & use ``tiled'' files \\\hline
22     C \end{tabular}
23     C \end{center}
24    
25     C !USES:
26 adcroft 1.1 IMPLICIT NONE
27 edhill 1.41
28     C !INPUT PARAMETERS:
29 adcroft 1.1 LOGICAL flag
30 edhill 1.41 CEOP
31 adcroft 1.1 COMMON /PCKP_GBLFLS/ globalFile
32     LOGICAL globalFile
33 edhill 1.41
34     globalFile = flag
35    
36 adcroft 1.1 RETURN
37     END
38    
39 edhill 1.41 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
40 cnh 1.14 CBOP
41     C !ROUTINE: READ_CHECKPOINT
42     C !INTERFACE:
43 edhill 1.41 SUBROUTINE READ_CHECKPOINT(
44     I myIter, myThid )
45    
46     C !DESCRIPTION:
47     C This is the controlling routine for IO to write restart (or
48     C ``pickup'' or ``checkpoint'') files. It calls routines from other
49     C packages (\textit{eg.} mdsio and mnc) to do the per-variable
50     C reads.
51    
52 cnh 1.14 C !USES:
53 adcroft 1.1 IMPLICIT NONE
54     #include "SIZE.h"
55     #include "EEPARAMS.h"
56     #include "PARAMS.h"
57     #include "DYNVARS.h"
58     #ifdef ALLOW_NONHYDROSTATIC
59     #include "GW.h"
60 adcroft 1.10 #include "SOLVE_FOR_PRESSURE3D.h"
61 adcroft 1.1 #endif
62     INTEGER IO_ERRCOUNT
63     EXTERNAL IO_ERRCOUNT
64    
65 cnh 1.14 C !INPUT/OUTPUT PARAMETERS:
66 adcroft 1.1 C myThid - Thread number for this instance of the routine.
67 jmc 1.5 C myIter - Iteration number
68 adcroft 1.1 INTEGER myThid
69 jmc 1.5 INTEGER myIter
70 edhill 1.41 CEOP
71 adcroft 1.1
72 cnh 1.14 C !LOCAL VARIABLES:
73     C oldPrec :: Temp. for hold I/O precision information
74     C prec
75     C fn :: Temp. for building file name.
76 edhill 1.41 INTEGER i, oldPrec, prec
77 adcroft 1.1 CHARACTER*(MAX_LEN_FNAM) fn
78 adcroft 1.21 CHARACTER*(10) suff
79 adcroft 1.1
80     C-- Going to really do some IO. Make everyone except master thread wait.
81 edhill 1.41 _BARRIER
82     _BEGIN_MASTER( myThid )
83 adcroft 1.1
84 jmc 1.31 #ifdef OLD_STYLE_WITH_MANY_FILES
85    
86 edhill 1.41 C Force 64-bit IO
87     oldPrec = readBinaryPrec
88     readBinaryPrec = precFloat64
89    
90     C-- Read model fields
91     C Raw fields
92     CALL READ_REC_XYZ_RL( 'uVel', uVel, 1,myIter, myThid)
93     CALL READ_REC_XYZ_RL( 'gU', gU, 1,myIter, myThid)
94     CALL READ_REC_XYZ_RL( 'guNm1', gUNm1, 1,myIter, myThid)
95     CALL READ_REC_XYZ_RL( 'vVel', vVel, 1,myIter, myThid)
96     CALL READ_REC_XYZ_RL( 'gV', gV, 1,myIter, myThid)
97     CALL READ_REC_XYZ_RL( 'gvNm1', gVNm1, 1,myIter, myThid)
98     CALL READ_REC_XYZ_RL( 'theta', theta, 1,myIter, myThid)
99     CALL READ_REC_XYZ_RL( 'gT', gT, 1,myIter, myThid)
100     CALL READ_REC_XYZ_RL( 'gtNm1', gTNm1, 1,myIter, myThid)
101     CALL READ_REC_XYZ_RL( 'salt', salt, 1,myIter, myThid)
102     CALL READ_REC_XYZ_RL( 'gS', gS, 1,myIter, myThid)
103     CALL READ_REC_XYZ_RL( 'gsNm1', gSNm1, 1,myIter, myThid)
104     CALL READ_REC_XY_RL ('etaN', etaN, 1,myIter, myThid)
105    
106     #ifdef ALLOW_NONHYDROSTATIC
107     IF ( nonHydrostatic ) THEN
108     CALL READ_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
109     CALL READ_REC_XYZ_RL( 'gW',gW, 1,myIter,myThid)
110     c CALL READ_REC_XYZ_RL( 'gWnm1',gWnm1, 1,myIter,myThid)
111     ENDIF
112     #endif
113 cheisey 1.16
114 edhill 1.41 C Reset default IO precision
115     readBinaryPrec = oldPrec
116    
117     #else /* OLD_STYLE_WITH_MANY_FILES */
118    
119     prec = precFloat64
120    
121     C-- Suffix for pickup files
122     DO i = 1,MAX_LEN_FNAM
123     fn(i:i) = ' '
124     ENDDO
125     IF (pickupSuff .EQ. ' ') THEN
126     WRITE(suff,'(I10.10)') myIter
127     ELSE
128     WRITE(suff,'(A10)') pickupSuff
129     ENDIF
130     WRITE(fn,'(A,A10)') 'pickup.',suff
131    
132     #ifdef ALLOW_MNC
133     IF (useMNC .AND. mnc_pickup_read) THEN
134     C Read variables from the pickup file
135     CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
136     CALL MNC_CW_SET_UDIM(fn, 1, myThid)
137     CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
138     CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
139     CALL MNC_CW_RL_R('D',fn,0,0,'T',theta, myThid)
140     CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
141     CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
142     #ifdef NONLIN_FRSURF
143     IF ( nonlinFreeSurf.GE.0)
144     & CALL MNC_CW_RL_R('D',fn,0,0,'EtaNH', etaH, myThid)
145     #endif
146     CALL MNC_CW_RL_R('D',fn,0,0,'Unm1',gUnm1, myThid)
147     CALL MNC_CW_RL_R('D',fn,0,0,'Vnm1',gVnm1, myThid)
148     CALL MNC_CW_RL_R('D',fn,0,0,'Tnm1',gTnm1, myThid)
149     CALL MNC_CW_RL_R('D',fn,0,0,'Snm1',gSnm1, myThid)
150 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
151     IF ( nonHydrostatic ) THEN
152 edhill 1.41 CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
153     CALL MNC_CW_RL_R('D',fn,0,0,'gW', gW, myThid)
154 adcroft 1.1 ENDIF
155     #endif
156 edhill 1.41 ELSE
157     #endif /* ALLOW_MNC */
158 adcroft 1.21
159 adcroft 1.1 C-- Read model fields
160     CALL MDSREADFIELD(fn,prec,'RL',Nr,uVel, 1,myThid)
161     CALL MDSREADFIELD(fn,prec,'RL',Nr,gU, 2,myThid)
162     CALL MDSREADFIELD(fn,prec,'RL',Nr,gUnm1, 3,myThid)
163     CALL MDSREADFIELD(fn,prec,'RL',Nr,vVel, 4,myThid)
164     CALL MDSREADFIELD(fn,prec,'RL',Nr,gV, 5,myThid)
165     CALL MDSREADFIELD(fn,prec,'RL',Nr,gVnm1, 6,myThid)
166     CALL MDSREADFIELD(fn,prec,'RL',Nr,theta, 7,myThid)
167     CALL MDSREADFIELD(fn,prec,'RL',Nr,gT, 8,myThid)
168     CALL MDSREADFIELD(fn,prec,'RL',Nr,gTnm1, 9,myThid)
169     CALL MDSREADFIELD(fn,prec,'RL',Nr,salt, 10,myThid)
170     CALL MDSREADFIELD(fn,prec,'RL',Nr,gS, 11,myThid)
171     CALL MDSREADFIELD(fn,prec,'RL',Nr,gSnm1, 12,myThid)
172 jmc 1.6 CALL MDSREADFIELD(fn,prec,'RL', 1,etaN,12*Nr+1,myThid)
173 jmc 1.11 #ifdef NONLIN_FRSURF
174 jmc 1.26 IF ( nonlinFreeSurf.GE.0)
175 edhill 1.41 & CALL MDSREADFIELD(fn,prec,'RL',1,etaH,12*Nr+2,myThid)
176 jmc 1.11 #endif
177 jmc 1.19 IF ( useDynP_inEos_Zc ) THEN
178 edhill 1.41 WRITE(fn,'(A,A10)') 'pickup_ph.',suff
179     CALL MDSREADFIELD(fn,prec,'RL',Nr,totPhiHyd,1,myThid)
180 jmc 1.19 ENDIF
181 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
182     IF ( nonHydrostatic ) THEN
183 edhill 1.41 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
184     CALL MDSREADFIELD(fn,prec,'RL',Nr,phi_nh,1,myThid)
185     CALL MDSREADFIELD(fn,prec,'RL',Nr,gW, 2,myThid)
186     c CALL MDSREADFIELD(fn,prec,'RL',Nr,gWnm1,3,myThid)
187 adcroft 1.1 ENDIF
188     #endif
189 heimbach 1.8
190 edhill 1.34 #ifdef ALLOW_MNC
191 edhill 1.41 ENDIF
192     #endif /* ALLOW_MNC */
193 edhill 1.34
194 edhill 1.41 #endif /* OLD_STYLE_WITH_MANY_FILES */
195 edhill 1.34
196 edhill 1.38 _END_MASTER( myThid )
197     _BARRIER
198 edhill 1.41
199 edhill 1.38 C-- Fill in edge regions
200 adcroft 1.9 CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
201     CALL EXCH_UV_XYZ_RL(gU,gV,.TRUE.,myThid)
202     CALL EXCH_UV_XYZ_RL(gUnm1,gVnm1,.TRUE.,myThid)
203 adcroft 1.1 _EXCH_XYZ_R8(theta , myThid )
204     _EXCH_XYZ_R8(gt , myThid )
205     _EXCH_XYZ_R8(gtNM1 , myThid )
206     _EXCH_XYZ_R8(salt , myThid )
207     _EXCH_XYZ_R8(gs , myThid )
208     _EXCH_XYZ_R8(gsNM1 , myThid )
209 jmc 1.6 _EXCH_XY_R8 (etaN, myThid )
210 jmc 1.13 _EXCH_XY_R8( etaH, myThid )
211 jmc 1.11
212 jmc 1.19 IF ( useDynP_inEos_Zc )
213 edhill 1.41 & _EXCH_XYZ_RL( totPhiHyd, myThid )
214 jmc 1.19
215 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
216 edhill 1.41 IF ( nonHydrostatic ) THEN
217     _EXCH_XYZ_R8(phi_nh, myThid )
218     _EXCH_XYZ_R8(gW , myThid )
219     c _EXCH_XYZ_R8(gWNM1 , myThid )
220     ENDIF
221 adcroft 1.1 #endif
222    
223     RETURN
224     END
225    
226 edhill 1.41 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
227 cnh 1.14 CBOP
228     C !ROUTINE: WRITE_CHECKPOINT
229     C !INTERFACE:
230 edhill 1.41 SUBROUTINE WRITE_CHECKPOINT(
231     I modelEnd, myTime,
232     I myIter, myThid )
233    
234     C !DESCRIPTION:
235     C This is the controlling routine for IO to write restart (or
236     C ``pickup'' or ``checkpoint'') files. It calls routines from other
237     C packages (\textit{eg.} mdsio and mnc) to do the per-variable
238     C writes.
239     C
240     C Both ``rolling-checkpoint'' files and permanent checkpoint files
241     C are written here. A rolling checkpoint works through a circular
242     C list of suffices. Generally the circular list has two entries so
243     C that a rolling checkpoint will overwrite the last rolling
244     C checkpoint but one. This is useful for running long jobs without
245     C filling too much disk space. In a permanent checkpoint, data is
246     C written suffixed by the current timestep number. Permanent
247     C checkpoints can be used to provide snap-shots from which the
248     C model can be restarted.
249 cnh 1.14
250     C !USES:
251 adcroft 1.1 IMPLICIT NONE
252     #include "SIZE.h"
253     #include "EEPARAMS.h"
254     #include "PARAMS.h"
255     #include "DYNVARS.h"
256     #ifdef ALLOW_NONHYDROSTATIC
257     #include "GW.h"
258 adcroft 1.10 #include "SOLVE_FOR_PRESSURE3D.h"
259 edhill 1.28 #endif
260 adcroft 1.1 LOGICAL DIFFERENT_MULTIPLE
261     EXTERNAL DIFFERENT_MULTIPLE
262     INTEGER IO_ERRCOUNT
263     EXTERNAL IO_ERRCOUNT
264 edhill 1.41 COMMON /PCKP_GBLFLS/ globalFile
265     LOGICAL globalFile
266 adcroft 1.1
267 edhill 1.41 C !INPUT PARAMETERS:
268     C modelEnd :: Checkpoint call at end of model run.
269     C myThid :: Thread number for this instance of the routine.
270     C myIter :: Iteration number
271     C myTime :: Current time of simulation ( s )
272 adcroft 1.1 LOGICAL modelEnd
273     INTEGER myThid
274 jmc 1.5 INTEGER myIter
275 adcroft 1.15 _RL myTime
276 edhill 1.41 CEOP
277 adcroft 1.1
278 cnh 1.14 C !LOCAL VARIABLES:
279     C permCheckPoint :: Flag indicating whether a permanent checkpoint will
280     C be written.
281 jmc 1.31 C tempCheckPoint :: Flag indicating if it is time to write a non-permanent
282     C checkpoint (that will be permanent if permCheckPoint=T)
283 cnh 1.14 C oldPrc :: Temp. for holding I/O precision
284     C fn :: Temp. for building file name string.
285     C lgf :: Flag to indicate whether to use global file mode.
286 jmc 1.31 LOGICAL permCheckPoint, tempCheckPoint
287 edhill 1.41 INTEGER i, oldPrec, prec
288 adcroft 1.1 CHARACTER*(MAX_LEN_FNAM) fn
289 adcroft 1.21 CHARACTER*(MAX_LEN_MBUF) msgBuf
290 adcroft 1.1 LOGICAL lgf
291 edhill 1.41 COMMON /PCKP_SWAP/ pickup_ext
292     CHARACTER*(1) pickup_ext
293 adcroft 1.1
294     permCheckPoint = .FALSE.
295 jmc 1.31 tempCheckPoint = .FALSE.
296 edhill 1.41 permCheckPoint =
297     & DIFFERENT_MULTIPLE(pChkptFreq,myTime,myTime-deltaTClock)
298     tempCheckPoint =
299     & DIFFERENT_MULTIPLE( ChkptFreq,myTime,myTime-deltaTClock)
300    
301 adcroft 1.1 IF (
302 edhill 1.41 & ( .NOT.modelEnd .AND. (permCheckPoint.OR.tempCheckPoint) )
303     & .OR.
304     & ( modelEnd .AND. .NOT.(permCheckPoint.OR.tempCheckPoint) )
305     & ) THEN
306    
307     C-- Going to really do some IO. Make everyone except master thread wait.
308     _BARRIER
309     _BEGIN_MASTER( myThid )
310 adcroft 1.1
311 jmc 1.31 #ifdef OLD_STYLE_WITH_MANY_FILES
312 edhill 1.41
313 adcroft 1.1 C Force 64-bit IO
314     oldPrec = writeBinaryPrec
315     writeBinaryPrec = precFloat64
316     C-- Write model fields
317     C Raw fields
318     CALL WRITE_REC_XYZ_RL( 'uVel', uVel, 1,myIter, myThid)
319     CALL WRITE_REC_XYZ_RL( 'gU', gU, 1,myIter, myThid)
320     CALL WRITE_REC_XYZ_RL( 'gUNm1', gUNm1, 1,myIter, myThid)
321     CALL WRITE_REC_XYZ_RL( 'vVel', vVel, 1,myIter, myThid)
322     CALL WRITE_REC_XYZ_RL( 'gV', gV, 1,myIter, myThid)
323     CALL WRITE_REC_XYZ_RL( 'gVNm1', gVNm1, 1,myIter, myThid)
324     CALL WRITE_REC_XYZ_RL( 'theta', theta, 1,myIter, myThid)
325     CALL WRITE_REC_XYZ_RL( 'gT', gT, 1,myIter, myThid)
326     CALL WRITE_REC_XYZ_RL( 'gTNm1', gTNm1, 1,myIter, myThid)
327     CALL WRITE_REC_XYZ_RL( 'salt', salt, 1,myIter, myThid)
328     CALL WRITE_REC_XYZ_RL( 'gS', gS, 1,myIter, myThid)
329     CALL WRITE_REC_XYZ_RL( 'gSNm1', gSNm1, 1,myIter, myThid)
330 jmc 1.6 CALL WRITE_REC_XY_RL ('etaN', etaN, 1,myIter, myThid)
331 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
332     IF ( nonHydrostatic ) THEN
333 edhill 1.41 CALL WRITE_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
334     CALL WRITE_REC_XYZ_RL( 'gW',gW, 1,myIter,myThid)
335     c CALL WRITE_REC_XYZ_RL( 'gWnm1',gWnm1, 1,myIter,myThid)
336 adcroft 1.1 ENDIF
337     #endif
338 edhill 1.41 C-- Reset binary precision
339 jmc 1.31 writeBinaryPrec = oldPrec
340    
341 jmc 1.11 #else /* OLD_STYLE_WITH_MANY_FILES */
342 edhill 1.41
343 adcroft 1.1 prec = precFloat64
344     lgf = globalFile
345 edhill 1.41
346 adcroft 1.1 C-- Write model fields
347 edhill 1.41 DO i = 1,MAX_LEN_FNAM
348     fn(i:i) = ' '
349     ENDDO
350 adcroft 1.1 IF ( permCheckPoint ) THEN
351 edhill 1.41 WRITE(fn,'(A,I10.10)') 'pickup.',myIter
352 adcroft 1.1 ELSE
353 edhill 1.41 WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
354 adcroft 1.1 ENDIF
355 edhill 1.41
356     #ifdef ALLOW_MNC
357     IF (useMNC .AND. mnc_pickup_write) THEN
358     C Write dynvars using the MNC package
359     CALL MNC_CW_SET_UDIM(fn, -1, myThid)
360     CALL MNC_CW_I_W('I',fn,0,0,'iter', myIter, myThid)
361     CALL MNC_CW_SET_UDIM(fn, 0, myThid)
362     CALL MNC_CW_RL_W('D',fn,0,0,'U', uVel, myThid)
363     CALL MNC_CW_RL_W('D',fn,0,0,'V', vVel, myThid)
364     CALL MNC_CW_RL_W('D',fn,0,0,'T', theta, myThid)
365     CALL MNC_CW_RL_W('D',fn,0,0,'S', salt, myThid)
366     CALL MNC_CW_RL_W('D',fn,0,0,'Eta', etaN, myThid)
367 jmc 1.11 #ifdef NONLIN_FRSURF
368 edhill 1.41 IF ( nonlinFreeSurf .GE. 0)
369     & CALL MNC_CW_RL_W('D',fn,0,0,'EtaNH', etaH, myThid)
370 jmc 1.11 #endif
371 edhill 1.41 CALL MNC_CW_RL_W('D',fn,0,0,'Unm1', gUnm1, myThid)
372     CALL MNC_CW_RL_W('D',fn,0,0,'Vnm1', gVnm1, myThid)
373     CALL MNC_CW_RL_W('D',fn,0,0,'Tnm1', gTnm1, myThid)
374     CALL MNC_CW_RL_W('D',fn,0,0,'Snm1', gSnm1, myThid)
375     #ifdef ALLOW_NONHYDROSTATIC
376     IF ( nonHydrostatic ) THEN
377     CALL MNC_CW_RL_W('D',fn,0,0,'phi_nh', phi_nh, myThid)
378     CALL MNC_CW_RL_W('D',fn,0,0,'gW', gW, myThid)
379     ENDIF
380     #endif
381     IF ( useDynP_inEos_Zc ) THEN
382     CALL MNC_CW_RL_W('D',fn,0,0,'totPhiHyd', totPhiHyd, myThid)
383     ENDIF
384     ELSE
385     #endif /* ALLOW_MNC */
386 jmc 1.19
387 edhill 1.41 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,uVel, 1,myIter,myThid)
388     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gU, 2,myIter,myThid)
389     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gUnm1, 3,myIter,myThid)
390     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,vVel, 4,myIter,myThid)
391     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gV, 5,myIter,myThid)
392     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gVnm1, 6,myIter,myThid)
393     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,theta, 7,myIter,myThid)
394     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gT, 8,myIter,myThid)
395     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gTnm1, 9,myIter,myThid)
396     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,salt, 10,myIter,myThid)
397     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gS, 11,myIter,myThid)
398     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gSnm1,12,myIter,myThid)
399     CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaN,12*Nr+1,
400     & myIter,myThid)
401     #ifdef NONLIN_FRSURF
402     CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaH,12*Nr+2,
403     & myIter,myThid)
404     #endif
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 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
415 edhill 1.41 IF ( nonHydrostatic ) THEN
416     IF ( permCheckPoint ) THEN
417     WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
418     ELSE
419     WRITE(fn,'(A,A)') 'pickup_nh.',checkPtSuff(nCheckLev)
420     ENDIF
421     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,phi_nh, 1,
422     & myIter,myThid)
423     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gW, 2,
424     & myIter,myThid)
425     C CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gWnm1, 3,
426     C & myIter,myThid)
427     ENDIF
428 adcroft 1.1 #endif
429 heimbach 1.8
430 edhill 1.34 #ifdef ALLOW_MNC
431 edhill 1.41 ENDIF
432     #endif /* ALLOW_MNC */
433 edhill 1.34
434 edhill 1.41 #endif /* OLD_STYLE_WITH_MANY_FILES */
435 heimbach 1.8
436 jmc 1.32 C-- Write suffix for stdout information
437     IF ( permCheckPoint ) THEN
438     WRITE(fn,'(I10.10)') myIter
439     ELSE
440     WRITE(fn,'(A)') checkPtSuff(nCheckLev)
441     ENDIF
442 edhill 1.41
443 adcroft 1.1 IF ( .NOT. permCheckPoint ) THEN
444 edhill 1.41 nCheckLev = MOD(nCheckLev, maxNoChkptLev)+1
445 adcroft 1.1 ENDIF
446 edhill 1.41
447     _END_MASTER(myThid)
448     _BARRIER
449    
450 jmc 1.32 C-- Write information to stdout so there is a record that the
451     C checkpoint was completed
452 edhill 1.41 _BEGIN_MASTER(myThid)
453 adcroft 1.21 WRITE(msgBuf,'(A11,I10,1X,A10)')
454 edhill 1.41 & "%CHECKPOINT ",myIter,fn
455 adcroft 1.21 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
456 edhill 1.41 _END_MASTER(myThid)
457    
458 adcroft 1.1 ENDIF
459    
460     RETURN
461     END

  ViewVC Help
Powered by ViewVC 1.1.22