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

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

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


Revision 1.10 - (show annotations) (download)
Fri Aug 15 19:22:06 2014 UTC (9 years, 9 months ago) by jmc
Branch: MAIN
Changes since 1.9: +3 -3 lines
remove gT,gS

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

  ViewVC Help
Powered by ViewVC 1.1.22