/[MITgcm]/MITgcm/model/src/read_pickup.F
ViewVC logotype

Annotation of /MITgcm/model/src/read_pickup.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.7 - (hide annotations) (download)
Fri Nov 9 22:37:05 2012 UTC (11 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f
Changes since 1.6: +40 -37 lines
- move addMass common block from DYNVARS.h to FFIELDS.h

1 jmc 1.7 C $Header: /u/gcmpack/MITgcm/model/src/read_pickup.F,v 1.6 2009/12/11 13:53:07 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6    
7     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8     CBOP
9     C !ROUTINE: READ_PICKUP
10     C !INTERFACE:
11     SUBROUTINE READ_PICKUP(
12     I myIter, myThid )
13    
14     C !DESCRIPTION:
15     C This is the controlling routine for IO to read restart (or
16     C "pickup" or "checkpoint" ) files. It calls routines from other
17     C packages (\textit{eg.} rw and mnc) to do the per-variable
18     C reads.
19    
20     C !USES:
21     IMPLICIT NONE
22     #include "SIZE.h"
23     #include "EEPARAMS.h"
24     #include "PARAMS.h"
25 jmc 1.2 #include "RESTART.h"
26 jmc 1.1 #include "DYNVARS.h"
27     #include "SURFACE.h"
28 jmc 1.2 #ifdef ALLOW_GENERIC_ADVDIFF
29     # include "GAD.h"
30     #endif
31 jmc 1.1 #ifdef ALLOW_NONHYDROSTATIC
32 jmc 1.7 # include "NH_VARS.h"
33     #endif
34     #ifdef ALLOW_ADDFLUID
35     # include "FFIELDS.h"
36 jmc 1.1 #endif
37     #ifdef ALLOW_MNC
38 jmc 1.7 # include "MNC_PARAMS.h"
39 jmc 1.1 #endif
40    
41     C !INPUT/OUTPUT PARAMETERS:
42     C myIter :: Iteration number
43 jmc 1.2 C myThid :: my Thread Id. number
44 jmc 1.1 INTEGER myIter
45     INTEGER myThid
46     CEOP
47    
48     C !LOCAL VARIABLES:
49 jmc 1.2 C fp :: pickup-file precision
50     C fn :: Temp. for building file name.
51     C suff :: suffix of pickup file to read
52     C filePrec :: pickup-file precision (read from meta file)
53     C nbFields :: number of fields in pickup file (read from meta file)
54     C missFldList :: List of missing fields (attempted to read but not found)
55     C missFldDim :: Dimension of missing fields list array: missFldList
56     C nMissing :: Number of missing fields (attempted to read but not found)
57     C m1,m2 :: 6.th dim index (AB-3) corresponding to time-step N-1 & N-2
58     C j :: loop index
59     C nj :: record number
60     C ioUnit :: temp for writing msg unit
61     C msgBuf :: Informational/error message buffer
62 jmc 1.1 INTEGER fp
63     CHARACTER*(MAX_LEN_FNAM) fn
64     CHARACTER*(10) suff
65 jmc 1.2 INTEGER filePrec, nbFields
66     INTEGER missFldDim, nMissing
67     PARAMETER( missFldDim = 20 )
68     CHARACTER*(8) missFldList(missFldDim)
69 jmc 1.1 #ifdef ALLOW_ADAMSBASHFORTH_3
70 jmc 1.2 INTEGER m1, m2
71     #endif
72     INTEGER j, nj, ioUnit
73     CHARACTER*(MAX_LEN_MBUF) msgBuf
74     #ifndef ALLOW_GENERIC_ADVDIFF
75     LOGICAL AdamsBashforthGt
76     LOGICAL AdamsBashforthGs
77     LOGICAL AdamsBashforth_T
78     LOGICAL AdamsBashforth_S
79     PARAMETER ( AdamsBashforthGt = .FALSE. ,
80     & AdamsBashforthGs = .FALSE. ,
81     & AdamsBashforth_T = .FALSE. ,
82     & AdamsBashforth_S = .FALSE. )
83 jmc 1.1 #endif
84    
85     C Suffix for pickup files
86 jmc 1.2 DO j = 1,MAX_LEN_FNAM
87     fn(j:j) = ' '
88 jmc 1.1 ENDDO
89     IF (pickupSuff .EQ. ' ') THEN
90     WRITE(suff,'(I10.10)') myIter
91     ELSE
92     WRITE(suff,'(A10)') pickupSuff
93     ENDIF
94     WRITE(fn,'(A,A10)') 'pickup.',suff
95    
96     C Going to really do some IO. Make everyone except master thread wait.
97 jmc 1.5 C this is done within IO routines => no longer needed
98     c _BARRIER
99 jmc 1.1
100     IF (pickup_read_mdsio) THEN
101    
102 jmc 1.2 fp = precFloat64
103     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
104    
105     CALL READ_MFLDS_SET(
106     I fn,
107     O nbFields, filePrec,
108     I Nr, myIter, myThid )
109    
110     _BEGIN_MASTER( myThid )
111     c IF ( filePrec.NE.0 .AND. filePrec.NE.fp ) THEN
112     IF ( nbFields.GE.0 .AND. filePrec.NE.fp ) THEN
113     WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
114     & 'pickup-file binary precision do not match !'
115     CALL PRINT_ERROR( msgBuf, myThid )
116     WRITE(msgBuf,'(A,2(A,I4))') 'READ_PICKUP: ',
117     & 'file prec.=', filePrec, ' but expecting prec.=', fp
118     CALL PRINT_ERROR( msgBuf, myThid )
119     STOP 'ABNORMAL END: S/R READ_PICKUP (data-prec Pb)'
120     ENDIF
121     _END_MASTER( myThid )
122    
123     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
124    
125     IF ( nbFields.LE.0 ) THEN
126     C- No meta-file or old meta-file without List of Fields
127     ioUnit = errorMessageUnit
128     IF ( pickupStrictlyMatch ) THEN
129     WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
130     & 'no field-list found in meta-file',
131     & ' => cannot check for strick-matching'
132     c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
133     CALL PRINT_ERROR( msgBuf, myThid )
134     WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
135     & 'try with " pickupStrictlyMatch=.FALSE.,"',
136     & ' in file: "data", NameList: "PARM03"'
137     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
138     STOP 'ABNORMAL END: S/R READ_PICKUP'
139     ELSE
140     WRITE(msgBuf,'(4A)') 'WARNING >> READ_PICKUP: ',
141     & ' no field-list found'
142     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
143     IF ( nbFields.EQ.-1 ) THEN
144     C- No meta-file
145     WRITE(msgBuf,'(4A)') 'WARNING >> ',
146     & ' try to read pickup as currently written'
147     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
148     ELSE
149     C- Old meta-file without List of Fields
150     WRITE(msgBuf,'(4A)') 'WARNING >> ',
151     & ' try to read pickup as it used to be written'
152     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
153     WRITE(msgBuf,'(4A)') 'WARNING >> ',
154     & ' until checkpoint59i (2007 Oct 22)'
155     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
156     ENDIF
157     ENDIF
158     ENDIF
159    
160     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
161 jmc 1.1
162 jmc 1.2 C--- Old way to read model fields:
163     IF ( nbFields.EQ.0 ) THEN
164 jmc 1.1 IF ( usePickupBeforeC54 ) THEN
165     #ifndef ALLOW_ADAMSBASHFORTH_3
166     CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
167     CALL READ_REC_3D_RL( fn, fp, Nr, gU, 2, myIter,myThid )
168     CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 3, myIter,myThid )
169     CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 4, myIter,myThid )
170     CALL READ_REC_3D_RL( fn, fp, Nr, gV, 5, myIter,myThid )
171     CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 6, myIter,myThid )
172     CALL READ_REC_3D_RL( fn, fp, Nr, theta, 7, myIter,myThid )
173     CALL READ_REC_3D_RL( fn, fp, Nr, gT, 8, myIter,myThid )
174     CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 9, myIter,myThid )
175     CALL READ_REC_3D_RL( fn, fp, Nr, salt, 10, myIter,myThid )
176     CALL READ_REC_3D_RL( fn, fp, Nr, gS, 11, myIter,myThid )
177     CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1,12, myIter,myThid )
178     #endif /* ALLOW_ADAMSBASHFORTH_3 */
179     CALL READ_REC_3D_RL( fn, fp, 1, etaN,
180     & 12*Nr+1, myIter,myThid )
181     #ifdef NONLIN_FRSURF
182     IF (nonlinFreeSurf .GE. 0) THEN
183     CALL READ_REC_3D_RL(fn, fp, 1, etaH,
184     & 12*Nr+2, myIter,myThid )
185     ENDIF
186     #endif
187     ELSE
188     #ifdef ALLOW_ADAMSBASHFORTH_3
189     j = 3
190     IF ( startFromPickupAB2 ) j = 2
191     nj = 0
192     CALL READ_REC_3D_RL( fn, fp, Nr, uVel, nj+1, myIter,myThid )
193 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, guNm(1-OLx,1-OLy,1,1,1,1),
194 jmc 1.1 & nj+2, myIter,myThid )
195 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, guNm(1-OLx,1-OLy,1,1,1,2),
196 jmc 1.1 & nj+j, myIter,myThid )
197     nj = j
198     CALL READ_REC_3D_RL( fn, fp, Nr, vVel, nj+1, myIter,myThid )
199 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm(1-OLx,1-OLy,1,1,1,1),
200 jmc 1.1 & nj+2, myIter,myThid )
201 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm(1-OLx,1-OLy,1,1,1,2),
202 jmc 1.1 & nj+j, myIter,myThid )
203     nj = 2*j
204     CALL READ_REC_3D_RL( fn, fp, Nr, theta,nj+1, myIter,myThid )
205 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm(1-OLx,1-OLy,1,1,1,1),
206 jmc 1.1 & nj+2, myIter,myThid )
207 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm(1-OLx,1-OLy,1,1,1,2),
208 jmc 1.1 & nj+j, myIter,myThid )
209     nj = 3*j
210     CALL READ_REC_3D_RL( fn, fp, Nr, salt, nj+1, myIter,myThid )
211 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm(1-OLx,1-OLy,1,1,1,1),
212 jmc 1.1 & nj+2, myIter,myThid )
213 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm(1-OLx,1-OLy,1,1,1,2),
214 jmc 1.1 & nj+j, myIter,myThid )
215     nj = 4*j
216     #else /* ALLOW_ADAMSBASHFORTH_3 */
217     CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
218     CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 2, myIter,myThid )
219     CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 3, myIter,myThid )
220     CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 4, myIter,myThid )
221     CALL READ_REC_3D_RL( fn, fp, Nr, theta, 5, myIter,myThid )
222     CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 6, myIter,myThid )
223     CALL READ_REC_3D_RL( fn, fp, Nr, salt, 7, myIter,myThid )
224     CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1, 8, myIter,myThid )
225     nj = 8
226     #endif /* ALLOW_ADAMSBASHFORTH_3 */
227     CALL READ_REC_3D_RL( fn,fp,1, etaN, nj*Nr+1, myIter,myThid )
228     #ifdef EXACT_CONSERV
229 jmc 1.2 IF ( exactConserv ) THEN
230 jmc 1.1 CALL READ_REC_3D_RL(fn,fp,1,dEtaHdt,nj*Nr+2,myIter,myThid )
231     ENDIF
232 jmc 1.2 IF ( nonlinFreeSurf.GT.0 ) THEN
233 jmc 1.1 CALL READ_REC_3D_RL(fn,fp,1, etaH, nj*Nr+3, myIter,myThid )
234     ENDIF
235     #endif
236     ENDIF
237    
238     IF ( useDynP_inEos_Zc ) THEN
239     WRITE(fn,'(A,A10)') 'pickup_ph.',suff
240     CALL READ_REC_3D_RL( fn, fp, Nr, totPhiHyd,1,myIter,myThid )
241 jmc 1.2 ENDIF
242 jmc 1.1 #ifdef ALLOW_NONHYDROSTATIC
243 jmc 1.2 IF ( use3Dsolver ) THEN
244 jmc 1.1 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
245     CALL READ_REC_3D_RL( fn, fp, Nr, phi_nh, 1, myIter,myThid )
246 jmc 1.6 #ifdef ALLOW_ADAMSBASHFORTH_3
247 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,1),
248 jmc 1.6 & 2, myIter,myThid )
249 jmc 1.7 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,2),
250 jmc 1.6 & 2, myIter,myThid )
251     #else /* ALLOW_ADAMSBASHFORTH_3 */
252 jmc 1.1 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm1, 2, myIter,myThid )
253 jmc 1.6 #endif /* ALLOW_ADAMSBASHFORTH_3 */
254 jmc 1.1 ENDIF
255 jmc 1.6 #endif /* ALLOW_NONHYDROSTATIC */
256 jmc 1.2 ELSE
257     C--- New way to read model fields:
258     nj = 0
259     C--- read State 3-D fields for restart
260     CALL READ_MFLDS_3D_RL( 'Uvel ', uVel,
261     & nj, fp, Nr, myIter, myThid )
262     CALL READ_MFLDS_3D_RL( 'Vvel ', vVel,
263     & nj, fp, Nr, myIter, myThid )
264     CALL READ_MFLDS_3D_RL( 'Theta ', theta,
265     & nj, fp, Nr, myIter, myThid )
266     CALL READ_MFLDS_3D_RL( 'Salt ', salt,
267     & nj, fp, Nr, myIter, myThid )
268     C--- read 3-D fields for AB-restart
269     #ifdef ALLOW_ADAMSBASHFORTH_3
270     m1 = 1 + MOD(myIter+1,2)
271     m2 = 1 + MOD( myIter ,2)
272 jmc 1.3 IF ( momStepping ) THEN
273 jmc 1.2 C-- U velocity:
274     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
275 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GuNm1 ',guNm(1-OLx,1-OLy,1,1,1,m1),
276 jmc 1.2 & nj, fp, Nr, myIter, myThid )
277     ENDIF
278     IF ( beta_AB.NE.0. ) THEN
279 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GuNm2 ',guNm(1-OLx,1-OLy,1,1,1,m2),
280 jmc 1.2 & nj, fp, Nr, myIter, myThid )
281     ENDIF
282     C-- V velocity:
283     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
284 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GvNm1 ',gvNm(1-OLx,1-OLy,1,1,1,m1),
285 jmc 1.2 & nj, fp, Nr, myIter, myThid )
286     ENDIF
287     IF ( beta_AB.NE.0. ) THEN
288 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GvNm2 ',gvNm(1-OLx,1-OLy,1,1,1,m2),
289 jmc 1.2 & nj, fp, Nr, myIter, myThid )
290     ENDIF
291 jmc 1.3 ENDIF
292 jmc 1.2 C-- Temperature:
293     IF ( AdamsBashforthGt ) THEN
294     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
295 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GtNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
296 jmc 1.2 & nj, fp, Nr, myIter, myThid )
297     ENDIF
298     IF ( beta_AB.NE.0. ) THEN
299 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GtNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
300 jmc 1.2 & nj, fp, Nr, myIter, myThid )
301     ENDIF
302     ELSEIF ( AdamsBashforth_T ) THEN
303     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
304 jmc 1.7 CALL READ_MFLDS_3D_RL( 'TempNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
305 jmc 1.2 & nj, fp, Nr, myIter, myThid )
306     ENDIF
307     IF ( beta_AB.NE.0. ) THEN
308 jmc 1.7 CALL READ_MFLDS_3D_RL( 'TempNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
309 jmc 1.2 & nj, fp, Nr, myIter, myThid )
310     ENDIF
311     ENDIF
312     C-- Salinity:
313     IF ( AdamsBashforthGs ) THEN
314     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
315 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GsNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
316 jmc 1.2 & nj, fp, Nr, myIter, myThid )
317     ENDIF
318     IF ( beta_AB.NE.0. ) THEN
319 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GsNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
320 jmc 1.2 & nj, fp, Nr, myIter, myThid )
321     ENDIF
322     ELSEIF ( AdamsBashforth_S ) THEN
323     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
324 jmc 1.7 CALL READ_MFLDS_3D_RL( 'SaltNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
325 jmc 1.2 & nj, fp, Nr, myIter, myThid )
326     ENDIF
327     IF ( beta_AB.NE.0. ) THEN
328 jmc 1.7 CALL READ_MFLDS_3D_RL( 'SaltNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
329 jmc 1.2 & nj, fp, Nr, myIter, myThid )
330     ENDIF
331     ENDIF
332 jmc 1.6 #ifdef ALLOW_NONHYDROSTATIC
333     IF ( nonHydrostatic ) THEN
334     C-- W velocity:
335     IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
336 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GwNm1 ',gwNm(1-OLx,1-OLy,1,1,1,m1),
337 jmc 1.6 & nj, fp, Nr, myIter, myThid )
338     ENDIF
339     IF ( beta_AB.NE.0. ) THEN
340 jmc 1.7 CALL READ_MFLDS_3D_RL( 'GwNm2 ',gwNm(1-OLx,1-OLy,1,1,1,m2),
341 jmc 1.6 & nj, fp, Nr, myIter, myThid )
342     ENDIF
343     ENDIF
344     #endif /* ALLOW_NONHYDROSTATIC */
345 jmc 1.2 #else /* ALLOW_ADAMSBASHFORTH_3 */
346 jmc 1.3 IF ( momStepping ) THEN
347 jmc 1.2 C-- U velocity:
348     CALL READ_MFLDS_3D_RL( 'GuNm1 ', guNm1,
349     & nj, fp, Nr, myIter, myThid )
350     C-- V velocity:
351     CALL READ_MFLDS_3D_RL( 'GvNm1 ', gvNm1,
352     & nj, fp, Nr, myIter, myThid )
353 jmc 1.3 ENDIF
354 jmc 1.2 C-- Temperature
355     IF ( AdamsBashforthGt ) THEN
356     CALL READ_MFLDS_3D_RL( 'GtNm1 ', gtNm1,
357     & nj, fp, Nr, myIter, myThid )
358     ENDIF
359     C-- Salinity
360     IF ( AdamsBashforthGs ) THEN
361     CALL READ_MFLDS_3D_RL( 'GsNm1 ', gsNm1,
362     & nj, fp, Nr, myIter, myThid )
363     ENDIF
364 jmc 1.6 #ifdef ALLOW_NONHYDROSTATIC
365     IF ( nonHydrostatic ) THEN
366     CALL READ_MFLDS_3D_RL( 'GwNm1 ', gwNm1,
367     & nj, fp, Nr, myIter, myThid )
368     ENDIF
369     #endif /* ALLOW_NONHYDROSTATIC */
370 jmc 1.2 #endif /* ALLOW_ADAMSBASHFORTH_3 */
371    
372     C- read Full Pressure for EOS in pressure:
373     IF ( useDynP_inEos_Zc ) THEN
374     CALL READ_MFLDS_3D_RL( 'PhiHyd ', totPhiHyd,
375     & nj, fp, Nr, myIter, myThid )
376     ENDIF
377     #ifdef ALLOW_NONHYDROSTATIC
378     IF ( use3Dsolver ) THEN
379     CALL READ_MFLDS_3D_RL( 'Phi_NHyd', phi_nh,
380     & nj, fp, Nr, myIter, myThid )
381     ENDIF
382 jmc 1.6 #endif /* ALLOW_NONHYDROSTATIC */
383 jmc 1.4 #ifdef ALLOW_ADDFLUID
384     C- read mass source/sink of fluid
385     IF ( selectAddFluid.GE.1 ) THEN
386     CALL READ_MFLDS_3D_RL( 'AddMass ', addMass,
387     & nj, fp, Nr, myIter, myThid )
388     ENDIF
389     #endif /* ALLOW_ADDFLUID */
390 jmc 1.2
391     C--- read 2-D fields, starting with Eta:
392     nj = nj*Nr
393     CALL READ_MFLDS_3D_RL( 'EtaN ', etaN,
394     & nj, fp, 1 , myIter, myThid )
395 jmc 1.6 #ifdef ALLOW_NONHYDROSTATIC
396     IF ( selectNHfreeSurf.GE.1 ) THEN
397     CALL READ_MFLDS_3D_RL( 'dPhiNH ', dPhiNH,
398     & nj, fp, 1 , myIter, myThid )
399     ENDIF
400     #endif /* ALLOW_NONHYDROSTATIC */
401 jmc 1.2 #ifdef EXACT_CONSERV
402     IF ( exactConserv ) THEN
403     CALL READ_MFLDS_3D_RL( 'dEtaHdt ', dEtaHdt,
404     & nj, fp, 1 , myIter, myThid )
405     ENDIF
406     IF ( nonlinFreeSurf.GT.0 ) THEN
407     CALL READ_MFLDS_3D_RL( 'EtaH ', etaH,
408     & nj, fp, 1 , myIter, myThid )
409     ENDIF
410 jmc 1.6 #endif /* EXACT_CONSERV */
411 jmc 1.2 C-- end: new way to read pickup file
412     ENDIF
413    
414     C-- Check for missing fields:
415     nMissing = missFldDim
416     CALL READ_MFLDS_CHECK(
417     O missFldList,
418     U nMissing,
419     I myIter, myThid )
420     IF ( nMissing.GT.missFldDim ) THEN
421     WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
422     & 'missing fields list has been truncated to', missFldDim
423     CALL PRINT_ERROR( msgBuf, myThid )
424     STOP 'ABNORMAL END: S/R READ_PICKUP (list-size Pb)'
425     ENDIF
426     CALL CHECK_PICKUP(
427     I missFldList,
428     I nMissing, nbFields,
429     I myIter, myThid )
430 jmc 1.1
431 jmc 1.2 C-- end: pickup_read_mdsio
432 jmc 1.1 ENDIF
433    
434     #ifdef ALLOW_MNC
435     IF (useMNC .AND. pickup_read_mnc) THEN
436     WRITE(fn,'(A)') 'pickup'
437     CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
438     CALL MNC_CW_SET_UDIM(fn, 1, myThid)
439     CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
440     CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
441     CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
442     CALL MNC_CW_RL_R('D',fn,0,0,'Temp',theta, myThid)
443     CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
444     CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
445     #ifndef ALLOW_ADAMSBASHFORTH_3
446     CALL MNC_CW_RL_R('D',fn,0,0,'gUnm1',guNm1, myThid)
447     CALL MNC_CW_RL_R('D',fn,0,0,'gVnm1',gvNm1, myThid)
448     CALL MNC_CW_RL_R('D',fn,0,0,'gTnm1',gtNm1, myThid)
449     CALL MNC_CW_RL_R('D',fn,0,0,'gSnm1',gsNm1, myThid)
450     #endif /* ALLOW_ADAMSBASHFORTH_3 */
451     C#ifdef NONLIN_FRSURF
452     C IF ( nonlinFreeSurf.GE.0 .AND. usePickupBeforeC54 )
453     C & CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
454     C#endif
455     #ifdef EXACT_CONSERV
456     IF (exactConserv) THEN
457     CALL MNC_CW_RL_R('D',fn,0,0,'dEtaHdt',dEtaHdt,myThid)
458     ENDIF
459     IF (nonlinFreeSurf .GT. 0) THEN
460     CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
461     ENDIF
462     #endif
463     #ifdef ALLOW_NONHYDROSTATIC
464     IF (use3Dsolver) THEN
465     CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
466     c CALL MNC_CW_RL_R('D',fn,0,0,'gW', gW, myThid)
467 jmc 1.6 #ifndef ALLOW_ADAMSBASHFORTH_3
468 jmc 1.1 CALL MNC_CW_RL_R('D',fn,0,0,'gWnm1', gwNm1, myThid)
469 jmc 1.6 #endif
470 jmc 1.1 ENDIF
471     #endif
472     IF ( useDynP_inEos_Zc ) THEN
473     CALL MNC_CW_RL_R('D',fn,0,0,'phiHyd',totPhiHyd,myThid)
474     ENDIF
475     ENDIF
476     #endif /* ALLOW_MNC */
477    
478     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
479    
480     C Fill in edge regions
481     CALL EXCH_UV_3D_RL( uVel, vVel, .TRUE., Nr, myThid )
482     CALL EXCH_3D_RL( theta, Nr, myThid )
483     CALL EXCH_3D_RL( salt, Nr, myThid )
484     #ifdef ALLOW_ADAMSBASHFORTH_3
485 jmc 1.7 CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,1),
486     & gvNm(1-OLx,1-OLy,1,1,1,1),.TRUE.,Nr,myThid )
487     CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,2),
488     & gvNm(1-OLx,1-OLy,1,1,1,2),.TRUE.,Nr,myThid )
489     CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
490     CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
491     CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
492     CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
493 jmc 1.1 #else /* ALLOW_ADAMSBASHFORTH_3 */
494     CALL EXCH_UV_3D_RL( guNm1, gvNm1, .TRUE., Nr, myThid )
495     CALL EXCH_3D_RL( gtNm1, Nr, myThid )
496     CALL EXCH_3D_RL( gsNm1, Nr, myThid )
497     #endif /* ALLOW_ADAMSBASHFORTH_3 */
498     CALL EXCH_XY_RL( etaN, myThid )
499     CALL EXCH_XY_RL( etaH, myThid )
500     #ifdef EXACT_CONSERV
501     CALL EXCH_XY_RL( detaHdt, myThid )
502     #endif
503    
504     IF ( useDynP_inEos_Zc )
505     & CALL EXCH_3D_RL( totPhiHyd, Nr, myThid )
506    
507     #ifdef ALLOW_NONHYDROSTATIC
508     IF ( use3Dsolver ) THEN
509     CALL EXCH_3D_RL( phi_nh, Nr, myThid )
510 jmc 1.6 ENDIF
511     IF ( nonHydrostatic ) THEN
512     #ifdef ALLOW_ADAMSBASHFORTH_3
513 jmc 1.7 CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
514     CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
515 jmc 1.6 #else /* ALLOW_ADAMSBASHFORTH_3 */
516 jmc 1.1 CALL EXCH_3D_RL( gwNm1, Nr, myThid )
517 jmc 1.6 #endif /* ALLOW_ADAMSBASHFORTH_3 */
518 jmc 1.1 ENDIF
519 jmc 1.6 IF ( selectNHfreeSurf.GE.1 ) THEN
520     CALL EXCH_XY_RL( dPhiNH, myThid )
521     ENDIF
522     #endif /* ALLOW_NONHYDROSTATIC */
523 jmc 1.1
524     RETURN
525     END

  ViewVC Help
Powered by ViewVC 1.1.22