File indexing completed on 2021-08-12 05:11:02 UTC
view on githubraw file Latest commit 0320e252 on 2021-08-11 16:08:52 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 )
0225 #ifdef EXACT_CONSERV
d6ed4854d6 Jean*0226 IF ( exactConserv ) THEN
92e77d50bf Jean*0227 CALL READ_REC_3D_RL(fn,fp,1,dEtaHdt,nj*Nr+2,myIter,myThid )
0228 ENDIF
d6ed4854d6 Jean*0229 IF ( nonlinFreeSurf.GT.0 ) THEN
92e77d50bf Jean*0230 CALL READ_REC_3D_RL(fn,fp,1, etaH, nj*Nr+3, myIter,myThid )
0231 ENDIF
0232 #endif
0233 ENDIF
0234
901f12b7bc Jean*0235 IF ( storePhiHyd4Phys ) THEN
92e77d50bf Jean*0236 WRITE(fn,'(A,A10)') 'pickup_ph.',suff
0237 CALL READ_REC_3D_RL( fn, fp, Nr, totPhiHyd,1,myIter,myThid )
d6ed4854d6 Jean*0238 ENDIF
92e77d50bf Jean*0239 #ifdef ALLOW_NONHYDROSTATIC
d6ed4854d6 Jean*0240 IF ( use3Dsolver ) THEN
92e77d50bf Jean*0241 WRITE(fn,'(A,A10)') 'pickup_nh.',suff
0242 CALL READ_REC_3D_RL( fn, fp, Nr, phi_nh, 1, myIter,myThid )
cba4501825 Jean*0243 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0244 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,1),
cba4501825 Jean*0245 & 2, myIter,myThid )
229ac9feb6 Jean*0246 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm(1-OLx,1-OLy,1,1,1,2),
cba4501825 Jean*0247 & 2, myIter,myThid )
0248 #else /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0249 CALL READ_REC_3D_RL( fn, fp, Nr, gwNm1, 2, myIter,myThid )
cba4501825 Jean*0250 #endif /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0251 ENDIF
cba4501825 Jean*0252 #endif /* ALLOW_NONHYDROSTATIC */
d6ed4854d6 Jean*0253 ELSE
0254
0255 nj = 0
0256
0257 CALL READ_MFLDS_3D_RL( 'Uvel ', uVel,
0258 & nj, fp, Nr, myIter, myThid )
0259 CALL READ_MFLDS_3D_RL( 'Vvel ', vVel,
0260 & nj, fp, Nr, myIter, myThid )
eda0e8da44 Mich*0261 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0262 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0263 CALL READ_MFLDS_3D_RL( 'UEulerM ', uEulerMean,
bcc58d6972 Mich*0264 & nj, fp, Nr, myIter, myThid )
fd6656ef94 Jean*0265 CALL READ_MFLDS_3D_RL( 'VEulerM ', vEulerMean,
bcc58d6972 Mich*0266 & nj, fp, Nr, myIter, myThid )
0267 ENDIF
0268 #endif
d6ed4854d6 Jean*0269 CALL READ_MFLDS_3D_RL( 'Theta ', theta,
0270 & nj, fp, Nr, myIter, myThid )
0271 CALL READ_MFLDS_3D_RL( 'Salt ', salt,
0272 & nj, fp, Nr, myIter, myThid )
0273
0274 #ifdef ALLOW_ADAMSBASHFORTH_3
fdf5fb6af0 Jean*0275
d6ed4854d6 Jean*0276 m1 = 1 + MOD(myIter+1,2)
0277 m2 = 1 + MOD( myIter ,2)
04b6a7043d Jean*0278 IF ( momStepping ) THEN
d6ed4854d6 Jean*0279
0280 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0281 CALL READ_MFLDS_3D_RL( 'GuNm1 ',guNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0282 & nj, fp, Nr, myIter, myThid )
0283 ENDIF
0284 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0285 CALL READ_MFLDS_3D_RL( 'GuNm2 ',guNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0286 & nj, fp, Nr, myIter, myThid )
0287 ENDIF
0288
0289 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0290 CALL READ_MFLDS_3D_RL( 'GvNm1 ',gvNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0291 & nj, fp, Nr, myIter, myThid )
0292 ENDIF
0293 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0294 CALL READ_MFLDS_3D_RL( 'GvNm2 ',gvNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0295 & nj, fp, Nr, myIter, myThid )
0296 ENDIF
04b6a7043d Jean*0297 ENDIF
d6ed4854d6 Jean*0298
0299 IF ( AdamsBashforthGt ) THEN
0300 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0301 CALL READ_MFLDS_3D_RL( 'GtNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0302 & nj, fp, Nr, myIter, myThid )
0303 ENDIF
0304 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0305 CALL READ_MFLDS_3D_RL( 'GtNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0306 & nj, fp, Nr, myIter, myThid )
0307 ENDIF
0308 ELSEIF ( AdamsBashforth_T ) THEN
0309 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0310 CALL READ_MFLDS_3D_RL( 'TempNm1 ',gtNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0311 & nj, fp, Nr, myIter, myThid )
0312 ENDIF
0313 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0314 CALL READ_MFLDS_3D_RL( 'TempNm2 ',gtNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0315 & nj, fp, Nr, myIter, myThid )
0316 ENDIF
0317 ENDIF
0318
0319 IF ( AdamsBashforthGs ) THEN
0320 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0321 CALL READ_MFLDS_3D_RL( 'GsNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0322 & nj, fp, Nr, myIter, myThid )
0323 ENDIF
0324 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0325 CALL READ_MFLDS_3D_RL( 'GsNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0326 & nj, fp, Nr, myIter, myThid )
0327 ENDIF
0328 ELSEIF ( AdamsBashforth_S ) THEN
0329 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0330 CALL READ_MFLDS_3D_RL( 'SaltNm1 ',gsNm(1-OLx,1-OLy,1,1,1,m1),
d6ed4854d6 Jean*0331 & nj, fp, Nr, myIter, myThid )
0332 ENDIF
0333 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0334 CALL READ_MFLDS_3D_RL( 'SaltNm2 ',gsNm(1-OLx,1-OLy,1,1,1,m2),
d6ed4854d6 Jean*0335 & nj, fp, Nr, myIter, myThid )
0336 ENDIF
0337 ENDIF
cba4501825 Jean*0338 #ifdef ALLOW_NONHYDROSTATIC
0339 IF ( nonHydrostatic ) THEN
0340
0341 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0342 CALL READ_MFLDS_3D_RL( 'GwNm1 ',gwNm(1-OLx,1-OLy,1,1,1,m1),
cba4501825 Jean*0343 & nj, fp, Nr, myIter, myThid )
0344 ENDIF
0345 IF ( beta_AB.NE.0. ) THEN
229ac9feb6 Jean*0346 CALL READ_MFLDS_3D_RL( 'GwNm2 ',gwNm(1-OLx,1-OLy,1,1,1,m2),
cba4501825 Jean*0347 & nj, fp, Nr, myIter, myThid )
0348 ENDIF
0349 ENDIF
0350 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0351 #ifdef ALLOW_QHYD_STAGGER_TS
0352
0353 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0354 IF ( alph_AB.NE.0. .OR. beta_AB.NE.0. ) THEN
0355 CALL READ_MFLDS_3D_RL( 'QH_GwNm1',
0356 O QHydGwNm(1-OLx,1-OLy,1,1,1,m1),
0357 I nj, fp, Nr, myIter, myThid )
0358 ENDIF
0359 IF ( beta_AB.NE.0. ) THEN
0360 CALL READ_MFLDS_3D_RL( 'QH_GwNm2',
0361 O QHydGwNm(1-OLx,1-OLy,1,1,1,m2),
0362 I nj, fp, Nr, myIter, myThid )
0363 ENDIF
0364 ENDIF
0365 #endif /* ALLOW_QHYD_STAGGER_TS */
0366
d6ed4854d6 Jean*0367 #else /* ALLOW_ADAMSBASHFORTH_3 */
04b6a7043d Jean*0368 IF ( momStepping ) THEN
d6ed4854d6 Jean*0369
0370 CALL READ_MFLDS_3D_RL( 'GuNm1 ', guNm1,
0371 & nj, fp, Nr, myIter, myThid )
0372
0373 CALL READ_MFLDS_3D_RL( 'GvNm1 ', gvNm1,
0374 & nj, fp, Nr, myIter, myThid )
04b6a7043d Jean*0375 ENDIF
d6ed4854d6 Jean*0376
0377 IF ( AdamsBashforthGt ) THEN
0378 CALL READ_MFLDS_3D_RL( 'GtNm1 ', gtNm1,
0379 & nj, fp, Nr, myIter, myThid )
b4f60a0901 Jean*0380 ELSEIF ( AdamsBashforth_T ) THEN
0381 CALL READ_MFLDS_3D_RL( 'TempNm1 ', gtNm1,
0382 & nj, fp, Nr, myIter, myThid )
d6ed4854d6 Jean*0383 ENDIF
0384
0385 IF ( AdamsBashforthGs ) THEN
0386 CALL READ_MFLDS_3D_RL( 'GsNm1 ', gsNm1,
0387 & nj, fp, Nr, myIter, myThid )
b4f60a0901 Jean*0388 ELSEIF ( AdamsBashforth_S ) THEN
0389 CALL READ_MFLDS_3D_RL( 'SaltNm1 ', gsNm1,
0390 & nj, fp, Nr, myIter, myThid )
d6ed4854d6 Jean*0391 ENDIF
cba4501825 Jean*0392 #ifdef ALLOW_NONHYDROSTATIC
0393 IF ( nonHydrostatic ) THEN
0394 CALL READ_MFLDS_3D_RL( 'GwNm1 ', gwNm1,
0395 & nj, fp, Nr, myIter, myThid )
0396 ENDIF
0397 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0398 #ifdef ALLOW_QHYD_STAGGER_TS
0399
0400 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0401 CALL READ_MFLDS_3D_RL( 'QH_GwNm1', QHydGwNm,
0402 & nj, fp, Nr, myIter, myThid )
0403 ENDIF
0404 #endif /* ALLOW_QHYD_STAGGER_TS */
0405
d6ed4854d6 Jean*0406 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0407
0408
901f12b7bc Jean*0409 IF ( storePhiHyd4Phys ) THEN
d6ed4854d6 Jean*0410 CALL READ_MFLDS_3D_RL( 'PhiHyd ', totPhiHyd,
0411 & nj, fp, Nr, myIter, myThid )
0412 ENDIF
0413 #ifdef ALLOW_NONHYDROSTATIC
0414 IF ( use3Dsolver ) THEN
0415 CALL READ_MFLDS_3D_RL( 'Phi_NHyd', phi_nh,
0416 & nj, fp, Nr, myIter, myThid )
0417 ENDIF
cba4501825 Jean*0418 #endif /* ALLOW_NONHYDROSTATIC */
2d5bb917cc Jean*0419 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
0420
0421
0422
0423 IF ( smag3D_diffCoeff.GT.zeroRL
0424 & .AND. .NOT.staggerTimeStep ) THEN
0425 CALL READ_MFLDS_3D_RL( 'SmagDiff', smag3D_diffK,
0426 & nj, fp, Nr, myIter, myThid )
0427 ENDIF
0428 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
d2a11ab670 Jean*0429 #ifdef ALLOW_ADDFLUID
0430
0431 IF ( selectAddFluid.GE.1 ) THEN
0432 CALL READ_MFLDS_3D_RL( 'AddMass ', addMass,
0433 & nj, fp, Nr, myIter, myThid )
0434 ENDIF
0435 #endif /* ALLOW_ADDFLUID */
fd6656ef94 Jean*0436 #ifdef ALLOW_FRICTION_HEATING
0437
0438 IF ( addFrictionHeating .AND. .NOT.staggerTimeStep ) THEN
0439 CALL READ_MFLDS_LEV_RS( 'FricHeat', frictionHeating,
0440 & nj, fp, Nr, 1, Nr, myIter, myThid )
0441 ENDIF
0442 #endif /* ALLOW_FRICTION_HEATING */
d6ed4854d6 Jean*0443
0444
0445 nj = nj*Nr
0446 CALL READ_MFLDS_3D_RL( 'EtaN ', etaN,
0447 & nj, fp, 1 , myIter, myThid )
0320e25227 Mart*0448 IF ( usingPCoords .AND. useSEAICE ) THEN
0449 CALL READ_MFLDS_3D_RL( 'Phi_rLow', phiHydLow,
0450 & nj, fp, 1 , myIter, myThid )
0451 ENDIF
cba4501825 Jean*0452 #ifdef ALLOW_NONHYDROSTATIC
0453 IF ( selectNHfreeSurf.GE.1 ) THEN
0454 CALL READ_MFLDS_3D_RL( 'dPhiNH ', dPhiNH,
0455 & nj, fp, 1 , myIter, myThid )
0456 ENDIF
0457 #endif /* ALLOW_NONHYDROSTATIC */
d6ed4854d6 Jean*0458 #ifdef EXACT_CONSERV
0459 IF ( exactConserv ) THEN
0460 CALL READ_MFLDS_3D_RL( 'dEtaHdt ', dEtaHdt,
0461 & nj, fp, 1 , myIter, myThid )
0462 ENDIF
0463 IF ( nonlinFreeSurf.GT.0 ) THEN
0464 CALL READ_MFLDS_3D_RL( 'EtaH ', etaH,
0465 & nj, fp, 1 , myIter, myThid )
0466 ENDIF
cba4501825 Jean*0467 #endif /* EXACT_CONSERV */
d6ed4854d6 Jean*0468
0469 ENDIF
0470
0471
0472 nMissing = missFldDim
0473 CALL READ_MFLDS_CHECK(
0474 O missFldList,
0475 U nMissing,
0476 I myIter, myThid )
0477 IF ( nMissing.GT.missFldDim ) THEN
0478 WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
0479 & 'missing fields list has been truncated to', missFldDim
0480 CALL PRINT_ERROR( msgBuf, myThid )
0481 STOP 'ABNORMAL END: S/R READ_PICKUP (list-size Pb)'
0482 ENDIF
0483 CALL CHECK_PICKUP(
0484 I missFldList,
0485 I nMissing, nbFields,
0486 I myIter, myThid )
92e77d50bf Jean*0487
d6ed4854d6 Jean*0488
92e77d50bf Jean*0489 ENDIF
0490
0491 #ifdef ALLOW_MNC
0492 IF (useMNC .AND. pickup_read_mnc) THEN
0493 WRITE(fn,'(A)') 'pickup'
0494 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
0495 CALL MNC_CW_SET_UDIM(fn, 1, myThid)
0496 CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
0497 CALL MNC_CW_RL_R('D',fn,0,0,'U',uVel, myThid)
0498 CALL MNC_CW_RL_R('D',fn,0,0,'V',vVel, myThid)
eda0e8da44 Mich*0499 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0500 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0501 CALL MNC_CW_RL_R('D',fn,0,0,'UEulerM',uEulerMean, myThid)
0502 CALL MNC_CW_RL_R('D',fn,0,0,'VEulerM',vEulerMean, myThid)
bcc58d6972 Mich*0503 ENDIF
0504 #endif
92e77d50bf Jean*0505 CALL MNC_CW_RL_R('D',fn,0,0,'Temp',theta, myThid)
0506 CALL MNC_CW_RL_R('D',fn,0,0,'S',salt, myThid)
0507 CALL MNC_CW_RL_R('D',fn,0,0,'Eta',etaN, myThid)
0508 #ifndef ALLOW_ADAMSBASHFORTH_3
0509 CALL MNC_CW_RL_R('D',fn,0,0,'gUnm1',guNm1, myThid)
0510 CALL MNC_CW_RL_R('D',fn,0,0,'gVnm1',gvNm1, myThid)
0511 CALL MNC_CW_RL_R('D',fn,0,0,'gTnm1',gtNm1, myThid)
0512 CALL MNC_CW_RL_R('D',fn,0,0,'gSnm1',gsNm1, myThid)
0513 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0514
0515
0516
0517
0518 #ifdef EXACT_CONSERV
0519 IF (exactConserv) THEN
0520 CALL MNC_CW_RL_R('D',fn,0,0,'dEtaHdt',dEtaHdt,myThid)
0521 ENDIF
0522 IF (nonlinFreeSurf .GT. 0) THEN
0523 CALL MNC_CW_RL_R('D',fn,0,0,'EtaH', etaH, myThid)
0524 ENDIF
0525 #endif
0526 #ifdef ALLOW_NONHYDROSTATIC
0527 IF (use3Dsolver) THEN
0528 CALL MNC_CW_RL_R('D',fn,0,0,'phi_nh', phi_nh, myThid)
0529
cba4501825 Jean*0530 #ifndef ALLOW_ADAMSBASHFORTH_3
92e77d50bf Jean*0531 CALL MNC_CW_RL_R('D',fn,0,0,'gWnm1', gwNm1, myThid)
cba4501825 Jean*0532 #endif
92e77d50bf Jean*0533 ENDIF
0534 #endif
901f12b7bc Jean*0535 IF ( storePhiHyd4Phys ) THEN
92e77d50bf Jean*0536 CALL MNC_CW_RL_R('D',fn,0,0,'phiHyd',totPhiHyd,myThid)
0537 ENDIF
0538 ENDIF
0539 #endif /* ALLOW_MNC */
0540
0541
0542
0543
0544 CALL EXCH_UV_3D_RL( uVel, vVel, .TRUE., Nr, myThid )
eda0e8da44 Mich*0545 #if defined(ALLOW_EDDYPSI) && defined(ALLOW_GMREDI)
bcc58d6972 Mich*0546 IF (GM_InMomAsStress) THEN
fd6656ef94 Jean*0547 CALL EXCH_UV_3D_RL( uEulerMean, vEulerMean, .TRUE., Nr, myThid )
bcc58d6972 Mich*0548 ENDIF
0549 #endif
92e77d50bf Jean*0550 CALL EXCH_3D_RL( theta, Nr, myThid )
0551 CALL EXCH_3D_RL( salt, Nr, myThid )
0552 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0553 CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,1),
0554 & gvNm(1-OLx,1-OLy,1,1,1,1),.TRUE.,Nr,myThid )
0555 CALL EXCH_UV_3D_RL( guNm(1-OLx,1-OLy,1,1,1,2),
0556 & gvNm(1-OLx,1-OLy,1,1,1,2),.TRUE.,Nr,myThid )
0557 CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0558 CALL EXCH_3D_RL( gtNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
0559 CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0560 CALL EXCH_3D_RL( gsNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
92e77d50bf Jean*0561 #else /* ALLOW_ADAMSBASHFORTH_3 */
0562 CALL EXCH_UV_3D_RL( guNm1, gvNm1, .TRUE., Nr, myThid )
0563 CALL EXCH_3D_RL( gtNm1, Nr, myThid )
0564 CALL EXCH_3D_RL( gsNm1, Nr, myThid )
0565 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0566 CALL EXCH_XY_RL( etaN, myThid )
0567 CALL EXCH_XY_RL( etaH, myThid )
0568 #ifdef EXACT_CONSERV
0569 CALL EXCH_XY_RL( detaHdt, myThid )
0570 #endif
0571
901f12b7bc Jean*0572 IF ( storePhiHyd4Phys )
92e77d50bf Jean*0573 & CALL EXCH_3D_RL( totPhiHyd, Nr, myThid )
0320e25227 Mart*0574 IF ( usingPCoords .AND. useSEAICE )
0575 & CALL EXCH_XY_RL( phiHydLow, myThid )
92e77d50bf Jean*0576
0577 #ifdef ALLOW_NONHYDROSTATIC
0578 IF ( use3Dsolver ) THEN
0579 CALL EXCH_3D_RL( phi_nh, Nr, myThid )
cba4501825 Jean*0580 ENDIF
0581 IF ( nonHydrostatic ) THEN
0582 #ifdef ALLOW_ADAMSBASHFORTH_3
229ac9feb6 Jean*0583 CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0584 CALL EXCH_3D_RL( gwNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
cba4501825 Jean*0585 #else /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0586 CALL EXCH_3D_RL( gwNm1, Nr, myThid )
cba4501825 Jean*0587 #endif /* ALLOW_ADAMSBASHFORTH_3 */
92e77d50bf Jean*0588 ENDIF
cba4501825 Jean*0589 IF ( selectNHfreeSurf.GE.1 ) THEN
0590 CALL EXCH_XY_RL( dPhiNH, myThid )
0591 ENDIF
0592 #endif /* ALLOW_NONHYDROSTATIC */
fdf5fb6af0 Jean*0593 #ifdef ALLOW_QHYD_STAGGER_TS
0594 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0595 #ifdef ALLOW_ADAMSBASHFORTH_3
0596 CALL EXCH_3D_RL( QHydGwNm(1-OLx,1-OLy,1,1,1,1), Nr, myThid )
0597 CALL EXCH_3D_RL( QHydGwNm(1-OLx,1-OLy,1,1,1,2), Nr, myThid )
0598 #else /* ALLOW_ADAMSBASHFORTH_3 */
0599 CALL EXCH_3D_RL( QHydGwNm, Nr, myThid )
0600 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0601 ENDIF
0602 #endif /* ALLOW_QHYD_STAGGER_TS */
92e77d50bf Jean*0603
0604 RETURN
0605 END