File indexing completed on 2026-09-07 05:08:31 UTC
view on githubraw file Latest commit d861cd50 on 2026-09-06 15:41:07 UTC
cf5b5345a0 Jean*0001 #include "CHEAPAML_OPTIONS.h"
93e0447b06 Jean*0002
cf5b5345a0 Jean*0003
0004
0005 SUBROUTINE CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
0006
93e0447b06 Jean*0007
0008
cf5b5345a0 Jean*0009
0010
0011
0012 IMPLICIT NONE
0013
0014 #include "SIZE.h"
0015 #include "EEPARAMS.h"
0016 #include "PARAMS.h"
0017 #include "FFIELDS.h"
0018 #include "CHEAPAML.h"
93e0447b06 Jean*0019
cf5b5345a0 Jean*0020
d0842ebedb Jean*0021
0022
0023
cf5b5345a0 Jean*0024 _RL myTime
0025 INTEGER myIter
d0842ebedb Jean*0026 INTEGER myThid
93e0447b06 Jean*0027
cf5b5345a0 Jean*0028
d0842ebedb Jean*0029
0030
0031
0032
7c3371c654 Jean*0033
0034
0035
0036
d0842ebedb Jean*0037
0038
d861cd501f Jean*0039
0040
0041
0042
ffe44ab22b Jean*0043
ced0783fba Jean*0044
d861cd501f Jean*0045 COMMON /CHEAPAML_FIELDS/
ced0783fba Jean*0046 & trair0, trair1,
0047 & qrair0, qrair1,
0048 & Solar0, Solar1,
7c3371c654 Jean*0049 & uWind0, uWind1,
0050 & vWind0, vWind1,
ced0783fba Jean*0051 & ustress0, ustress1,
0052 & vstress0, vstress1,
0053 & wavesh0, wavesh1,
0054 & wavesp0, wavesp1,
7c3371c654 Jean*0055
cf6b9ab292 Brun*0056 & CheaptracerR0, CheaptracerR1,
0057 & cheaph0, cheaph1,
0312857000 Jean*0058 & cheapcl0, cheapcl1,
0059 & cheaplw0, cheaplw1,
0060 & cheappr0, cheappr1
ffe44ab22b Jean*0061
ced0783fba Jean*0062 _RL trair0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0063 _RL trair1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0064 _RL qrair0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0065 _RL qrair1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0066 _RL Solar0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0067 _RL Solar1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7c3371c654 Jean*0068 _RL uWind0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0069 _RL uWind1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0070 _RL vWind0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0071 _RL vWind1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
ced0783fba Jean*0072 _RL ustress0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0073 _RL ustress1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0074 _RL vstress0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0075 _RL vstress1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0076 _RL wavesh0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0077 _RL wavesh1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0078 _RL wavesp0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0079 _RL wavesp1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7c3371c654 Jean*0080
0081
51132e5783 Nico*0082 _RL CheaptracerR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0083 _RL CheaptracerR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
cf6b9ab292 Brun*0084 _RL cheaph0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0085 _RL cheaph1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0086 _RL cheapcl0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0087 _RL cheapcl1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0088 _RL cheaplw0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0089 _RL cheaplw1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0090 _RL cheappr0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0091 _RL cheappr1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
cf5b5345a0 Jean*0092
d0842ebedb Jean*0093
0094
0bcb68cc3c Jean*0095 _RL aWght, bWght
d0842ebedb Jean*0096
0097 INTEGER bi, bj
0098 INTEGER i, j, iG, jG
0099 INTEGER intimeP, intime0, intime1
0bcb68cc3c Jean*0100 _RL recipNym1, local, u, ssqa
cf5b5345a0 Jean*0101
d0842ebedb Jean*0102 recipNym1 = Ny - 1
0103 IF ( Ny.GT.1 ) recipNym1 = 1. _d 0 / recipNym1
4fa4901be6 Nico*0104
d0842ebedb Jean*0105 IF ( periodicExternalForcing_cheap ) THEN
cf5b5345a0 Jean*0106
d0842ebedb Jean*0107
0108
0109
0110
0111
0112
cf5b5345a0 Jean*0113
d0842ebedb Jean*0114 IF ( useStressOption ) THEN
0115 WRITE(*,*)' stress option is turned on. this is not ',
cf6b9ab292 Brun*0116 & 'consistent with the default time dependent forcing option'
d0842ebedb Jean*0117 STOP
ced0783fba Jean*0118 ENDIF
0119
d0842ebedb Jean*0120
ced0783fba Jean*0121
d0842ebedb Jean*0122 IF ( myIter .EQ. nIter0 ) THEN
0123 DO bj = myByLo(myThid), myByHi(myThid)
0124 DO bi = myBxLo(myThid), myBxHi(myThid)
0125 DO j=1-OLy,sNy+OLy
0126 DO i=1-OLx,sNx+OLx
0127 trair0 (i,j,bi,bj) = 0.
0128 trair1 (i,j,bi,bj) = 0.
0129 qrair0 (i,j,bi,bj) = 0.
0130 qrair1 (i,j,bi,bj) = 0.
0131 solar0 (i,j,bi,bj) = 0.
0132 solar1 (i,j,bi,bj) = 0.
7c3371c654 Jean*0133 uWind0 (i,j,bi,bj) = 0.
0134 uWind1 (i,j,bi,bj) = 0.
0135 vWind0 (i,j,bi,bj) = 0.
0136 vWind1 (i,j,bi,bj) = 0.
d0842ebedb Jean*0137 cheaph0 (i,j,bi,bj) = 0.
0138 cheaph1 (i,j,bi,bj) = 0.
0139 cheapcl0(i,j,bi,bj) = 0.5
0140 cheapcl1(i,j,bi,bj) = 0.5
0141 cheaplw0(i,j,bi,bj) = 0.
0142 cheaplw1(i,j,bi,bj) = 0.
cf6b9ab292 Brun*0143 cheappr0(i,j,bi,bj) = 0.
0144 cheappr1(i,j,bi,bj) = 0.
d0842ebedb Jean*0145 ustress0(i,j,bi,bj) = 0.
0146 ustress1(i,j,bi,bj) = 0.
0147 vstress0(i,j,bi,bj) = 0.
0148 vstress1(i,j,bi,bj) = 0.
0149 wavesh0 (i,j,bi,bj) = 0.
0150 wavesh1 (i,j,bi,bj) = 0.
0151 wavesp0 (i,j,bi,bj) = 0.
0152 wavesp1 (i,j,bi,bj) = 0.
7c3371c654 Jean*0153
0154
d0842ebedb Jean*0155 CheaptracerR0 (i,j,bi,bj) = 0.
0156 CheaptracerR1 (i,j,bi,bj) = 0.
0157 ENDDO
47339ef480 Jean*0158 ENDDO
0159 ENDDO
cf5b5345a0 Jean*0160 ENDDO
d0842ebedb Jean*0161 ENDIF
0162
0163
0164 CALL GET_PERIODIC_INTERVAL(
0165 O intimeP, intime0, intime1, bWght, aWght,
0166 I externForcingCycle_cheap, externForcingPeriod_cheap,
d861cd501f Jean*0167 I deltaTClock, myTime, myThid )
cf5b5345a0 Jean*0168
d0842ebedb Jean*0169 IF ( intime0.NE.intimeP .OR. myIter.EQ.nIter0 ) THEN
2616d73cb2 Nico*0170
0171
0172
d0842ebedb Jean*0173 WRITE(*,*) 'S/R CHEAPAML_FIELDS_LOAD'
0174 IF ( SolarFile .NE. ' ' ) THEN
0175 CALL READ_REC_XY_RL( SolarFile,solar0,intime0,
0176 & myIter, myThid )
0177 CALL READ_REC_XY_RL( SolarFile,solar1,intime1,
0178 & myIter, myThid )
cf6b9ab292 Brun*0179 ELSE
0180 DO bj = myByLo(myThid), myByHi(myThid)
0181 DO bi = myBxLo(myThid), myBxHi(myThid)
0182 DO j=1,sNy
0183 DO i=1,sNx
0184 Solar(i,j,bi,bj) = 0.0 _d 0
0185 ENDDO
0186 ENDDO
0187 ENDDO
0188 ENDDO
0189 _EXCH_XY_RL( solar, myThid )
0190
0191 ENDIF
d0842ebedb Jean*0192 IF ( TrFile .NE. ' ' ) THEN
0193 CALL READ_REC_XY_RL( TRFile,trair0,intime0,
0194 & myIter, myThid )
0195 CALL READ_REC_XY_RL( TRFile,trair1,intime1,
0196 & myIter, myThid )
cf6b9ab292 Brun*0197 ELSE
0198 DO bj = myByLo(myThid), myByHi(myThid)
0199 DO bi = myBxLo(myThid), myBxHi(myThid)
0200 DO j=1,sNy
0201 DO i=1,sNx
0202 TR(i,j,bi,bj) = 0.0 _d 0
0203 ENDDO
0204 ENDDO
0205 ENDDO
0206 ENDDO
0207 _EXCH_XY_RL( TR, myThid )
0208
0209 ENDIF
d0842ebedb Jean*0210 IF ( QrFile .NE. ' ' ) THEN
0211 CALL READ_REC_XY_RL( QrFile,qrair0,intime0,
0212 & myIter, myThid )
0213 CALL READ_REC_XY_RL( QrFile,qrair1,intime1,
0214 & myIter, myThid )
cf6b9ab292 Brun*0215 ELSE
0216 DO bj = myByLo(myThid), myByHi(myThid)
0217 DO bi = myBxLo(myThid), myBxHi(myThid)
0218 DO j=1,sNy
0219 DO i=1,sNx
0220 qr(i,j,bi,bj) = 0.0 _d 0
0221 ENDDO
0222 ENDDO
0223 ENDDO
0224 ENDDO
0225 _EXCH_XY_RL( qr, myThid )
0226
0227 ENDIF
0228 IF ( UWindFile .NE. ' ' ) THEN
7c3371c654 Jean*0229 CALL READ_REC_XY_RL( UWindFile,uWind0,intime0,
cf6b9ab292 Brun*0230 & myIter, myThid )
7c3371c654 Jean*0231 CALL READ_REC_XY_RL( UWindFile,uWind1,intime1,
cf6b9ab292 Brun*0232 & myIter, myThid )
0233 ELSE
0234 DO bj = myByLo(myThid), myByHi(myThid)
0235 DO bi = myBxLo(myThid), myBxHi(myThid)
0236 DO j=1,sNy
0237 DO i=1,sNx
0238 uWind(i,j,bi,bj) = 0.0 _d 0
0239 ENDDO
0240 ENDDO
0241 ENDDO
0242 ENDDO
0243
0244 _EXCH_XY_RL( uWind, myThid )
0245
0246
0247 ENDIF
0312857000 Jean*0248
d0842ebedb Jean*0249 IF ( VWindFile .NE. ' ' ) THEN
7c3371c654 Jean*0250 CALL READ_REC_XY_RL( VWindFile,vWind0,intime0,
d0842ebedb Jean*0251 & myIter, myThid )
7c3371c654 Jean*0252 CALL READ_REC_XY_RL( VWindFile,vWind1,intime1,
d0842ebedb Jean*0253 & myIter, myThid )
cf6b9ab292 Brun*0254 ELSE
0255 DO bj = myByLo(myThid), myByHi(myThid)
0256 DO bi = myBxLo(myThid), myBxHi(myThid)
0257 DO j=1,sNy
0258 DO i=1,sNx
0259 vWind(i,j,bi,bj) = 0. _d 0
0260 ENDDO
0261 ENDDO
0262 ENDDO
0263 ENDDO
0264
0265 _EXCH_XY_RL( vWind, myThid )
0266
0312857000 Jean*0267
cf6b9ab292 Brun*0268 ENDIF
0bcb68cc3c Jean*0269 IF ( useTimeVarBLH .AND. cheap_hFile .NE. ' ' ) THEN
0270 CALL READ_REC_XY_RL( cheap_hFile,cheaph0,intime0,
d0842ebedb Jean*0271 & myIter, myThid )
0bcb68cc3c Jean*0272 CALL READ_REC_XY_RL( cheap_hFile,cheaph1,intime1,
d0842ebedb Jean*0273 & myIter, myThid )
0274 ENDIF
0bcb68cc3c Jean*0275 IF ( useClouds .AND. cheap_clFile .NE. ' ' ) THEN
0276 CALL READ_REC_XY_RL( cheap_clFile,cheapcl0,intime0,
d0842ebedb Jean*0277 & myIter, myThid )
0bcb68cc3c Jean*0278 CALL READ_REC_XY_RL( cheap_clFile,cheapcl1,intime1,
d0842ebedb Jean*0279 & myIter, myThid )
0280 ENDIF
0bcb68cc3c Jean*0281 IF ( useDLongWave .AND. cheap_dlwFile .NE. ' ' ) THEN
0282 CALL READ_REC_XY_RL( cheap_dlwFile,cheaplw0,intime0,
d0842ebedb Jean*0283 & myIter, myThid )
0bcb68cc3c Jean*0284 CALL READ_REC_XY_RL( cheap_dlwFile,cheaplw1,intime1,
d0842ebedb Jean*0285 & myIter, myThid )
0286 ENDIF
cf6b9ab292 Brun*0287 IF ( (usePrecip) .AND. cheap_prFile .NE. ' ' ) THEN
0288 CALL READ_REC_XY_RL( cheap_prFile,cheappr0,intime0,
0289 & myIter, myThid )
0290 CALL READ_REC_XY_RL( cheap_prFile,cheappr1,intime1,
0291 & myIter, myThid )
0292 ENDIF
d0842ebedb Jean*0293 IF ( useStressOption .AND. UStressFile .NE. ' ' ) THEN
0294 CALL READ_REC_XY_RL( UStressFile,ustress0,intime0,
0295 & myIter, myThid )
0296 CALL READ_REC_XY_RL( UStressFile,ustress1,intime1,
0297 & myIter, myThid )
0298 ENDIF
0299 IF ( useStressOption .AND. VStressFile .NE. ' ' ) THEN
0300 CALL READ_REC_XY_RL( VStressFile,vstress0,intime0,
0301 & myIter, myThid )
0302 CALL READ_REC_XY_RL( VStressFile,vstress1,intime1,
0303 & myIter, myThid )
0304 ENDIF
0305 IF ( FluxFormula.EQ.'COARE3' .AND. WaveHFile.NE.' ' ) THEN
0306 CALL READ_REC_XY_RL( WaveHFile,wavesh0,intime0,
0307 & myIter, myThid )
0308 CALL READ_REC_XY_RL( WaveHFile,wavesh1,intime1,
0309 & myIter, myThid )
0310 ENDIF
0311 IF ( FluxFormula.EQ.'COARE3' .AND. WavePFile.NE.' ' ) THEN
0312 CALL READ_REC_XY_RL( WavePFile,wavesp0,intime0,
0313 & myIter, myThid )
0314 CALL READ_REC_XY_RL( WavePFile,wavesp1,intime1,
0315 & myIter, myThid )
0316 ENDIF
0317 IF ( useCheapTracer .AND. TracerRFile .NE. ' ' ) THEN
0318 CALL READ_REC_XY_RL( TracerRFile,CheaptracerR0,intime0,
0319 & myIter, myThid )
0320 CALL READ_REC_XY_RL( TracerRFile,CheaptracerR1,intime1,
0321 & myIter, myThid )
cf6b9ab292 Brun*0322 ELSEIF( useCheapTracer ) THEN
0323 DO bj = myByLo(myThid), myByHi(myThid)
0324 DO bi = myBxLo(myThid), myBxHi(myThid)
0325 DO j=1,sNy
0326 DO i=1,sNx
0327 CheaptracerR(i,j,bi,bj) = 0. _d 0
0328 ENDDO
0329 ENDDO
0330 ENDDO
0331 ENDDO
0332 _EXCH_XY_RL( CheaptracerR, myThid )
0333
d0842ebedb Jean*0334 ENDIF
0335 _EXCH_XY_RL( trair0 , myThid )
0336 _EXCH_XY_RL( trair1 , myThid )
320727b2eb Jean*0337 _EXCH_XY_RL( qrair0 , myThid )
d0842ebedb Jean*0338 _EXCH_XY_RL( qrair1 , myThid )
320727b2eb Jean*0339 _EXCH_XY_RL( solar0 , myThid )
d0842ebedb Jean*0340 _EXCH_XY_RL( solar1 , myThid )
7c3371c654 Jean*0341 CALL EXCH_UV_XY_RL( uWind0, vWind0, .TRUE., myThid )
0342 CALL EXCH_UV_XY_RL( uWind1, vWind1, .TRUE., myThid )
0bcb68cc3c Jean*0343 IF ( useTimeVarBLH ) THEN
d0842ebedb Jean*0344 _EXCH_XY_RL( cheaph0, myThid )
0345 _EXCH_XY_RL( cheaph1 , myThid )
0346 ENDIF
0bcb68cc3c Jean*0347 IF ( useClouds ) THEN
d0842ebedb Jean*0348 _EXCH_XY_RL( cheapcl0, myThid )
0349 _EXCH_XY_RL( cheapcl1 , myThid )
0350 ENDIF
0bcb68cc3c Jean*0351 IF ( useDLongWave ) THEN
d0842ebedb Jean*0352 _EXCH_XY_RL( cheaplw0, myThid )
0353 _EXCH_XY_RL( cheaplw1 , myThid )
0354 ENDIF
cf6b9ab292 Brun*0355 IF ( usePrecip ) THEN
0356 _EXCH_XY_RL( cheappr0, myThid )
0357 _EXCH_XY_RL( cheappr1 , myThid )
0358 ENDIF
d0842ebedb Jean*0359 IF ( useStressOption ) THEN
320727b2eb Jean*0360 CALL EXCH_UV_AGRID_3D_RL(ustress0,vstress0, .TRUE.,1,myThid )
0361 CALL EXCH_UV_AGRID_3D_RL(ustress1,vstress1, .TRUE.,1,myThid )
0362 ENDIF
0363 IF ( FluxFormula.EQ.'COARE3' ) THEN
d0842ebedb Jean*0364 _EXCH_XY_RL( wavesp0 , myThid )
0365 _EXCH_XY_RL( wavesp1 , myThid )
0366 _EXCH_XY_RL( wavesh0 , myThid )
0367 _EXCH_XY_RL( wavesh1 , myThid )
320727b2eb Jean*0368 ENDIF
d0842ebedb Jean*0369 IF ( useCheapTracer ) THEN
0370 _EXCH_XY_RL( CheaptracerR0 , myThid )
0371 _EXCH_XY_RL( CheaptracerR1, myThid )
0372 ENDIF
0373
4fa4901be6 Nico*0374
d0842ebedb Jean*0375 ENDIF
4fa4901be6 Nico*0376
0377
d0842ebedb Jean*0378 DO bj = myByLo(myThid), myByHi(myThid)
0379 DO bi = myBxLo(myThid), myBxHi(myThid)
0380 DO j=1-OLy,sNy+OLy
0381 DO i=1-OLx,sNx+OLx
0382 TR(i,j,bi,bj) = bWght*trair0(i,j,bi,bj)
0383 & + aWght*trair1(i,j,bi,bj)
0384 qr(i,j,bi,bj) = bWght*qrair0(i,j,bi,bj)
0385 & + aWght*qrair1(i,j,bi,bj)
7c3371c654 Jean*0386 uWind(i,j,bi,bj) = bWght*uWind0(i,j,bi,bj)
0387 & + aWght*uWind1(i,j,bi,bj)
0388 vWind(i,j,bi,bj) = bWght*vWind0(i,j,bi,bj)
0389 & + aWght*vWind1(i,j,bi,bj)
d0842ebedb Jean*0390 solar(i,j,bi,bj) = bWght*solar0(i,j,bi,bj)
0391 & + aWght*solar1(i,j,bi,bj)
0392 IF ( useStressOption ) THEN
0393 ustress(i,j,bi,bj) = bWght*ustress0(i,j,bi,bj)
0394 & + aWght*ustress1(i,j,bi,bj)
0395 vstress(i,j,bi,bj) = bWght*vstress0(i,j,bi,bj)
0396 & + aWght*vstress1(i,j,bi,bj)
0397 ENDIF
0bcb68cc3c Jean*0398 IF ( useTimeVarBLH ) THEN
7c3371c654 Jean*0399 CheapHgrid(i,j,bi,bj) = bWght*cheaph0(i,j,bi,bj)
d0842ebedb Jean*0400 & + aWght*cheaph1(i,j,bi,bj)
0401 ENDIF
0bcb68cc3c Jean*0402 IF ( useClouds ) THEN
d0842ebedb Jean*0403 cheapclouds(i,j,bi,bj) = bWght*cheapcl0(i,j,bi,bj)
0404 & + aWght*cheapcl1(i,j,bi,bj)
0405 ENDIF
0bcb68cc3c Jean*0406 IF ( useDLongWave ) THEN
d0842ebedb Jean*0407 cheapdlongwave(i,j,bi,bj) = bWght*cheaplw0(i,j,bi,bj)
0408 & + aWght*cheaplw1(i,j,bi,bj)
0409 ENDIF
cf6b9ab292 Brun*0410 IF ( usePrecip ) THEN
0411 cheapPrecip(i,j,bi,bj) = bWght*cheappr0(i,j,bi,bj)
0412 & + aWght*cheappr1(i,j,bi,bj)
0413 ENDIF
d0842ebedb Jean*0414 IF ( useCheapTracer ) THEN
0415 CheaptracerR(i,j,bi,bj) = bWght*CheaptracerR0(i,j,bi,bj)
0416 & + aWght*CheaptracerR1(i,j,bi,bj)
0417 ENDIF
0418 IF ( FluxFormula.EQ.'COARE3' ) THEN
0419 IF ( WaveHFile.NE.' ' ) THEN
0420 wavesh(i,j,bi,bj) = bWght*wavesh0(i,j,bi,bj)
0421 & + aWght*wavesh1(i,j,bi,bj)
0422 ENDIF
0423 IF ( WavePFile.NE.' ' ) THEN
0424 wavesp(i,j,bi,bj) = bWght*wavesp0(i,j,bi,bj)
0425 & + aWght*wavesp1(i,j,bi,bj)
0426 ENDIF
0427 ELSE
7c3371c654 Jean*0428 u = uWind(i,j,bi,bj)**2 + vWind(i,j,bi,bj)**2
d0842ebedb Jean*0429 u = SQRT(u)
0430 wavesp(i,j,bi,bj) = 0.729 _d 0 * u
0431 wavesh(i,j,bi,bj) = 0.018 _d 0 * u*u*(1. + .015 _d 0 *u)
0432 ENDIF
0433 ENDDO
0434 ENDDO
cf5b5345a0 Jean*0435 ENDDO
0436 ENDDO
4fa4901be6 Nico*0437
d0842ebedb Jean*0438
cf5b5345a0 Jean*0439 ELSE
ced0783fba Jean*0440
cf5b5345a0 Jean*0441 IF ( myIter .EQ. nIter0 ) THEN
9944ed038a Jean*0442
d0842ebedb Jean*0443 IF ( SolarFile .NE. ' ' ) THEN
9944ed038a Jean*0444 CALL READ_FLD_XY_RL( SolarFile,' ',solar,0,myThid )
47339ef480 Jean*0445 ELSE
0446 DO bj = myByLo(myThid), myByHi(myThid)
0447 DO bi = myBxLo(myThid), myBxHi(myThid)
0448 DO j=1,sNy
0449 DO i=1,sNx
d0842ebedb Jean*0450 jG = myYGlobalLo-1+(bj-1)*sNy+j
0451 local = 225. _d 0 - (jG-1)*recipNym1*37.5 _d 0
0452 Solar(i,j,bi,bj) = local
cf5b5345a0 Jean*0453 ENDDO
47339ef480 Jean*0454 ENDDO
0455 ENDDO
cf5b5345a0 Jean*0456 ENDDO
47339ef480 Jean*0457 ENDIF
d0842ebedb Jean*0458 _EXCH_XY_RL( solar, myThid )
0459
cf5b5345a0 Jean*0460 IF ( TrFile .NE. ' ' ) THEN
ced0783fba Jean*0461 CALL READ_FLD_XY_RL( TrFile,' ',tr,0,myThid )
47339ef480 Jean*0462 ELSE
0463 DO bj = myByLo(myThid), myByHi(myThid)
0464 DO bi = myBxLo(myThid), myBxHi(myThid)
0465 DO j=1,sNy
0466 DO i=1,sNx
d0842ebedb Jean*0467 local = solar(i,j,bi,bj)
0bcb68cc3c Jean*0468 local = (2. _d 0*local/stefan)**(0.25 _d 0) - celsius2K
d0842ebedb Jean*0469 TR(i,j,bi,bj) = local
cf5b5345a0 Jean*0470 ENDDO
47339ef480 Jean*0471 ENDDO
0472 ENDDO
cf5b5345a0 Jean*0473 ENDDO
0474 ENDIF
d0842ebedb Jean*0475 _EXCH_XY_RL( TR, myThid )
ffe44ab22b Jean*0476
d0842ebedb Jean*0477
4fa4901be6 Nico*0478 IF ( QrFile .NE. ' ') THEN
ffe44ab22b Jean*0479 CALL READ_FLD_XY_RL( QrFile,' ',qr,0,myThid )
47339ef480 Jean*0480 ELSE
d0842ebedb Jean*0481
47339ef480 Jean*0482 DO bj = myByLo(myThid), myByHi(myThid)
0483 DO bi = myBxLo(myThid), myBxHi(myThid)
0484 DO j=1,sNy
0485 DO i=1,sNx
0bcb68cc3c Jean*0486 local = Tr(i,j,bi,bj) + celsius2K
d0842ebedb Jean*0487 ssqa = ssq0*EXP( lath*(ssq1-ssq2/local)) / p0
0488 qr(i,j,bi,bj) = 0.8 _d 0*ssqa
cf5b5345a0 Jean*0489 ENDDO
47339ef480 Jean*0490 ENDDO
0491 ENDDO
cf5b5345a0 Jean*0492 ENDDO
0493 ENDIF
d0842ebedb Jean*0494 _EXCH_XY_RL( qr, myThid )
0495
cf5b5345a0 Jean*0496 IF ( UWindFile .NE. ' ' ) THEN
7c3371c654 Jean*0497 CALL READ_FLD_XY_RL( UWindFile,' ',uWind,0,myThid )
47339ef480 Jean*0498 ELSE
0499 DO bj = myByLo(myThid), myByHi(myThid)
0500 DO bi = myBxLo(myThid), myBxHi(myThid)
0501 DO j=1,sNy
0502 DO i=1,sNx
d0842ebedb Jean*0503 jG = myYGlobalLo-1+(bj-1)*sNy+j
0504
0505
0506
0507 local = -5. _d 0*COS( 2. _d 0*PI*(jG-1)*recipNym1 )
0508
7c3371c654 Jean*0509 uWind(i,j,bi,bj) = local
cf5b5345a0 Jean*0510 ENDDO
47339ef480 Jean*0511 ENDDO
0512 ENDDO
cf5b5345a0 Jean*0513 ENDDO
0514 ENDIF
d0842ebedb Jean*0515
cf5b5345a0 Jean*0516 IF ( VWindFile .NE. ' ' ) THEN
7c3371c654 Jean*0517 CALL READ_FLD_XY_RL( VWindFile,' ',vWind,0,myThid )
47339ef480 Jean*0518 ELSE
0519 DO bj = myByLo(myThid), myByHi(myThid)
0520 DO bi = myBxLo(myThid), myBxHi(myThid)
0521 DO j=1,sNy
0522 DO i=1,sNx
7c3371c654 Jean*0523 vWind(i,j,bi,bj) = 0. _d 0
cf5b5345a0 Jean*0524 ENDDO
47339ef480 Jean*0525 ENDDO
0526 ENDDO
cf5b5345a0 Jean*0527 ENDDO
0528 ENDIF
7c3371c654 Jean*0529 CALL EXCH_UV_XY_RL( uWind, vWind, .TRUE., myThid )
d0842ebedb Jean*0530
0531 IF ( useStressOption ) THEN
0532 IF ( UStressFile .NE. ' ' ) THEN
0533 CALL READ_FLD_XY_RL( UStressFile,' ',ustress,0,myThid )
0534 ELSE
0535 WRITE(*,*)' U Stress File absent with stress option'
0536 STOP
0537 ENDIF
0538 IF ( VStressFile .NE. ' ' ) THEN
0539 CALL READ_FLD_XY_RL( VStressFile,' ',vstress,0,myThid )
0540 ELSE
0541 WRITE(*,*)' V Stress File absent with stress option'
0542 STOP
0543 ENDIF
320727b2eb Jean*0544 CALL EXCH_UV_AGRID_3D_RL( ustress,vstress, .TRUE.,1,myThid )
ced0783fba Jean*0545 ENDIF
d0842ebedb Jean*0546 IF ( useCheapTracer ) THEN
0547 IF ( TracerRFile .NE. ' ' ) THEN
51132e5783 Nico*0548 CALL READ_FLD_XY_RL( TracerRFile,' ',CheaptracerR,0,myThid )
d0842ebedb Jean*0549 ELSE
51132e5783 Nico*0550 DO bj = myByLo(myThid), myByHi(myThid)
0551 DO bi = myBxLo(myThid), myBxHi(myThid)
0552 DO j=1,sNy
0553 DO i=1,sNx
0554 CheaptracerR(i,j,bi,bj)=290. _d 0
0555 ENDDO
0556 ENDDO
0557 ENDDO
0558 ENDDO
d0842ebedb Jean*0559 ENDIF
0560 _EXCH_XY_RL( CheaptracerR, myThid )
4fa4901be6 Nico*0561 ENDIF
d0842ebedb Jean*0562 IF ( FluxFormula.EQ.'COARE3' ) THEN
0563 IF ( WaveHFile.NE.' ' ) THEN
0564 CALL READ_FLD_XY_RL( WaveHFile,' ',wavesh,0,myThid )
0565 ENDIF
0566 IF ( WavePFile.NE.' ' ) THEN
0567 CALL READ_FLD_XY_RL( WavePFile,' ',wavesp,0,myThid )
0568 ELSE
0569 DO bj = myByLo(myThid), myByHi(myThid)
0570 DO bi = myBxLo(myThid), myBxHi(myThid)
0571 DO j=1,sNy
0572 DO i=1,sNx
7c3371c654 Jean*0573 u = uWind(i,j,bi,bj)**2 + vWind(i,j,bi,bj)**2
d0842ebedb Jean*0574 u = SQRT(u)
0575 wavesp(i,j,bi,bj)=0.729 _d 0 * u
0576 wavesh(i,j,bi,bj)=0.018 _d 0 * u*u*(1. + .015 _d 0 *u)
0577 ENDDO
ced0783fba Jean*0578 ENDDO
0579 ENDDO
0580 ENDDO
d0842ebedb Jean*0581 ENDIF
0582 _EXCH_XY_RL( wavesp, myThid )
0583 _EXCH_XY_RL( wavesh, myThid )
0584 ENDIF
0585
2616d73cb2 Nico*0586
0587
9944ed038a Jean*0588 IF ( useClouds ) THEN
0bcb68cc3c Jean*0589 IF ( cheap_clFile .NE. ' ' ) THEN
0590 CALL READ_FLD_XY_RL( cheap_clFile,' ',Cheapclouds,0,myThid )
d0842ebedb Jean*0591 ELSE
0592 DO bj = myByLo(myThid), myByHi(myThid)
0593 DO bi = myBxLo(myThid), myBxHi(myThid)
0594 DO j=1,sNy
0595 DO i=1,sNx
2616d73cb2 Nico*0596 Cheapclouds(i,j,bi,bj)=0.5
0597 ENDDO
0598 ENDDO
0599 ENDDO
d0842ebedb Jean*0600 ENDDO
0601 ENDIF
0602 _EXCH_XY_RL( Cheapclouds, myThid )
9944ed038a Jean*0603 ENDIF
2616d73cb2 Nico*0604
9944ed038a Jean*0605 IF ( useDLongWave ) THEN
0bcb68cc3c Jean*0606 IF ( cheap_dlwFile .NE. ' ' ) THEN
0607 CALL READ_FLD_XY_RL(cheap_dlwFile,' ',Cheapdlongwave,0,myThid)
d0842ebedb Jean*0608 ELSE
0bcb68cc3c Jean*0609 WRITE(*,*) 'with useDLongWave = true, you must provide',
d0842ebedb Jean*0610 $ ' a downward longwave file'
0611 STOP
0612 ENDIF
0613 _EXCH_XY_RL( Cheapdlongwave, myThid )
9944ed038a Jean*0614 ENDIF
0615
cf6b9ab292 Brun*0616 IF ( usePrecip ) THEN
0617 IF ( cheap_prFile .NE. ' ' ) THEN
0618 CALL READ_FLD_XY_RL(cheap_prFile,' ',CheapPrecip,0,myThid)
0619 ELSE
0620 DO bj = myByLo(myThid), myByHi(myThid)
0621 DO bi = myBxLo(myThid), myBxHi(myThid)
0622 DO j=1,sNy
0623 DO i=1,sNx
0624 CheapPrecip(i,j,bi,bj)=0.0
0625 ENDDO
0626 ENDDO
0627 ENDDO
0628 ENDDO
0629
0630 ENDIF
0631 _EXCH_XY_RL( CheapPrecip, myThid )
0632 ENDIF
0633
9944ed038a Jean*0634
d0842ebedb Jean*0635 ENDIF
93e0447b06 Jean*0636
ced0783fba Jean*0637
cf5b5345a0 Jean*0638 ENDIF
0639
ced0783fba Jean*0640
4fa4901be6 Nico*0641
d0842ebedb Jean*0642 DO bj = myByLo(myThid), myByHi(myThid)
0643 DO bi = myBxLo(myThid), myBxHi(myThid)
0644 DO j=1-OLy,sNy+OLy
0645 jG = myYGlobalLo-1+(bj-1)*sNy+j
0646 DO i=1-OLx,sNx+OLx
0647 iG=myXGlobalLo-1+(bi-1)*sNx+i
0648
7c3371c654 Jean*0649 IF ( .NOT.cheapamlXperiodic .AND. iG.LT.1 ) THEN
d0842ebedb Jean*0650
4fa4901be6 Nico*0651 Tr(i,j,bi,bj)=Tr(1,j,bi,bj)
0652 qr(i,j,bi,bj)=qr(1,j,bi,bj)
7c3371c654 Jean*0653 uWind(i,j,bi,bj)=uWind(2,j,bi,bj)
0654 vWind(i,j,bi,bj)=vWind(1,j,bi,bj)
4fa4901be6 Nico*0655 Solar(i,j,bi,bj)=Solar(1,j,bi,bj)
d0842ebedb Jean*0656 IF ( useStressOption ) THEN
2616d73cb2 Nico*0657 ustress(i,j,bi,bj)=ustress(1,j,bi,bj)
0658 vstress(i,j,bi,bj)=vstress(1,j,bi,bj)
0659 ENDIF
d0842ebedb Jean*0660 IF ( useCheapTracer ) THEN
2616d73cb2 Nico*0661 CheaptracerR(i,j,bi,bj)=CheaptracerR(1,j,bi,bj)
ffe44ab22b Jean*0662 ENDIF
d0842ebedb Jean*0663 IF ( FluxFormula.EQ.'COARE3' ) THEN
2616d73cb2 Nico*0664 wavesp(i,j,bi,bj)=wavesp(1,j,bi,bj)
0665 wavesh(i,j,bi,bj)=wavesh(1,j,bi,bj)
d0842ebedb Jean*0666 ENDIF
0bcb68cc3c Jean*0667 IF ( useClouds ) THEN
2616d73cb2 Nico*0668 Cheapclouds(i,j,bi,bj)=Cheapclouds(1,j,bi,bj)
ffe44ab22b Jean*0669 ENDIF
0bcb68cc3c Jean*0670 IF ( useDLongWave ) THEN
a897f57321 Nico*0671 Cheapdlongwave(i,j,bi,bj)=Cheapdlongwave(1,j,bi,bj)
ffe44ab22b Jean*0672 ENDIF
0673
7c3371c654 Jean*0674 ELSEIF ( .NOT.cheapamlXperiodic .AND. iG.EQ.1 ) THEN
0675
0676 uWind(i,j,bi,bj)=uWind(2,j,bi,bj)
0677
0678 ELSEIF ( .NOT.cheapamlXperiodic .AND. iG.GT.Nx ) THEN
d0842ebedb Jean*0679
4fa4901be6 Nico*0680 Tr(i,j,bi,bj)=Tr(sNx,j,bi,bj)
0681 qr(i,j,bi,bj)=qr(sNx,j,bi,bj)
7c3371c654 Jean*0682 uWind(i,j,bi,bj)=uWind(sNx,j,bi,bj)
0683 vWind(i,j,bi,bj)=vWind(sNx,j,bi,bj)
4fa4901be6 Nico*0684 Solar(i,j,bi,bj)=Solar(sNx,j,bi,bj)
d0842ebedb Jean*0685 IF ( useStressOption ) THEN
2616d73cb2 Nico*0686 ustress(i,j,bi,bj)=ustress(sNx,j,bi,bj)
0687 vstress(i,j,bi,bj)=vstress(sNx,j,bi,bj)
d0842ebedb Jean*0688 ENDIF
0689 IF ( useCheapTracer ) THEN
2616d73cb2 Nico*0690 CheaptracerR(i,j,bi,bj)=CheaptracerR(sNx,j,bi,bj)
ffe44ab22b Jean*0691 ENDIF
d0842ebedb Jean*0692 IF ( FluxFormula.EQ.'COARE3' ) THEN
2616d73cb2 Nico*0693 wavesp(i,j,bi,bj)=wavesp(sNx,j,bi,bj)
0694 wavesh(i,j,bi,bj)=wavesh(sNx,j,bi,bj)
d0842ebedb Jean*0695 ENDIF
0bcb68cc3c Jean*0696 IF ( useClouds ) THEN
2616d73cb2 Nico*0697 Cheapclouds(i,j,bi,bj)=Cheapclouds(sNx,j,bi,bj)
ffe44ab22b Jean*0698 ENDIF
0bcb68cc3c Jean*0699 IF ( useDLongWave ) THEN
a897f57321 Nico*0700 Cheapdlongwave(i,j,bi,bj)=Cheapdlongwave(sNx,j,bi,bj)
ffe44ab22b Jean*0701 ENDIF
4fa4901be6 Nico*0702
7c3371c654 Jean*0703 ELSEIF ( .NOT.cheapamlYperiodic .AND. jG.LT.1 ) THEN
d0842ebedb Jean*0704
4fa4901be6 Nico*0705 Tr(i,j,bi,bj)=Tr(i,1,bi,bj)
0706 qr(i,j,bi,bj)=qr(i,1,bi,bj)
7c3371c654 Jean*0707 uWind(i,j,bi,bj)=uWind(i,1,bi,bj)
0708 vWind(i,j,bi,bj)=vWind(i,2,bi,bj)
4fa4901be6 Nico*0709 Solar(i,j,bi,bj)=Solar(i,1,bi,bj)
d0842ebedb Jean*0710 IF ( useStressOption ) THEN
2616d73cb2 Nico*0711 ustress(i,j,bi,bj)=ustress(i,1,bi,bj)
0712 vstress(i,j,bi,bj)=vstress(i,1,bi,bj)
d0842ebedb Jean*0713 ENDIF
0714 IF ( useCheapTracer ) THEN
2616d73cb2 Nico*0715 CheaptracerR(i,j,bi,bj)=CheaptracerR(i,1,bi,bj)
ffe44ab22b Jean*0716 ENDIF
0bcb68cc3c Jean*0717 IF ( useClouds ) THEN
2616d73cb2 Nico*0718 Cheapclouds(i,j,bi,bj)=Cheapclouds(i,1,bi,bj)
ffe44ab22b Jean*0719 ENDIF
0bcb68cc3c Jean*0720 IF ( useDLongWave ) THEN
a897f57321 Nico*0721 Cheapdlongwave(i,j,bi,bj)=Cheapdlongwave(i,1,bi,bj)
ffe44ab22b Jean*0722 ENDIF
d0842ebedb Jean*0723 IF ( FluxFormula.EQ.'COARE3' ) THEN
2616d73cb2 Nico*0724 wavesp(i,j,bi,bj)=wavesp(i,1,bi,bj)
0725 wavesh(i,j,bi,bj)=wavesh(i,1,bi,bj)
d0842ebedb Jean*0726 ENDIF
0727
7c3371c654 Jean*0728 ELSEIF ( .NOT.cheapamlYperiodic .AND. jG.EQ.1 ) THEN
0729
0730 vWind(i,j,bi,bj)=vWind(i,2,bi,bj)
0731
0732 ELSEIF ( .NOT.cheapamlYperiodic .AND. jG.GT.Ny ) THEN
ffe44ab22b Jean*0733
4fa4901be6 Nico*0734 Tr(i,j,bi,bj)=Tr(i,sNy,bi,bj)
0735 qr(i,j,bi,bj)=qr(i,sNy,bi,bj)
7c3371c654 Jean*0736 uWind(i,j,bi,bj)=uWind(i,sNy,bi,bj)
0737 vWind(i,j,bi,bj)=vWind(i,sNy,bi,bj)
4fa4901be6 Nico*0738 Solar(i,j,bi,bj)=Solar(i,sNy,bi,bj)
d0842ebedb Jean*0739 IF ( useStressOption ) THEN
2616d73cb2 Nico*0740 ustress(i,j,bi,bj)=ustress(i,sNy,bi,bj)
0741 vstress(i,j,bi,bj)=vstress(i,sNy,bi,bj)
d0842ebedb Jean*0742 ENDIF
0743 IF ( useCheapTracer ) THEN
2616d73cb2 Nico*0744 CheaptracerR(i,j,bi,bj)=CheaptracerR(i,sNy,bi,bj)
ffe44ab22b Jean*0745 ENDIF
d0842ebedb Jean*0746 IF ( FluxFormula.EQ.'COARE3' ) THEN
2616d73cb2 Nico*0747 wavesp(i,j,bi,bj)=wavesp(i,sNy,bi,bj)
0748 wavesh(i,j,bi,bj)=wavesh(i,sNy,bi,bj)
d0842ebedb Jean*0749 ENDIF
0bcb68cc3c Jean*0750 IF ( useClouds ) THEN
2616d73cb2 Nico*0751 Cheapclouds(i,j,bi,bj)=Cheapclouds(i,sNy,bi,bj)
ffe44ab22b Jean*0752 ENDIF
0bcb68cc3c Jean*0753 IF ( useDLongWave ) THEN
a897f57321 Nico*0754 Cheapdlongwave(i,j,bi,bj)=Cheapdlongwave(i,sNy,bi,bj)
ffe44ab22b Jean*0755 ENDIF
0756
d0842ebedb Jean*0757 ENDIF
ced0783fba Jean*0758 ENDDO
4fa4901be6 Nico*0759 ENDDO
d0842ebedb Jean*0760 ENDDO
0761 ENDDO
0762
0763 RETURN
cf5b5345a0 Jean*0764 END