/[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.34 - (hide annotations) (download)
Mon Mar 8 21:15:49 2004 UTC (20 years, 2 months ago) by edhill
Branch: MAIN
Changes since 1.33: +62 -1 lines
 o initial (working) version of MNC that reads pickup files
   - tested with global_ocean.cs32x15
   - has bugs in the checking of in-memory vs. NetCDF variable sizes

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

  ViewVC Help
Powered by ViewVC 1.1.22