/[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.39 - (hide annotations) (download)
Sun Mar 21 03:44:23 2004 UTC (20 years, 3 months ago) by edhill
Branch: MAIN
Changes since 1.38: +26 -23 lines
 o finish implementation of the separate unlimited-dim handling for the
   MNC_CW_*_R_* and MNC_CW_*_W_* functions

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

  ViewVC Help
Powered by ViewVC 1.1.22