/[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.36 - (hide annotations) (download)
Wed Mar 10 05:50:16 2004 UTC (20 years, 3 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint52l_pre, checkpoint52l_post
Changes since 1.35: +19 -1 lines
 o fix bug: too many files open
 o add some testing code for pickups

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

  ViewVC Help
Powered by ViewVC 1.1.22