/[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.47 - (hide annotations) (download)
Thu Oct 7 01:48:07 2004 UTC (19 years, 7 months ago) by edhill
Branch: MAIN
Changes since 1.46: +2 -2 lines
 o fixes for passing scalars to mnc_cw_*

1 edhill 1.47 C $Header: /u/gcmpack/MITgcm/model/src/checkpoint.F,v 1.46 2004/09/27 17:50:48 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 edhill 1.44 #ifdef ALLOW_MNC
58     #include "MNC_PARAMS.h"
59     #endif
60 adcroft 1.1 #include "DYNVARS.h"
61 jmc 1.43 #include "SURFACE.h"
62 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
63     #include "GW.h"
64 adcroft 1.10 #include "SOLVE_FOR_PRESSURE3D.h"
65 adcroft 1.1 #endif
66     INTEGER IO_ERRCOUNT
67     EXTERNAL IO_ERRCOUNT
68    
69 cnh 1.14 C !INPUT/OUTPUT PARAMETERS:
70 adcroft 1.1 C myThid - Thread number for this instance of the routine.
71 jmc 1.5 C myIter - Iteration number
72 adcroft 1.1 INTEGER myThid
73 jmc 1.5 INTEGER myIter
74 edhill 1.41 CEOP
75 adcroft 1.1
76 cnh 1.14 C !LOCAL VARIABLES:
77     C oldPrec :: Temp. for hold I/O precision information
78     C prec
79     C fn :: Temp. for building file name.
80 edhill 1.41 INTEGER i, oldPrec, prec
81 adcroft 1.1 CHARACTER*(MAX_LEN_FNAM) fn
82 adcroft 1.21 CHARACTER*(10) suff
83 adcroft 1.1
84 edhill 1.44 C Suffix for pickup files
85     DO i = 1,MAX_LEN_FNAM
86     fn(i:i) = ' '
87     ENDDO
88     IF (pickupSuff .EQ. ' ') THEN
89     WRITE(suff,'(I10.10)') myIter
90     ELSE
91     WRITE(suff,'(A10)') pickupSuff
92     ENDIF
93     WRITE(fn,'(A,A10)') 'pickup.',suff
94    
95     C Going to really do some IO. Make everyone except master thread wait.
96 edhill 1.41 _BARRIER
97     _BEGIN_MASTER( myThid )
98 adcroft 1.1
99 edhill 1.44 IF (pickup_read_mdsio) THEN
100    
101 jmc 1.31 #ifdef OLD_STYLE_WITH_MANY_FILES
102    
103 edhill 1.44 C Force 64-bit IO
104     oldPrec = readBinaryPrec
105     readBinaryPrec = precFloat64
106    
107     C Read model fields
108     C Raw fields
109     CALL READ_REC_XYZ_RL( 'uVel', uVel, 1,myIter,myThid)
110     CALL READ_REC_XYZ_RL( 'gU', gU, 1,myIter,myThid)
111     CALL READ_REC_XYZ_RL( 'guNm1', gUNm1, 1,myIter,myThid)
112     CALL READ_REC_XYZ_RL( 'vVel', vVel, 1,myIter,myThid)
113     CALL READ_REC_XYZ_RL( 'gV', gV, 1,myIter,myThid)
114     CALL READ_REC_XYZ_RL( 'gvNm1', gVNm1, 1,myIter,myThid)
115     CALL READ_REC_XYZ_RL( 'theta', theta, 1,myIter,myThid)
116     CALL READ_REC_XYZ_RL( 'gT', gT, 1,myIter,myThid)
117     CALL READ_REC_XYZ_RL( 'gtNm1', gTNm1, 1,myIter,myThid)
118     CALL READ_REC_XYZ_RL( 'salt', salt, 1,myIter,myThid)
119     CALL READ_REC_XYZ_RL( 'gS', gS, 1,myIter,myThid)
120     CALL READ_REC_XYZ_RL( 'gsNm1', gSNm1, 1,myIter,myThid)
121     CALL READ_REC_XY_RL ( 'etaN', etaN, 1,myIter,myThid)
122    
123 edhill 1.41 #ifdef ALLOW_NONHYDROSTATIC
124 edhill 1.44 IF ( nonHydrostatic ) THEN
125     CALL READ_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
126     CALL READ_REC_XYZ_RL( 'gW', gW,1,myIter,myThid)
127     c CALL READ_REC_XYZ_RL( 'gWnm1', gWnm1,1,myIter,myThid)
128     ENDIF
129 edhill 1.41 #endif
130 cheisey 1.16
131 edhill 1.44 C Reset default IO precision
132     readBinaryPrec = oldPrec
133 edhill 1.41
134     #else /* OLD_STYLE_WITH_MANY_FILES */
135    
136 edhill 1.44 prec = precFloat64
137    
138     C Read model fields
139     IF ( usePickupBeforeC54 ) THEN
140     CALL MDSREADFIELD(fn,prec,'RL',Nr,uVel, 1,myThid)
141     CALL MDSREADFIELD(fn,prec,'RL',Nr,gU, 2,myThid)
142     CALL MDSREADFIELD(fn,prec,'RL',Nr,gUnm1, 3,myThid)
143     CALL MDSREADFIELD(fn,prec,'RL',Nr,vVel, 4,myThid)
144     CALL MDSREADFIELD(fn,prec,'RL',Nr,gV, 5,myThid)
145     CALL MDSREADFIELD(fn,prec,'RL',Nr,gVnm1, 6,myThid)
146     CALL MDSREADFIELD(fn,prec,'RL',Nr,theta, 7,myThid)
147     CALL MDSREADFIELD(fn,prec,'RL',Nr,gT, 8,myThid)
148     CALL MDSREADFIELD(fn,prec,'RL',Nr,gTnm1, 9,myThid)
149     CALL MDSREADFIELD(fn,prec,'RL',Nr,salt, 10,myThid)
150     CALL MDSREADFIELD(fn,prec,'RL',Nr,gS, 11,myThid)
151     CALL MDSREADFIELD(fn,prec,'RL',Nr,gSnm1, 12,myThid)
152     CALL MDSREADFIELD(fn,prec,'RL', 1,etaN,12*Nr+1,myThid)
153     #ifdef NONLIN_FRSURF
154     IF (nonlinFreeSurf .GE. 0) THEN
155     CALL MDSREADFIELD(fn,prec,'RL',1,etaH,12*Nr+2,myThid)
156     ENDIF
157     #endif
158     ELSE
159     CALL MDSREADFIELD(fn,prec,'RL',Nr,uVel, 1,myThid)
160     CALL MDSREADFIELD(fn,prec,'RL',Nr,gUnm1, 2,myThid)
161     CALL MDSREADFIELD(fn,prec,'RL',Nr,vVel, 3,myThid)
162     CALL MDSREADFIELD(fn,prec,'RL',Nr,gVnm1, 4,myThid)
163     CALL MDSREADFIELD(fn,prec,'RL',Nr,theta, 5,myThid)
164     CALL MDSREADFIELD(fn,prec,'RL',Nr,gTnm1, 6,myThid)
165     CALL MDSREADFIELD(fn,prec,'RL',Nr,salt, 7,myThid)
166     CALL MDSREADFIELD(fn,prec,'RL',Nr,gSnm1, 8,myThid)
167     CALL MDSREADFIELD(fn,prec,'RL', 1,etaN, 8*Nr+1,myThid)
168     #ifdef EXACT_CONSERV
169     IF (exactConserv) THEN
170     CALL MDSREADFIELD(fn,prec,'RL',1,dEtaHdt,8*Nr+2,myThid)
171     ENDIF
172     IF (nonlinFreeSurf .GT. 0) THEN
173     CALL MDSREADFIELD(fn,prec,'RL',1,etaH, 8*Nr+3,myThid)
174     ENDIF
175     #endif
176     ENDIF
177    
178     IF ( useDynP_inEos_Zc ) THEN
179     WRITE(fn,'(A,A10)') 'pickup_ph.',suff
180     CALL MDSREADFIELD(fn,prec,'RL',Nr,totPhiHyd,1,myThid)
181     ENDIF
182     #ifdef ALLOW_NONHYDROSTATIC
183     IF ( nonHydrostatic ) THEN
184     WRITE(fn,'(A,A10)') 'pickup_nh.',suff
185     CALL MDSREADFIELD(fn,prec,'RL',Nr,phi_nh,1,myThid)
186     CALL MDSREADFIELD(fn,prec,'RL',Nr, gW,2,myThid)
187     c CALL MDSREADFIELD(fn,prec,'RL',Nr, gWnm1,3,myThid)
188     ENDIF
189     #endif
190    
191     #endif /* OLD_STYLE_WITH_MANY_FILES */
192    
193 edhill 1.41 ENDIF
194    
195     #ifdef ALLOW_MNC
196 edhill 1.45 IF (useMNC .AND. pickup_read_mnc) THEN
197 edhill 1.41 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
198     CALL MNC_CW_SET_UDIM(fn, 1, myThid)
199     CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
200     CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
201 edhill 1.46 CALL MNC_CW_RL_R('D',fn,0,0,'Temp',theta, myThid)
202 edhill 1.41 CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
203     CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
204 jmc 1.42 CALL MNC_CW_RL_R('D',fn,0,0,'gUnm1',gUnm1, myThid)
205     CALL MNC_CW_RL_R('D',fn,0,0,'gVnm1',gVnm1, myThid)
206     CALL MNC_CW_RL_R('D',fn,0,0,'gTnm1',gTnm1, myThid)
207     CALL MNC_CW_RL_R('D',fn,0,0,'gSnm1',gSnm1, myThid)
208 edhill 1.44 C#ifdef NONLIN_FRSURF
209     C IF ( nonlinFreeSurf.GE.0 .AND. usePickupBeforeC54 )
210     C & CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
211     C#endif
212 jmc 1.43 #ifdef EXACT_CONSERV
213 edhill 1.44 IF (exactConserv) THEN
214     CALL MNC_CW_RL_R('D',fn,0,0,'dEtaHdt',dEtaHdt,myThid)
215     ENDIF
216     IF (nonlinFreeSurf .GT. 0) THEN
217     CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
218 jmc 1.43 ENDIF
219     #endif
220 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
221 edhill 1.44 IF (nonHydrostatic) THEN
222 edhill 1.41 CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
223     CALL MNC_CW_RL_R('D',fn,0,0,'gW', gW, myThid)
224 adcroft 1.1 ENDIF
225     #endif
226 jmc 1.42 IF ( useDynP_inEos_Zc ) THEN
227 edhill 1.44 CALL MNC_CW_RL_R('D',fn,0,0,'phiHyd',totPhiHyd,myThid)
228 jmc 1.42 ENDIF
229 edhill 1.41 ENDIF
230     #endif /* ALLOW_MNC */
231 edhill 1.34
232 edhill 1.38 _END_MASTER( myThid )
233     _BARRIER
234 edhill 1.41
235 edhill 1.44 C Fill in edge regions
236 adcroft 1.9 CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
237     CALL EXCH_UV_XYZ_RL(gU,gV,.TRUE.,myThid)
238     CALL EXCH_UV_XYZ_RL(gUnm1,gVnm1,.TRUE.,myThid)
239 adcroft 1.1 _EXCH_XYZ_R8(theta , myThid )
240     _EXCH_XYZ_R8(gt , myThid )
241     _EXCH_XYZ_R8(gtNM1 , myThid )
242     _EXCH_XYZ_R8(salt , myThid )
243     _EXCH_XYZ_R8(gs , myThid )
244     _EXCH_XYZ_R8(gsNM1 , myThid )
245 jmc 1.6 _EXCH_XY_R8 (etaN, myThid )
246 jmc 1.13 _EXCH_XY_R8( etaH, myThid )
247 jmc 1.11
248 jmc 1.43 #ifdef EXACT_CONSERV
249     _EXCH_XY_R8( etaH, myThid )
250     _EXCH_XY_R8( detaHdt, myThid )
251     #endif
252    
253 jmc 1.19 IF ( useDynP_inEos_Zc )
254 edhill 1.41 & _EXCH_XYZ_RL( totPhiHyd, myThid )
255 jmc 1.19
256 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
257 edhill 1.41 IF ( nonHydrostatic ) THEN
258     _EXCH_XYZ_R8(phi_nh, myThid )
259     _EXCH_XYZ_R8(gW , myThid )
260     c _EXCH_XYZ_R8(gWNM1 , myThid )
261     ENDIF
262 adcroft 1.1 #endif
263 edhill 1.44
264 adcroft 1.1 RETURN
265     END
266    
267 edhill 1.41 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
268 cnh 1.14 CBOP
269     C !ROUTINE: WRITE_CHECKPOINT
270     C !INTERFACE:
271 edhill 1.41 SUBROUTINE WRITE_CHECKPOINT(
272     I modelEnd, myTime,
273     I myIter, myThid )
274    
275     C !DESCRIPTION:
276     C This is the controlling routine for IO to write restart (or
277     C ``pickup'' or ``checkpoint'') files. It calls routines from other
278     C packages (\textit{eg.} mdsio and mnc) to do the per-variable
279     C writes.
280     C
281     C Both ``rolling-checkpoint'' files and permanent checkpoint files
282     C are written here. A rolling checkpoint works through a circular
283     C list of suffices. Generally the circular list has two entries so
284     C that a rolling checkpoint will overwrite the last rolling
285     C checkpoint but one. This is useful for running long jobs without
286     C filling too much disk space. In a permanent checkpoint, data is
287     C written suffixed by the current timestep number. Permanent
288     C checkpoints can be used to provide snap-shots from which the
289     C model can be restarted.
290 cnh 1.14
291     C !USES:
292 adcroft 1.1 IMPLICIT NONE
293     #include "SIZE.h"
294     #include "EEPARAMS.h"
295     #include "PARAMS.h"
296     LOGICAL DIFFERENT_MULTIPLE
297     EXTERNAL DIFFERENT_MULTIPLE
298     INTEGER IO_ERRCOUNT
299     EXTERNAL IO_ERRCOUNT
300    
301 edhill 1.41 C !INPUT PARAMETERS:
302     C modelEnd :: Checkpoint call at end of model run.
303     C myThid :: Thread number for this instance of the routine.
304     C myIter :: Iteration number
305     C myTime :: Current time of simulation ( s )
306 adcroft 1.1 LOGICAL modelEnd
307     INTEGER myThid
308 jmc 1.5 INTEGER myIter
309 adcroft 1.15 _RL myTime
310 edhill 1.41 CEOP
311 adcroft 1.1
312 cnh 1.14 C !LOCAL VARIABLES:
313     C permCheckPoint :: Flag indicating whether a permanent checkpoint will
314     C be written.
315 jmc 1.31 C tempCheckPoint :: Flag indicating if it is time to write a non-permanent
316     C checkpoint (that will be permanent if permCheckPoint=T)
317     LOGICAL permCheckPoint, tempCheckPoint
318 edhill 1.44
319 adcroft 1.1 permCheckPoint = .FALSE.
320 jmc 1.31 tempCheckPoint = .FALSE.
321 edhill 1.41 permCheckPoint =
322     & DIFFERENT_MULTIPLE(pChkptFreq,myTime,myTime-deltaTClock)
323     tempCheckPoint =
324     & DIFFERENT_MULTIPLE( ChkptFreq,myTime,myTime-deltaTClock)
325    
326 adcroft 1.1 IF (
327 edhill 1.41 & ( .NOT.modelEnd .AND. (permCheckPoint.OR.tempCheckPoint) )
328     & .OR.
329     & ( modelEnd .AND. .NOT.(permCheckPoint.OR.tempCheckPoint) )
330     & ) THEN
331    
332 edhill 1.44 CALL WRITE_CHECKPOINT_NOW(
333     & permCheckPoint, myTime, myIter, myThid )
334    
335    
336     ENDIF
337     RETURN
338     END
339    
340     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
341     CBOP
342     C !ROUTINE: WRITE_CHECKPOINT_NOW
343     C !INTERFACE:
344     SUBROUTINE WRITE_CHECKPOINT_NOW(
345     I permCheckPoint, myTime,
346     I myIter, myThid )
347    
348     C !DESCRIPTION:
349     C Write the checkpoint and do it NOW.
350    
351     C !USES:
352     IMPLICIT NONE
353     #include "SIZE.h"
354     #include "EEPARAMS.h"
355     #include "PARAMS.h"
356     #ifdef ALLOW_MNC
357     #include "MNC_PARAMS.h"
358     #endif
359     #include "DYNVARS.h"
360     #include "SURFACE.h"
361     #ifdef ALLOW_NONHYDROSTATIC
362     #include "GW.h"
363     #include "SOLVE_FOR_PRESSURE3D.h"
364     #endif
365     INTEGER IO_ERRCOUNT
366     EXTERNAL IO_ERRCOUNT
367     COMMON /PCKP_GBLFLS/ globalFile
368     LOGICAL globalFile
369    
370     C !INPUT PARAMETERS:
371     C permCheckPoint :: Is or is not a permanent checkpoint.
372     C myThid :: Thread number for this instance of the routine.
373     C myIter :: Iteration number
374     C myTime :: Current time of simulation ( s )
375     LOGICAL permCheckPoint
376     INTEGER myThid
377     INTEGER myIter
378     _RL myTime
379     CEOP
380    
381     C !LOCAL VARIABLES:
382     C oldPrc :: Temp. for holding I/O precision
383     C fn :: Temp. for building file name string.
384     C lgf :: Flag to indicate whether to use global file mode.
385     INTEGER i, oldPrec, prec
386     CHARACTER*(MAX_LEN_FNAM) fn
387     CHARACTER*(MAX_LEN_MBUF) msgBuf
388     LOGICAL lgf
389     COMMON /PCKP_SWAP/ pickup_ext
390     CHARACTER*(1) pickup_ext
391    
392     C Write model fields
393     DO i = 1,MAX_LEN_FNAM
394     fn(i:i) = ' '
395     ENDDO
396     IF ( permCheckPoint ) THEN
397     WRITE(fn,'(A,I10.10)') 'pickup.',myIter
398     ELSE
399     WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
400     ENDIF
401    
402     C Going to really do some IO. Make everyone except master thread wait.
403     _BARRIER
404     _BEGIN_MASTER( myThid )
405    
406     IF (pickup_write_mdsio) THEN
407 adcroft 1.1
408 jmc 1.31 #ifdef OLD_STYLE_WITH_MANY_FILES
409 edhill 1.41
410 adcroft 1.1 C Force 64-bit IO
411     oldPrec = writeBinaryPrec
412     writeBinaryPrec = precFloat64
413 edhill 1.44 C Write model fields
414 adcroft 1.1 C Raw fields
415 edhill 1.44 CALL WRITE_REC_XYZ_RL( 'uVel', uVel, 1,myIter,myThid)
416     CALL WRITE_REC_XYZ_RL( 'gU', gU, 1,myIter,myThid)
417     CALL WRITE_REC_XYZ_RL( 'gUNm1', gUNm1, 1,myIter,myThid)
418     CALL WRITE_REC_XYZ_RL( 'vVel', vVel, 1,myIter,myThid)
419     CALL WRITE_REC_XYZ_RL( 'gV', gV, 1,myIter,myThid)
420     CALL WRITE_REC_XYZ_RL( 'gVNm1', gVNm1, 1,myIter,myThid)
421     CALL WRITE_REC_XYZ_RL( 'theta', theta, 1,myIter,myThid)
422     CALL WRITE_REC_XYZ_RL( 'gT', gT, 1,myIter,myThid)
423     CALL WRITE_REC_XYZ_RL( 'gTNm1', gTNm1, 1,myIter,myThid)
424     CALL WRITE_REC_XYZ_RL( 'salt', salt, 1,myIter,myThid)
425     CALL WRITE_REC_XYZ_RL( 'gS', gS, 1,myIter,myThid)
426     CALL WRITE_REC_XYZ_RL( 'gSNm1', gSNm1, 1,myIter,myThid)
427     CALL WRITE_REC_XY_RL ( 'etaN', etaN, 1,myIter,myThid)
428 adcroft 1.1 #ifdef ALLOW_NONHYDROSTATIC
429     IF ( nonHydrostatic ) THEN
430 edhill 1.41 CALL WRITE_REC_XYZ_RL('phi_nh',phi_nh,1,myIter,myThid)
431 edhill 1.44 CALL WRITE_REC_XYZ_RL( 'gW', gW,1,myIter,myThid)
432     C CALL WRITE_REC_XYZ_RL( 'gWnm1', gWnm1,1,myIter,myThid)
433 adcroft 1.1 ENDIF
434     #endif
435 edhill 1.44 C Reset binary precision
436 jmc 1.31 writeBinaryPrec = oldPrec
437 edhill 1.44
438 jmc 1.11 #else /* OLD_STYLE_WITH_MANY_FILES */
439 edhill 1.41
440 adcroft 1.1 prec = precFloat64
441     lgf = globalFile
442 edhill 1.41
443 edhill 1.44 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,uVel, 1,myIter,myThid)
444     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gUnm1,2,myIter,myThid)
445     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,vVel, 3,myIter,myThid)
446     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gVnm1,4,myIter,myThid)
447     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,theta,5,myIter,myThid)
448     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gTnm1,6,myIter,myThid)
449     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,salt, 7,myIter,myThid)
450     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gSnm1,8,myIter,myThid)
451     CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaN, 8*Nr+1,
452     & myIter,myThid)
453 jmc 1.43 #ifdef EXACT_CONSERV
454 edhill 1.44 CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,dEtaHdt,8*Nr+2,
455     & myIter,myThid)
456     CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1,etaHnm1,8*Nr+3,
457     & myIter,myThid)
458     #endif /* EXACT_CONSERV */
459     IF ( useDynP_inEos_Zc ) THEN
460     IF ( permCheckPoint ) THEN
461     WRITE(fn,'(A,I10.10)') 'pickup_ph.',myIter
462     ELSE
463     WRITE(fn,'(A,A)') 'pickup_ph.',checkPtSuff(nCheckLev)
464     ENDIF
465     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,totPhiHyd,
466     & 1,myIter,myThid)
467     ENDIF
468 edhill 1.41 #ifdef ALLOW_NONHYDROSTATIC
469 edhill 1.44 IF ( nonHydrostatic ) THEN
470     IF ( permCheckPoint ) THEN
471     WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
472     ELSE
473     WRITE(fn,'(A,A)') 'pickup_nh.',checkPtSuff(nCheckLev)
474 edhill 1.41 ENDIF
475 edhill 1.44 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,phi_nh, 1,
476     & myIter,myThid)
477     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gW, 2,
478 edhill 1.41 & myIter,myThid)
479 edhill 1.44 C CALL MDSWRITEFIELD(fn,prec,lgf,'RL',Nr,gWnm1, 3,
480     C & myIter,myThid)
481 edhill 1.41 ENDIF
482 edhill 1.44 #endif /* ALLOW_NONHYDROSTATIC */
483 edhill 1.34
484 edhill 1.41 #endif /* OLD_STYLE_WITH_MANY_FILES */
485 heimbach 1.8
486 edhill 1.44 ENDIF
487    
488     #ifdef ALLOW_MNC
489 edhill 1.45 IF (useMNC .AND. pickup_write_mnc) THEN
490 edhill 1.44 CALL MNC_CW_SET_UDIM(fn, -1, myThid)
491 edhill 1.47 CALL MNC_CW_I_W_S('I',fn,0,0,'iter', myIter, myThid)
492 edhill 1.44 CALL MNC_CW_SET_UDIM(fn, 0, myThid)
493     CALL MNC_CW_RL_W('D',fn,0,0,'U', uVel, myThid)
494     CALL MNC_CW_RL_W('D',fn,0,0,'V', vVel, myThid)
495 edhill 1.46 CALL MNC_CW_RL_W('D',fn,0,0,'Temp', theta, myThid)
496 edhill 1.44 CALL MNC_CW_RL_W('D',fn,0,0,'S', salt, myThid)
497     CALL MNC_CW_RL_W('D',fn,0,0,'Eta', etaN, myThid)
498     CALL MNC_CW_RL_W('D',fn,0,0,'gUnm1', gUnm1, myThid)
499     CALL MNC_CW_RL_W('D',fn,0,0,'gVnm1', gVnm1, myThid)
500     CALL MNC_CW_RL_W('D',fn,0,0,'gTnm1', gTnm1, myThid)
501     CALL MNC_CW_RL_W('D',fn,0,0,'gSnm1', gSnm1, myThid)
502     #ifdef EXACT_CONSERV
503     CALL MNC_CW_RL_W('D',fn,0,0,'dEtaHdt', dEtaHdt, myThid)
504     CALL MNC_CW_RL_W('D',fn,0,0,'EtaH', etaHnm1, myThid)
505     #endif
506     #ifdef ALLOW_NONHYDROSTATIC
507     IF ( nonHydrostatic ) THEN
508     CALL MNC_CW_RL_W('D',fn,0,0,'phi_nh', phi_nh, myThid)
509     CALL MNC_CW_RL_W('D',fn,0,0,'gW', gW, myThid)
510 jmc 1.32 ENDIF
511 edhill 1.44 #endif
512     IF ( useDynP_inEos_Zc ) THEN
513     CALL MNC_CW_RL_W('D',fn,0,0,'phiHyd', totPhiHyd, myThid)
514 adcroft 1.1 ENDIF
515     ENDIF
516 edhill 1.44 #endif /* ALLOW_MNC */
517 adcroft 1.1
518 edhill 1.44 C Write suffix for stdout information
519     IF ( permCheckPoint ) THEN
520     WRITE(fn,'(I10.10)') myIter
521     ELSE
522     WRITE(fn,'(A)') checkPtSuff(nCheckLev)
523     ENDIF
524    
525     IF ( .NOT. permCheckPoint ) THEN
526     nCheckLev = MOD(nCheckLev, maxNoChkptLev)+1
527     ENDIF
528    
529     _END_MASTER(myThid)
530     _BARRIER
531    
532     C Write information to stdout so there is a record that the
533     C checkpoint was completed
534     _BEGIN_MASTER(myThid)
535     WRITE(msgBuf,'(A11,I10,1X,A10)')
536     & "%CHECKPOINT ",myIter,fn
537     CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
538     _END_MASTER(myThid)
539    
540 adcroft 1.1 RETURN
541     END

  ViewVC Help
Powered by ViewVC 1.1.22