File indexing completed on 2025-09-19 05:08:09 UTC
view on githubraw file Latest commit c3be0435 on 2025-09-18 18:40:16 UTC
92e77d50bf Jean*0001 #include "PACKAGES_CONFIG.h"
0002 #include "CPP_OPTIONS.h"
0003
0004
0005
0006
0007
0008 SUBROUTINE READ_PICKUP(
0009 I myIter, myThid )
0010
0011
0012
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019 #include "SIZE.h"
0020 #include "EEPARAMS.h"
0021 #include "PARAMS.h"
d6ed4854d6 Jean*0022 #include "RESTART.h"
92e77d50bf Jean*0023 #include "DYNVARS.h"
fdf5fb6af0 Jean*0024 #include "NH_VARS.h"
92e77d50bf Jean*0025 #include "SURFACE.h"
fd6656ef94 Jean*0026 #include "FFIELDS.h"
d6ed4854d6 Jean*0027 #ifdef ALLOW_GENERIC_ADVDIFF
0028 # include "GAD.h"
0029 #endif
92e77d50bf Jean*0030 #ifdef ALLOW_MNC
229ac9feb6 Jean*0031 # include "MNC_PARAMS.h"
92e77d50bf Jean*0032 #endif
eda0e8da44 Mich*0033 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0034 # include "GMREDI.h"
0035 #endif
92e77d50bf Jean*0036
0037
0038
d6ed4854d6 Jean*0039
92e77d50bf Jean*0040 INTEGER myIter
0041 INTEGER myThid
0042
0043
0044
d6ed4854d6 Jean*0045
0046
0047
0048
0049
0050
0051
0052
cbf501ab81 Jean*0053
d6ed4854d6 Jean*0054
0055
0056
0057
92e77d50bf Jean*0058 INTEGER fp
0059 CHARACTER*(MAX_LEN_FNAM) fn
0060 CHARACTER*(10) suff
d6ed4854d6 Jean*0061 INTEGER filePrec, nbFields
0062 INTEGER missFldDim, nMissing
0063 PARAMETER( missFldDim = 20 )
0064 CHARACTER*(8) missFldList(missFldDim)
92e77d50bf Jean*0065 #ifdef ALLOW_ADAMSBASHFORTH_3
cbf501ab81 Jean*0066 INTEGER j, m1, m2
d6ed4854d6 Jean*0067 #endif
cbf501ab81 Jean*0068 INTEGER nj, ioUnit
d6ed4854d6 Jean*0069 CHARACTER*(MAX_LEN_MBUF) msgBuf
0070 #ifndef ALLOW_GENERIC_ADVDIFF
0071 LOGICAL AdamsBashforthGt
0072 LOGICAL AdamsBashforthGs
0073 LOGICAL AdamsBashforth_T
0074 LOGICAL AdamsBashforth_S
0075 PARAMETER ( AdamsBashforthGt = .FALSE. ,
0076 & AdamsBashforthGs = .FALSE. ,
0077 & AdamsBashforth_T = .FALSE. ,
0078 & AdamsBashforth_S = .FALSE. )
92e77d50bf Jean*0079 #endif
0080
0081
0082 IF (pickupSuff .EQ. ' ') THEN
8f6bf732a8 Jean*0083 IF ( rwSuffixType.EQ.0 ) THEN
0084 WRITE(suff,'(I10.10)') myIter
0085 ELSE
0086 CALL RW_GET_SUFFIX( suff, startTime, myIter, myThid )
0087 ENDIF
92e77d50bf Jean*0088 ELSE
0089 WRITE(suff,'(A10)') pickupSuff
0090 ENDIF
0091 WRITE(fn,'(A,A10)') 'pickup.',suff
0092
0093
3365bdc872 Jean*0094
0095
92e77d50bf Jean*0096
0097 IF (pickup_read_mdsio) THEN
0098
d6ed4854d6 Jean*0099 fp = precFloat64
0100
0101
0102 CALL READ_MFLDS_SET(
0103 I fn,
0104 O nbFields, filePrec,
0105 I Nr, myIter, myThid )
0106
0107 _BEGIN_MASTER( myThid )
0108
0109 IF ( nbFields.GE.0 .AND. filePrec.NE.fp ) THEN
0110 WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
0111 & 'pickup-file binary precision do not match !'
0112 CALL PRINT_ERROR( msgBuf, myThid )
0113 WRITE(msgBuf,'(A,2(A,I4))') 'READ_PICKUP: ',
0114 & 'file prec.=', filePrec, ' but expecting prec.=', fp
0115 CALL PRINT_ERROR( msgBuf, myThid )
0116 STOP 'ABNORMAL END: S/R READ_PICKUP (data-prec Pb)'
0117 ENDIF
0118 _END_MASTER( myThid )
0119
0120
0121
0122 IF ( nbFields.LE.0 ) THEN
0123
0124 ioUnit = errorMessageUnit
0125 IF ( pickupStrictlyMatch ) THEN
0126 WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
0127 & 'no field-list found in meta-file',
0128 & ' => cannot check for strick-matching'
0129
0130 CALL PRINT_ERROR( msgBuf, myThid )
0131 WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
0132 & 'try with " pickupStrictlyMatch=.FALSE.,"',
0133 & ' in file: "data", NameList: "PARM03"'
0134 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0135 STOP 'ABNORMAL END: S/R READ_PICKUP'
0136 ELSE
0137 WRITE(msgBuf,'(4A)') 'WARNING >> READ_PICKUP: ',
0138 & ' no field-list found'
0139 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0140 IF ( nbFields.EQ.-1 ) THEN
0141
0142 WRITE(msgBuf,'(4A)') 'WARNING >> ',
0143 & ' try to read pickup as currently written'
0144 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0145 ELSE
0146
0147 WRITE(msgBuf,'(4A)') 'WARNING >> ',
0148 & ' try to read pickup as it used to be written'
0149 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0150 WRITE(msgBuf,'(4A)') 'WARNING >> ',
0151 & ' until checkpoint59i (2007 Oct 22)'
0152 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0153 ENDIF
0154 ENDIF
0155 ENDIF
0156
0157
92e77d50bf Jean*0158
d6ed4854d6 Jean*0159
0160 IF ( nbFields.EQ.0 ) THEN
92e77d50bf Jean*0161 IF ( usePickupBeforeC54 ) THEN
0162 #ifndef ALLOW_ADAMSBASHFORTH_3
0163 CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
0164 CALL READ_REC_3D_RL( fn, fp, Nr, gU, 2, myIter,myThid )
0165 CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 3, myIter,myThid )
0166 CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 4, myIter,myThid )
0167 CALL READ_REC_3D_RL( fn, fp, Nr, gV, 5, myIter,myThid )
0168 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 6, myIter,myThid )
0169 CALL READ_REC_3D_RL( fn, fp, Nr, theta, 7, myIter,myThid )
ac35802f50 Jean*0170
92e77d50bf Jean*0171 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 9, myIter,myThid )
0172 CALL READ_REC_3D_RL( fn, fp, Nr, salt, 10, myIter,myThid )
ac35802f50 Jean*0173
92e77d50bf Jean*0174 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1,12, myIter,myThid )
0175 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0176 CALL READ_REC_3D_RL( fn, fp, 1, etaN,
0177 & 12*Nr+1, myIter,myThid )
0178 #ifdef NONLIN_FRSURF
0179 IF (nonlinFreeSurf .GE. 0) THEN
0180 CALL READ_REC_3D_RL(fn, fp, 1, etaH,
0181 & 12*Nr+2, myIter,myThid )
0182 ENDIF
0183 #endif
0184 ELSE
0185 #ifdef ALLOW_ADAMSBASHFORTH_3
0186 j = 3
0187 IF ( startFromPickupAB2 ) j = 2
0188 nj = 0
0189 CALL READ_REC_3D_RL( fn, fp, Nr, uVel, nj+1, myIter,myThid )
229ac9feb6 Jean*0190 CALL READ_REC_3D_RL( fn, fp, Nr, guNm(1-OLx,1-OLy,1,1,1,1),
92e77d50bf Jean*0191 & nj+2, myIter,myThid )
229ac9feb6 Jean*0192 CALL READ_REC_3D_RL( fn, fp, Nr, guNm(1-OLx,1-OLy,1,1,1,2),
92e77d50bf Jean*0193 & nj+j, myIter,myThid )
0194 nj = j
0195 CALL READ_REC_3D_RL( fn, fp, Nr, vVel, nj+1, myIter,myThid )
229ac9feb6 Jean*0196 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm(1-OLx,1-OLy,1,1,1,1),
92e77d50bf Jean*0197 & nj+2, myIter,myThid )
229ac9feb6 Jean*0198 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm(1-OLx,1-OLy,1,1,1,2),
92e77d50bf Jean*0199 & nj+j, myIter,myThid )
0200 nj = 2*j
0201 CALL READ_REC_3D_RL( fn, fp, Nr, theta,nj+1, myIter,myThid )
229ac9feb6 Jean*0202 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm(1-OLx,1-OLy,1,1,1,1),
92e77d50bf Jean*0203 & nj+2, myIter,myThid )
229ac9feb6 Jean*0204 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm(1-OLx,1-OLy,1,1,1,2),
92e77d50bf Jean*0205 & nj+j, myIter,myThid )
0206 nj = 3*j
0207 CALL READ_REC_3D_RL( fn, fp, Nr, salt, nj+1, myIter,myThid )
229ac9feb6 Jean*0208 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm(1-OLx,1-OLy,1,1,1,1),
92e77d50bf Jean*0209 & nj+2, myIter,myThid )
229ac9feb6 Jean*0210 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm(1-OLx,1-OLy,1,1,1,2),
92e77d50bf Jean*0211 & nj+j, myIter,myThid )
0212 nj = 4*j
0213 #else /* ALLOW_ADAMSBASHFORTH_3 */
0214 CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
0215 CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 2, myIter,myThid )
0216 CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 3, myIter,myThid )
0217 CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 4, myIter,myThid )
0218 CALL READ_REC_3D_RL( fn, fp, Nr, theta, 5, myIter,myThid )
0219 CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 6, myIter,myThid )
0220 CALL READ_REC_3D_RL( fn, fp, Nr, salt, 7, myIter,myThid )
0221 CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1, 8, myIter,myThid )
0222 nj = 8
0223 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0224 CALL READ_REC_3D_RL( fn,fp,1, etaN, nj*Nr+1, myIter,myThid )
d6ed4854d6 Jean*0225 IF ( exactConserv ) THEN
92e77d50bf Jean*0226 CALL READ_REC_3D_RL(fn,fp,1,dEtaHdt,nj*Nr+2,myIter,myThid )
0227 ENDIF
d6ed4854d6 Jean*0228 IF ( nonlinFreeSurf.GT.0 ) THEN
92e77d50bf Jean*0229 CALL READ_REC_3D_RL(fn,fp,1, etaH, nj*Nr+3, myIter,myThid )
0230 ENDIF
0231 ENDIF
0232
901f12b7bc Jean*0233 IF ( storePhiHyd4Phys ) THEN
92e77d50bf Jean*0234 WRITE(fn,'(A,A10)') 'pickup_ph.',suff
0235 CALL READ_REC_3D_RL( fn, fp, Nr, totPhiHyd,1,myIter,myThid )
c3be04357d Jean*0236 ENDIF
92e77d50bf Jean*0237 #ifdef ALLOW_NONHYDROSTATIC
c3be04357d Jean*0238 IF ( use3Dsolver ) THEN
92e77d50bf Jean*0239 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
0240 CALL READ_REC_3D_RL( fn, fp, Nr, phi_nh, 1, myIter,myThid )
cba4501825 Jean*0241 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0242 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,1),
cba4501825 Jean*0243 & 2, myIter,myThid )
229ac9feb6 Jean*0244 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,2),
cba4501825 Jean*0245 & 2, myIter,myThid )
0246 #else /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0247 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm1, 2, myIter,myThid )
cba4501825 Jean*0248 #endif /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0249 ENDIF
cba4501825 Jean*0250 #endif /* ALLOW_NONHYDROSTATIC */
d6ed4854d6 Jean*0251 ELSE
0252
0253 nj = 0
0254
0255 CALL READ_MFLDS_3D_RL( 'Uvel ', uVel,
0256 & nj, fp, Nr, myIter, myThid )
0257 CALL READ_MFLDS_3D_RL( 'Vvel ', vVel,
0258 & nj, fp, Nr, myIter, myThid )
eda0e8da44 Mich*0259 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0260 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0261 CALL READ_MFLDS_3D_RL( 'UEulerM ', uEulerMean,
bcc58d6972 Mich*0262 & nj, fp, Nr, myIter, myThid )
fd6656ef94 Jean*0263 CALL READ_MFLDS_3D_RL( 'VEulerM ', vEulerMean,
bcc58d6972 Mich*0264 & nj, fp, Nr, myIter, myThid )
0265 ENDIF
0266 #endif
d6ed4854d6 Jean*0267 CALL READ_MFLDS_3D_RL( 'Theta ', theta,
0268 & nj, fp, Nr, myIter, myThid )
0269 CALL READ_MFLDS_3D_RL( 'Salt ', salt,
0270 & nj, fp, Nr, myIter, myThid )
0271
0272 #ifdef ALLOW_ADAMSBASHFORTH_3
fdf5fb6af0 Jean*0273
d6ed4854d6 Jean*0274 m1 = 1 + MOD(myIter+1,2)
0275 m2 = 1 + MOD( myIter ,2)
04b6a7043d Jean*0276 IF ( momStepping ) THEN
d6ed4854d6 Jean*0277
0278 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0279 CALL READ_MFLDS_3D_RL( 'GuNm1 ',guNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0280 & nj, fp, Nr, myIter, myThid )
0281 ENDIF
0282 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0283 CALL READ_MFLDS_3D_RL( 'GuNm2 ',guNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0284 & nj, fp, Nr, myIter, myThid )
0285 ENDIF
0286
0287 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0288 CALL READ_MFLDS_3D_RL( 'GvNm1 ',gvNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0289 & nj, fp, Nr, myIter, myThid )
0290 ENDIF
0291 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0292 CALL READ_MFLDS_3D_RL( 'GvNm2 ',gvNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0293 & nj, fp, Nr, myIter, myThid )
0294 ENDIF
04b6a7043d Jean*0295 ENDIF
d6ed4854d6 Jean*0296
0297 IF ( AdamsBashforthGt ) THEN
0298 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0299 CALL READ_MFLDS_3D_RL( 'GtNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0300 & nj, fp, Nr, myIter, myThid )
0301 ENDIF
0302 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0303 CALL READ_MFLDS_3D_RL( 'GtNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0304 & nj, fp, Nr, myIter, myThid )
0305 ENDIF
0306 ELSEIF ( AdamsBashforth_T ) THEN
0307 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0308 CALL READ_MFLDS_3D_RL( 'TempNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0309 & nj, fp, Nr, myIter, myThid )
0310 ENDIF
0311 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0312 CALL READ_MFLDS_3D_RL( 'TempNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0313 & nj, fp, Nr, myIter, myThid )
0314 ENDIF
0315 ENDIF
0316
0317 IF ( AdamsBashforthGs ) THEN
0318 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0319 CALL READ_MFLDS_3D_RL( 'GsNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0320 & nj, fp, Nr, myIter, myThid )
0321 ENDIF
0322 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0323 CALL READ_MFLDS_3D_RL( 'GsNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0324 & nj, fp, Nr, myIter, myThid )
0325 ENDIF
0326 ELSEIF ( AdamsBashforth_S ) THEN
0327 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0328 CALL READ_MFLDS_3D_RL( 'SaltNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0329 & nj, fp, Nr, myIter, myThid )
0330 ENDIF
0331 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0332 CALL READ_MFLDS_3D_RL( 'SaltNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0333 & nj, fp, Nr, myIter, myThid )
0334 ENDIF
0335 ENDIF
cba4501825 Jean*0336 #ifdef ALLOW_NONHYDROSTATIC
0337 IF ( nonHydrostatic ) THEN
0338
0339 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0340 CALL READ_MFLDS_3D_RL( 'GwNm1 ',gwNm(1-OLx,1-OLy,1,1,1,m1),
cba4501825 Jean*0341 & nj, fp, Nr, myIter, myThid )
0342 ENDIF
0343 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0344 CALL READ_MFLDS_3D_RL( 'GwNm2 ',gwNm(1-OLx,1-OLy,1,1,1,m2),
cba4501825 Jean*0345 & nj, fp, Nr, myIter, myThid )
0346 ENDIF
0347 ENDIF
0348 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0349 #ifdef ALLOW_QHYD_STAGGER_TS
0350
0351 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0352 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
0353 CALL READ_MFLDS_3D_RL( 'QH_GwNm1',
0354 O QHydGwNm(1-OLx,1-OLy,1,1,1,m1),
0355 I nj, fp, Nr, myIter, myThid )
0356 ENDIF
0357 IF ( beta_AB.NE.0. ) THEN
0358 CALL READ_MFLDS_3D_RL( 'QH_GwNm2',
0359 O QHydGwNm(1-OLx,1-OLy,1,1,1,m2),
0360 I nj, fp, Nr, myIter, myThid )
0361 ENDIF
0362 ENDIF
0363 #endif /* ALLOW_QHYD_STAGGER_TS */
0364
d6ed4854d6 Jean*0365 #else /* ALLOW_ADAMSBASHFORTH_3 */
04b6a7043d Jean*0366 IF ( momStepping ) THEN
d6ed4854d6 Jean*0367
0368 CALL READ_MFLDS_3D_RL( 'GuNm1 ', guNm1,
0369 & nj, fp, Nr, myIter, myThid )
0370
0371 CALL READ_MFLDS_3D_RL( 'GvNm1 ', gvNm1,
0372 & nj, fp, Nr, myIter, myThid )
04b6a7043d Jean*0373 ENDIF
d6ed4854d6 Jean*0374
0375 IF ( AdamsBashforthGt ) THEN
0376 CALL READ_MFLDS_3D_RL( 'GtNm1 ', gtNm1,
0377 & nj, fp, Nr, myIter, myThid )
b4f60a0901 Jean*0378 ELSEIF ( AdamsBashforth_T ) THEN
0379 CALL READ_MFLDS_3D_RL( 'TempNm1 ', gtNm1,
0380 & nj, fp, Nr, myIter, myThid )
d6ed4854d6 Jean*0381 ENDIF
0382
0383 IF ( AdamsBashforthGs ) THEN
0384 CALL READ_MFLDS_3D_RL( 'GsNm1 ', gsNm1,
0385 & nj, fp, Nr, myIter, myThid )
b4f60a0901 Jean*0386 ELSEIF ( AdamsBashforth_S ) THEN
0387 CALL READ_MFLDS_3D_RL( 'SaltNm1 ', gsNm1,
0388 & nj, fp, Nr, myIter, myThid )
d6ed4854d6 Jean*0389 ENDIF
cba4501825 Jean*0390 #ifdef ALLOW_NONHYDROSTATIC
0391 IF ( nonHydrostatic ) THEN
0392 CALL READ_MFLDS_3D_RL( 'GwNm1 ', gwNm1,
0393 & nj, fp, Nr, myIter, myThid )
0394 ENDIF
0395 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0396 #ifdef ALLOW_QHYD_STAGGER_TS
0397
0398 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0399 CALL READ_MFLDS_3D_RL( 'QH_GwNm1', QHydGwNm,
0400 & nj, fp, Nr, myIter, myThid )
0401 ENDIF
0402 #endif /* ALLOW_QHYD_STAGGER_TS */
0403
d6ed4854d6 Jean*0404 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0405
0406
901f12b7bc Jean*0407 IF ( storePhiHyd4Phys ) THEN
d6ed4854d6 Jean*0408 CALL READ_MFLDS_3D_RL( 'PhiHyd ', totPhiHyd,
0409 & nj, fp, Nr, myIter, myThid )
0410 ENDIF
0411 #ifdef ALLOW_NONHYDROSTATIC
0412 IF ( use3Dsolver ) THEN
0413 CALL READ_MFLDS_3D_RL( 'Phi_NHyd', phi_nh,
0414 & nj, fp, Nr, myIter, myThid )
0415 ENDIF
cba4501825 Jean*0416 #endif /* ALLOW_NONHYDROSTATIC */
2d5bb917cc Jean*0417 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
0418
0419
0420
0421 IF ( smag3D_diffCoeff.GT.zeroRL
0422 & .AND. .NOT.staggerTimeStep ) THEN
0423 CALL READ_MFLDS_3D_RL( 'SmagDiff', smag3D_diffK,
0424 & nj, fp, Nr, myIter, myThid )
0425 ENDIF
0426 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
d2a11ab670 Jean*0427 #ifdef ALLOW_ADDFLUID
0428
0429 IF ( selectAddFluid.GE.1 ) THEN
0430 CALL READ_MFLDS_3D_RL( 'AddMass ', addMass,
0431 & nj, fp, Nr, myIter, myThid )
0432 ENDIF
0433 #endif /* ALLOW_ADDFLUID */
fd6656ef94 Jean*0434 #ifdef ALLOW_FRICTION_HEATING
0435
0436 IF ( addFrictionHeating .AND. .NOT.staggerTimeStep ) THEN
0437 CALL READ_MFLDS_LEV_RS( 'FricHeat', frictionHeating,
0438 & nj, fp, Nr, 1, Nr, myIter, myThid )
0439 ENDIF
0440 #endif /* ALLOW_FRICTION_HEATING */
d6ed4854d6 Jean*0441
0442
0443 nj = nj*Nr
0444 CALL READ_MFLDS_3D_RL( 'EtaN ', etaN,
0445 & nj, fp, 1 , myIter, myThid )
0320e25227 Mart*0446 IF ( usingPCoords .AND. useSEAICE ) THEN
0447 CALL READ_MFLDS_3D_RL( 'Phi_rLow', phiHydLow,
0448 & nj, fp, 1 , myIter, myThid )
0449 ENDIF
cba4501825 Jean*0450 #ifdef ALLOW_NONHYDROSTATIC
0451 IF ( selectNHfreeSurf.GE.1 ) THEN
0452 CALL READ_MFLDS_3D_RL( 'dPhiNH ', dPhiNH,
0453 & nj, fp, 1 , myIter, myThid )
0454 ENDIF
0455 #endif /* ALLOW_NONHYDROSTATIC */
d6ed4854d6 Jean*0456 IF ( exactConserv ) THEN
0457 CALL READ_MFLDS_3D_RL( 'dEtaHdt ', dEtaHdt,
0458 & nj, fp, 1 , myIter, myThid )
0459 ENDIF
0460 IF ( nonlinFreeSurf.GT.0 ) THEN
0461 CALL READ_MFLDS_3D_RL( 'EtaH ', etaH,
0462 & nj, fp, 1 , myIter, myThid )
0463 ENDIF
0464
0465 ENDIF
0466
0467
0468 nMissing = missFldDim
0469 CALL READ_MFLDS_CHECK(
0470 O missFldList,
0471 U nMissing,
0472 I myIter, myThid )
0473 IF ( nMissing.GT.missFldDim ) THEN
0474 WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
0475 & 'missing fields list has been truncated to', missFldDim
0476 CALL PRINT_ERROR( msgBuf, myThid )
0477 STOP 'ABNORMAL END: S/R READ_PICKUP (list-size Pb)'
0478 ENDIF
0479 CALL CHECK_PICKUP(
0480 I missFldList,
0481 I nMissing, nbFields,
0482 I myIter, myThid )
92e77d50bf Jean*0483
d6ed4854d6 Jean*0484
92e77d50bf Jean*0485 ENDIF
0486
0487 #ifdef ALLOW_MNC
0488 IF (useMNC .AND. pickup_read_mnc) THEN
0489 WRITE(fn,'(A)') 'pickup'
0490 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
0491 CALL MNC_CW_SET_UDIM(fn, 1, myThid)
0492 CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
0493 CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
0494 CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
eda0e8da44 Mich*0495 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0496 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0497 CALL MNC_CW_RL_R('D',fn,0,0,'UEulerM',uEulerMean, myThid)
0498 CALL MNC_CW_RL_R('D',fn,0,0,'VEulerM',vEulerMean, myThid)
bcc58d6972 Mich*0499 ENDIF
0500 #endif
92e77d50bf Jean*0501 CALL MNC_CW_RL_R('D',fn,0,0,'Temp',theta, myThid)
0502 CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
0503 CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
0504 #ifndef ALLOW_ADAMSBASHFORTH_3
0505 CALL MNC_CW_RL_R('D',fn,0,0,'gUnm1',guNm1, myThid)
0506 CALL MNC_CW_RL_R('D',fn,0,0,'gVnm1',gvNm1, myThid)
0507 CALL MNC_CW_RL_R('D',fn,0,0,'gTnm1',gtNm1, myThid)
0508 CALL MNC_CW_RL_R('D',fn,0,0,'gSnm1',gsNm1, myThid)
0509 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0510
0511
0512
0513
0514 IF (exactConserv) THEN
0515 CALL MNC_CW_RL_R('D',fn,0,0,'dEtaHdt',dEtaHdt,myThid)
0516 ENDIF
0517 IF (nonlinFreeSurf .GT. 0) THEN
0518 CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
0519 ENDIF
0520 #ifdef ALLOW_NONHYDROSTATIC
0521 IF (use3Dsolver) THEN
0522 CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
0523
cba4501825 Jean*0524 #ifndef ALLOW_ADAMSBASHFORTH_3
92e77d50bf Jean*0525 CALL MNC_CW_RL_R('D',fn,0,0,'gWnm1', gwNm1, myThid)
cba4501825 Jean*0526 #endif
92e77d50bf Jean*0527 ENDIF
c3be04357d Jean*0528 #endif /* ALLOW_NONHYDROSTATIC */
901f12b7bc Jean*0529 IF ( storePhiHyd4Phys ) THEN
92e77d50bf Jean*0530 CALL MNC_CW_RL_R('D',fn,0,0,'phiHyd',totPhiHyd,myThid)
0531 ENDIF
0532 ENDIF
0533 #endif /* ALLOW_MNC */
0534
0535
0536
0537
0538 CALL EXCH_UV_3D_RL( uVel, vVel, .TRUE., Nr, myThid )
eda0e8da44 Mich*0539 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0540 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0541 CALL EXCH_UV_3D_RL( uEulerMean, vEulerMean, .TRUE., Nr, myThid )
bcc58d6972 Mich*0542 ENDIF
0543 #endif
92e77d50bf Jean*0544 CALL EXCH_3D_RL( theta, Nr, myThid )
0545 CALL EXCH_3D_RL( salt, Nr, myThid )
0546 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0547 CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,1),
0548 & gvNm(1-OLx,1-OLy,1,1,1,1),.TRUE.,Nr,myThid )
0549 CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,2),
0550 & gvNm(1-OLx,1-OLy,1,1,1,2),.TRUE.,Nr,myThid )
0551 CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0552 CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
0553 CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0554 CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
92e77d50bf Jean*0555 #else /* ALLOW_ADAMSBASHFORTH_3 */
0556 CALL EXCH_UV_3D_RL( guNm1, gvNm1, .TRUE., Nr, myThid )
0557 CALL EXCH_3D_RL( gtNm1, Nr, myThid )
0558 CALL EXCH_3D_RL( gsNm1, Nr, myThid )
0559 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0560 CALL EXCH_XY_RL( etaN, myThid )
0561 CALL EXCH_XY_RL( etaH, myThid )
0562 CALL EXCH_XY_RL( detaHdt, myThid )
0563
901f12b7bc Jean*0564 IF ( storePhiHyd4Phys )
92e77d50bf Jean*0565 & CALL EXCH_3D_RL( totPhiHyd, Nr, myThid )
0320e25227 Mart*0566 IF ( usingPCoords .AND. useSEAICE )
0567 & CALL EXCH_XY_RL( phiHydLow, myThid )
92e77d50bf Jean*0568
0569 #ifdef ALLOW_NONHYDROSTATIC
0570 IF ( use3Dsolver ) THEN
0571 CALL EXCH_3D_RL( phi_nh, Nr, myThid )
cba4501825 Jean*0572 ENDIF
0573 IF ( nonHydrostatic ) THEN
0574 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0575 CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0576 CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
cba4501825 Jean*0577 #else /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0578 CALL EXCH_3D_RL( gwNm1, Nr, myThid )
cba4501825 Jean*0579 #endif /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0580 ENDIF
cba4501825 Jean*0581 IF ( selectNHfreeSurf.GE.1 ) THEN
0582 CALL EXCH_XY_RL( dPhiNH, myThid )
0583 ENDIF
0584 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0585 #ifdef ALLOW_QHYD_STAGGER_TS
0586 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0587 #ifdef ALLOW_ADAMSBASHFORTH_3
0588 CALL EXCH_3D_RL( QHydGwNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0589 CALL EXCH_3D_RL( QHydGwNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
0590 #else /* ALLOW_ADAMSBASHFORTH_3 */
0591 CALL EXCH_3D_RL( QHydGwNm, Nr, myThid )
0592 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0593 ENDIF
0594 #endif /* ALLOW_QHYD_STAGGER_TS */
92e77d50bf Jean*0595
0596 RETURN
0597 END