File indexing completed on 2025-11-15 13:23:46 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
c842b53753 Jean*0001 #include "PACKAGES_CONFIG.h"
0002 #include "CPP_OPTIONS.h"
f59d76b0dd Ed D*0003 #ifdef ALLOW_MOM_COMMON
0004 # include "MOM_COMMON_OPTIONS.h"
0005 #endif
517dbdc414 Jean*0006 #ifdef ALLOW_AUTODIFF
0007 # include "AUTODIFF_OPTIONS.h"
0008 #endif
0009 #ifdef ALLOW_CTRL
0010 # include "CTRL_OPTIONS.h"
0011 #endif
1f89baba18 Patr*0012 #ifdef ALLOW_SALT_PLUME
0013 # include "SALT_PLUME_OPTIONS.h"
0014 #endif
ecaa45da39 An T*0015 #ifdef ALLOW_ECCO
0016 # include "ECCO_OPTIONS.h"
0017 #endif
c842b53753 Jean*0018
517dbdc414 Jean*0019 #ifdef ALLOW_AUTODIFF
685f7544b6 Patr*0020 # ifdef ALLOW_GGL90
0021 # include "GGL90_OPTIONS.h"
0022 # endif
c842b53753 Jean*0023 # ifdef ALLOW_GMREDI
0024 # include "GMREDI_OPTIONS.h"
0025 # endif
0026 # ifdef ALLOW_KPP
0027 # include "KPP_OPTIONS.h"
0028 # endif
9d4847a995 Jean*0029 # ifdef ALLOW_SEAICE
0030 # include "SEAICE_OPTIONS.h"
0031 # endif
9e3a303fa3 Gael*0032 # ifdef ALLOW_EXF
0033 # include "EXF_OPTIONS.h"
0034 # endif
af61e5eb16 Mart*0035 #ifdef ALLOW_OBCS
0036 # include "OBCS_OPTIONS.h"
0037 #endif
517dbdc414 Jean*0038 #endif /* ALLOW_AUTODIFF */
c842b53753 Jean*0039
0040
0041
0042
0043 SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
0044
0045
765f2ca955 Jean*0046
0047
c842b53753 Jean*0048
0049
0050
0051
0052
0053
8f92343d9b Jean*0054
0055
0056
0057
0058
7eca977925 Jean*0059
0060
8f92343d9b Jean*0061
0062
0063
0064
0065
0066
0067
0068
7eca977925 Jean*0069
0070
00f81e6785 Ou W*0071
8f92343d9b Jean*0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
abfe198bce Mart*0082
0083
8f92343d9b Jean*0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
dc2ebbdaf0 Jean*0119
0120
8f92343d9b Jean*0121
0122
0123
0124
0125
0126
0127
0128
0320e25227 Mart*0129
0130
8f92343d9b Jean*0131
0132
0133
0134
0135
0136
c842b53753 Jean*0137
0138 IMPLICIT NONE
0139
0140 #include "SIZE.h"
0141 #include "EEPARAMS.h"
0142 #include "PARAMS.h"
0143 #include "GRID.h"
1db41719d4 Jean*0144 #include "DYNVARS.h"
c8b8efc127 Jean*0145 #ifdef ALLOW_OFFLINE
0146 # include "OFFLINE_SWITCH.h"
c4e20a6b6c Jean*0147 #endif
c842b53753 Jean*0148
517dbdc414 Jean*0149 #ifdef ALLOW_AUTODIFF
7c50f07931 Mart*0150 # ifdef ALLOW_AUTODIFF_TAMC
0151 # include "tamc.h"
0152 # endif
c842b53753 Jean*0153 # include "FFIELDS.h"
81b43af3f0 Patr*0154 # include "SURFACE.h"
c842b53753 Jean*0155 # include "EOS.h"
685f7544b6 Patr*0156 # ifdef ALLOW_GMREDI
0157 # include "GMREDI.h"
0158 # endif
c842b53753 Jean*0159 # ifdef ALLOW_KPP
0160 # include "KPP.h"
0161 # endif
2b52c649e6 Gael*0162 # ifdef ALLOW_GGL90
0163 # include "GGL90.h"
0164 # endif
c842b53753 Jean*0165 # ifdef ALLOW_EBM
0166 # include "EBM.h"
0167 # endif
9d4847a995 Jean*0168 # ifdef ALLOW_EXF
b4daa24319 Shre*0169 # ifdef ALLOW_CTRL
5cf4364659 Mart*0170 # include "CTRL_SIZE.h"
4d72283393 Mart*0171 # include "CTRL.h"
b4daa24319 Shre*0172 # endif
798a745844 Jean*0173 # include "EXF_FIELDS.h"
9d4847a995 Jean*0174 # ifdef ALLOW_BULKFORMULAE
798a745844 Jean*0175 # include "EXF_CONSTANTS.h"
9d4847a995 Jean*0176 # endif
0177 # endif
0178 # ifdef ALLOW_SEAICE
a2c8840cf9 Jean*0179 # include "SEAICE_SIZE.h"
9d4847a995 Jean*0180 # include "SEAICE.h"
2848258862 Gael*0181 # include "SEAICE_PARAMS.h"
9d4847a995 Jean*0182 # endif
ec745395c8 Patr*0183 # ifdef ALLOW_THSICE
0184 # include "THSICE_VARS.h"
0185 # endif
f7911aa28f Patr*0186 # ifdef ALLOW_SALT_PLUME
0187 # include "SALT_PLUME.h"
0188 # endif
af61e5eb16 Mart*0189 # ifdef ALLOW_OBCS
0190 # include "OBCS_PARAMS.h"
0191 # include "OBCS_FIELDS.h"
0192 # endif
517dbdc414 Jean*0193 #endif /* ALLOW_AUTODIFF */
c842b53753 Jean*0194
b4daa24319 Shre*0195 #ifdef ALLOW_TAPENADE
0196
0197
0198
0199 # ifdef ALLOW_SHELFICE
0200 # include "SHELFICE.h"
0201 # endif
0202 #endif /* ALLOW_TAPENADE */
0203
c842b53753 Jean*0204
0205
38ee7d4239 Jean*0206
0207
0208
c842b53753 Jean*0209 _RL myTime
0210 INTEGER myIter
0211 INTEGER myThid
0212
0213
0214
0320e25227 Mart*0215
38ee7d4239 Jean*0216
c842b53753 Jean*0217
38ee7d4239 Jean*0218
7eca977925 Jean*0219
38ee7d4239 Jean*0220
0320e25227 Mart*0221
cf9e43202e Jean*0222 _RL rhoKp1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0223 _RL rhoKm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
c842b53753 Jean*0224 _RL sigmaX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0225 _RL sigmaY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0226 _RL sigmaR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0227 INTEGER iMin, iMax
0228 INTEGER jMin, jMax
0229 INTEGER bi, bj
0320e25227 Mart*0230 INTEGER i, j, k, kSrf
7eca977925 Jean*0231 CHARACTER*(MAX_LEN_MBUF) msgBuf
8ab93ea9a3 Jean*0232 INTEGER doDiagsRho
c8b8efc127 Jean*0233 LOGICAL calcGMRedi, calcKPP, calcConvect
8ab93ea9a3 Jean*0234 #ifdef ALLOW_DIAGNOSTICS
0235 LOGICAL DIAGNOSTICS_IS_ON
0236 EXTERNAL DIAGNOSTICS_IS_ON
0237 #endif /* ALLOW_DIAGNOSTICS */
34de4f2d34 Jean*0238 #ifdef ALLOW_AUTODIFF
0239 _RL thetaRef
0240 #endif /* ALLOW_AUTODIFF */
7c50f07931 Mart*0241 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0242
af61e5eb16 Mart*0243 INTEGER tkey
7c50f07931 Mart*0244 #endif
c842b53753 Jean*0245
0246
0320e25227 Mart*0247 kSrf = 1
0248 IF ( usingPCoords ) kSrf = Nr
0249
c842b53753 Jean*0250 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0251 IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
c842b53753 Jean*0252 #endif
0ff4deb339 Jean*0253
8ab93ea9a3 Jean*0254 doDiagsRho = 0
0255 #ifdef ALLOW_DIAGNOSTICS
0256 IF ( useDiagnostics .AND. fluidIsWater ) THEN
d497465397 Jean*0257 IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
842349fcb7 Jean*0258 & doDiagsRho = doDiagsRho + 1
0259 IF ( DIAGNOSTICS_IS_ON('DRHODR ',myThid) )
0260 & doDiagsRho = doDiagsRho + 2
d497465397 Jean*0261 IF ( DIAGNOSTICS_IS_ON('WdRHO_P ',myThid) )
842349fcb7 Jean*0262 & doDiagsRho = doDiagsRho + 4
d497465397 Jean*0263 IF ( DIAGNOSTICS_IS_ON('WdRHOdP ',myThid) )
0264 & doDiagsRho = doDiagsRho + 8
8ab93ea9a3 Jean*0265 ENDIF
0266 #endif /* ALLOW_DIAGNOSTICS */
0267
c8b8efc127 Jean*0268 calcGMRedi = useGMRedi
0269 calcKPP = useKPP
0270 calcConvect = ivdc_kappa.NE.0.
0271 #ifdef ALLOW_OFFLINE
0272 IF ( useOffLine ) THEN
0273 calcGMRedi = useGMRedi .AND. .NOT.offlineLoadGMRedi
0274 calcKPP = useKPP .AND. .NOT.offlineLoadKPP
0275 calcConvect=calcConvect.AND. .NOT.offlineLoadConvec
0276 ENDIF
0277 #endif /* ALLOW_OFFLINE */
0278
00c7090dc0 Mart*0279 #if ( defined ALLOW_GCHEM && defined SHORTWAVE_HEATING )
0280
0281
0282
0283
0284
0285
0286
0287
0288 #endif
0289
f7d550a4f6 Jean*0290 #ifdef ALLOW_OBCS
0291 IF (useOBCS) THEN
0292
0293
38b71af82a Patr*0294 # ifdef ALLOW_AUTODIFF_TAMC
0295
0296
af61e5eb16 Mart*0297
0298 # ifdef ALLOW_OBCS_STEVENS
0299
0300
0301 # ifdef ALLOW_OBCS_EAST
0302
0303
0304 # endif
0305 # ifdef ALLOW_OBCS_WEST
0306
0307
0308 # endif
0309 # ifdef ALLOW_OBCS_NORTH
0310
0311
0312 # endif
0313 # ifdef ALLOW_OBCS_SOUTH
0314
0315
0316 # endif
0317 # endif /* ALLOW_OBCS_STEVENS */
38b71af82a Patr*0318 # endif
0319 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0320 IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
38b71af82a Patr*0321 # endif
70075a2466 Jean*0322 CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
3a86c9b47d Oliv*0323 I uVel, vVel, wVel, theta, salt, myThid )
f7d550a4f6 Jean*0324 ENDIF
af61e5eb16 Mart*0325 # if ( defined ALLOW_AUTODIFF_TAMC && defined ALLOW_OBCS_BALANCE )
0326
0327
0328 # ifdef ALLOW_OBCS_NORTH
0329
0330 # endif
0331 # ifdef ALLOW_OBCS_SOUTH
0332
0333 # endif
0334 # ifdef ALLOW_OBCS_EAST
0335
0336 # endif
0337 # ifdef ALLOW_OBCS_WEST
0338
0339 # endif
0340 # endif /* ALLOW_AUTODIFF_TAMC and ALLOW_OBCS_BALANCE */
f7d550a4f6 Jean*0341 #endif /* ALLOW_OBCS */
1db41719d4 Jean*0342
7eca977925 Jean*0343 #ifdef ALLOW_OCN_COMPON_INTERF
0344
0345
0346 IF ( useCoupler ) THEN
0347 CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
0348 ENDIF
0349 #endif /* ALLOW_OCN_COMPON_INTERF */
0350
517dbdc414 Jean*0351 #ifdef ALLOW_AUTODIFF
79d91b77ec Gael*0352 DO bj=myByLo(myThid),myByHi(myThid)
0353 DO bi=myBxLo(myThid),myBxHi(myThid)
0354 DO j=1-OLy,sNy+OLy
0355 DO i=1-OLx,sNx+OLx
fa323f784d Jean*0356 adjustColdSST_diag(i,j,bi,bj) = 0. _d 0
0357 # ifdef ALLOW_SALT_PLUME
79d91b77ec Gael*0358 saltPlumeDepth(i,j,bi,bj) = 0. _d 0
0359 saltPlumeFlux(i,j,bi,bj) = 0. _d 0
fa323f784d Jean*0360 # endif
79d91b77ec Gael*0361 ENDDO
0362 ENDDO
0363 ENDDO
0364 ENDDO
f59d76b0dd Ed D*0365 #endif /* ALLOW_AUTODIFF */
0366
e0b3e1bdd8 Dimi*0367 #ifdef ALLOW_FRAZIL
0368 IF ( useFRAZIL ) THEN
0369
dde0ec0a2d Patr*0370
0371
e0b3e1bdd8 Dimi*0372 CALL FRAZIL_CALC_RHS( myTime, myIter, myThid )
0373 ENDIF
0374 #endif /* ALLOW_FRAZIL */
0375
de80e32bba Jean*0376 #if (defined ALLOW_THSICE) &&
0377 IF ( useThSIce .AND. fluidIsWater ) THEN
d503ff4f7a Jean*0378 # ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0379 # ifdef ALLOW_SEAICE
ec0d7df165 Mart*0380
9c41af81f6 Timo*0381 # endif
ec0d7df165 Mart*0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
d503ff4f7a Jean*0392 # ifdef NONLIN_FRSURF
ec0d7df165 Mart*0393
d503ff4f7a Jean*0394 # endif
a7828ed4d5 Patr*0395 # endif /* ALLOW_AUTODIFF_TAMC */
de80e32bba Jean*0396 # ifdef ALLOW_DEBUG
0397 IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
0398 # endif
0399
0400
0401 CALL TIMER_START('THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
0402 CALL THSICE_MAIN( myTime, myIter, myThid )
0403 CALL TIMER_STOP( 'THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
0404 ENDIF
0405 #endif /* ALLOW_THSICE */
0406
2848258862 Gael*0407 #ifdef ALLOW_SEAICE
ec0d7df165 Mart*0408 # ifdef ALLOW_AUTODIFF_TAMC
3314a43a56 Mart*0409
0410
0411
af61e5eb16 Mart*0412 # if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
3314a43a56 Mart*0413
af61e5eb16 Mart*0414 # endif
0415
0416
0417
0418
0419
0420 # endif
9d4847a995 Jean*0421 IF ( useSEAICE ) THEN
7880c396f6 Patr*0422 # ifdef ALLOW_AUTODIFF_TAMC
3314a43a56 Mart*0423
0424
3c775cbf98 Mart*0425 # ifdef SEAICE_USE_GROWTH_ADX
0426
0427 # endif
3314a43a56 Mart*0428 # ifdef ALLOW_EXF
ec0d7df165 Mart*0429
0430
0431
7880c396f6 Patr*0432 # endif
f4b023d948 Jean*0433 # ifdef SEAICE_VARIABLE_SALINITY
ec0d7df165 Mart*0434
f4b023d948 Jean*0435 # endif
7880c396f6 Patr*0436 # ifdef ATMOSPHERIC_LOADING
ec0d7df165 Mart*0437
7880c396f6 Patr*0438 # endif
0439 # ifdef NONLIN_FRSURF
ec0d7df165 Mart*0440
7880c396f6 Patr*0441 # endif
a7828ed4d5 Patr*0442 # ifdef ALLOW_THSICE
d5254b4e3d Mart*0443
ec0d7df165 Mart*0444
0445
0446
f4b023d948 Jean*0447 # endif /* ALLOW_THSICE */
a7828ed4d5 Patr*0448 # endif /* ALLOW_AUTODIFF_TAMC */
7880c396f6 Patr*0449 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0450 IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
7880c396f6 Patr*0451 # endif
9d4847a995 Jean*0452 CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid)
0453 CALL SEAICE_MODEL( myTime, myIter, myThid )
0454 CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid)
3314a43a56 Mart*0455 # ifdef ALLOW_AUTODIFF_TAMC
0456
0457
0458
0459
0460
0461
0462 # endif
7880c396f6 Patr*0463 # ifdef ALLOW_COST
1e22f5fc71 Patr*0464 CALL SEAICE_COST_SENSI ( myTime, myIter, myThid )
7880c396f6 Patr*0465 # endif
ec0d7df165 Mart*0466 # ifdef ALLOW_AUTODIFF
0467 ELSEIF ( SEAICEadjMODE .EQ. -1 ) THEN
af61e5eb16 Mart*0468 # ifdef ALLOW_AUTODIFF_TAMC
3314a43a56 Mart*0469
af61e5eb16 Mart*0470 # endif
ec0d7df165 Mart*0471 CALL SEAICE_FAKE( myTime, myIter, myThid )
0472 # endif /* ALLOW_AUTODIFF */
acb47bc07b Patr*0473 ENDIF
9d4847a995 Jean*0474 #endif /* ALLOW_SEAICE */
0475
7eca977925 Jean*0476 #if (defined ALLOW_OCN_COMPON_INTERF) && (defined ALLOW_THSICE)
0477
0478
0479 IF ( useCoupler ) THEN
0480 # ifdef ALLOW_DEBUG
0481 IF (debugMode) CALL DEBUG_CALL('OCN_EXPORT_DATA',myThid)
0482 # endif
0483 CALL TIMER_START('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
0484 CALL OCN_EXPORT_DATA( myTime, myIter, myThid )
0485 CALL TIMER_STOP ('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
0486 ENDIF
0487 #endif /* ALLOW_OCN_COMPON_INTERF & ALLOW_THSICE */
0488
13783cb644 Patr*0489 #ifdef ALLOW_AUTODIFF_TAMC
ec0d7df165 Mart*0490
0491
13783cb644 Patr*0492 # ifdef ALLOW_SEAICE
ec0d7df165 Mart*0493
13783cb644 Patr*0494 # endif
0495 #endif
0496
a6cbc7a360 Mart*0497 #ifdef ALLOW_SHELFICE
0498 IF ( useShelfIce .AND. fluidIsWater ) THEN
dde0ec0a2d Patr*0499 #ifdef ALLOW_AUTODIFF_TAMC
ec0d7df165 Mart*0500
0501
dde0ec0a2d Patr*0502 #endif
00f81e6785 Ou W*0503 #ifdef ALLOW_STEEP_ICECAVITY
0504 IF ( useSTIC ) THEN
0505 # ifdef ALLOW_DEBUG
0506 IF (debugMode) CALL DEBUG_CALL('STIC_THERMODYNAMICS',myThid)
0507 # endif
0508
0509 CALL TIMER_START('STIC_THERMODYNAMICS [DO_OCEANIC_PHYS]',myThid)
0510 CALL STIC_THERMODYNAMICS( myTime, myIter, myThid )
0511 CALL TIMER_STOP ('STIC_THERMODYNAMICS [DO_OCEANIC_PHYS]',myThid)
0512 ELSE
0513 #else
0514 IF ( .TRUE. ) THEN
0515 #endif
0516 #ifdef ALLOW_DEBUG
0517 IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
0518 #endif
cf9e43202e Jean*0519
a6cbc7a360 Mart*0520
00f81e6785 Ou W*0521 CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
a6cbc7a360 Mart*0522 & myThid)
00f81e6785 Ou W*0523 CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
0524 CALL TIMER_STOP ('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
0525 & myThid)
0526 ENDIF
a6cbc7a360 Mart*0527 ENDIF
0528 #endif /* ALLOW_SHELFICE */
0529
5da8ce63fa Dimi*0530 #ifdef ALLOW_ICEFRONT
0531 IF ( useICEFRONT .AND. fluidIsWater ) THEN
0532 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0533 IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
5da8ce63fa Dimi*0534 #endif
0535
0536
0537 CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
0538 & myThid)
0539 CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
0540 CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
0541 & myThid)
0542 ENDIF
0543 #endif /* ALLOW_ICEFRONT */
0544
9d71427857 Jean*0545 #ifdef ALLOW_SALT_PLUME
0546 IF ( useSALT_PLUME ) THEN
1f89baba18 Patr*0547
ec0d7df165 Mart*0548 CALL SALT_PLUME_DO_EXCH( myTime, myIter, myThid )
9d71427857 Jean*0549 ENDIF
0550 #endif /* ALLOW_SALT_PLUME */
0551
c8d39c4db4 Jean*0552
0d6bd11ad2 Patr*0553 IF ( allowFreezing ) THEN
c8d39c4db4 Jean*0554 #ifdef ALLOW_AUTODIFF_TAMC
ec0d7df165 Mart*0555
c8d39c4db4 Jean*0556 #endif
9e647b4f24 Jean*0557 CALL FREEZE_SURFACE( myTime, myIter, myThid )
c8d39c4db4 Jean*0558 ENDIF
0559
cb5aad258c Jean*0560 iMin = 1-OLx
0561 iMax = sNx+OLx
0562 jMin = 1-OLy
0563 jMax = sNy+OLy
0564
0565
0566
517dbdc414 Jean*0567 #ifdef ALLOW_AUTODIFF
af61e5eb16 Mart*0568 # ifdef ALLOW_AUTODIFF_TAMC
ec0d7df165 Mart*0569
af61e5eb16 Mart*0570 # endif
517dbdc414 Jean*0571 #else /* ALLOW_AUTODIFF */
cb5aad258c Jean*0572
0573
2094169490 Jean*0574 IF ( fluidIsWater ) THEN
517dbdc414 Jean*0575 #endif /* ALLOW_AUTODIFF */
dc2ebbdaf0 Jean*0576 #ifdef ALLOW_DEBUG
0577 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
0578 #endif
cb5aad258c Jean*0579 CALL EXTERNAL_FORCING_SURF(
0580 I iMin, iMax, jMin, jMax,
0581 I myTime, myIter, myThid )
af61e5eb16 Mart*0582 #ifdef ALLOW_AUTODIFF_TAMC
0583
0584
0585
0586 #endif
22a8d54100 Jean*0587
abfe198bce Mart*0588 #ifdef ALLOW_OBCS
0589 IF (useOBCS) THEN
0590
0591
0592 # ifdef ALLOW_DEBUG
0593 IF (debugMode) CALL DEBUG_CALL('OBCS_ADJUST',myThid)
0594 # endif
0595 CALL OBCS_ADJUST(
0596 I myTime+deltaTClock, myIter+1, myThid )
0597 ENDIF
0598 #endif /* ALLOW_OBCS */
0599
c842b53753 Jean*0600 #ifdef ALLOW_AUTODIFF_TAMC
b7b61e618a Mart*0601
c842b53753 Jean*0602
0603 #endif /* ALLOW_AUTODIFF_TAMC */
0604 DO bj=myByLo(myThid),myByHi(myThid)
0605 #ifdef ALLOW_AUTODIFF_TAMC
b7b61e618a Mart*0606
460dc72355 Patr*0607
c842b53753 Jean*0608 #endif /* ALLOW_AUTODIFF_TAMC */
0609 DO bi=myBxLo(myThid),myBxHi(myThid)
0610
0611 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0612 tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy
741260dd7e Jean*0613 #endif /* ALLOW_AUTODIFF_TAMC */
c842b53753 Jean*0614
0615
0616
0617
0618
0619
c8b8efc127 Jean*0620 DO k=1,Nr
0621 DO j=1-OLy,sNy+OLy
0622 DO i=1-OLx,sNx+OLx
0623
0624 sigmaX(i,j,k) = 0. _d 0
0625 sigmaY(i,j,k) = 0. _d 0
0626 sigmaR(i,j,k) = 0. _d 0
0627 ENDDO
0628 ENDDO
0629 ENDDO
c842b53753 Jean*0630
0631 DO j=1-OLy,sNy+OLy
0632 DO i=1-OLx,sNx+OLx
cf9e43202e Jean*0633 rhoKm1 (i,j) = 0. _d 0
0634 rhoKp1 (i,j) = 0. _d 0
c842b53753 Jean*0635 ENDDO
0636 ENDDO
0320e25227 Mart*0637 #ifdef ALLOW_AUTODIFF
c8b8efc127 Jean*0638
0639
c842b53753 Jean*0640 DO k=1,Nr
0641 DO j=1-OLy,sNy+OLy
0642 DO i=1-OLx,sNx+OLx
958749fddb Patr*0643 rhoInSitu(i,j,k,bi,bj) = 0.
c8b8efc127 Jean*0644 # ifdef ALLOW_GGL90
0645 GGL90viscArU(i,j,k,bi,bj) = 0. _d 0
0646 GGL90viscArV(i,j,k,bi,bj) = 0. _d 0
0647 GGL90diffKr(i,j,k,bi,bj) = 0. _d 0
0648 # endif /* ALLOW_GGL90 */
1f89baba18 Patr*0649 # ifdef ALLOW_SALT_PLUME
0650 # ifdef SALT_PLUME_VOLUME
0651 SPforcingS(i,j,k,bi,bj) = 0. _d 0
0652 SPforcingT(i,j,k,bi,bj) = 0. _d 0
0653 # endif
0654 # endif /* ALLOW_SALT_PLUME */
c8b8efc127 Jean*0655 ENDDO
0656 ENDDO
0657 ENDDO
0658 #ifdef ALLOW_OFFLINE
0659 IF ( calcConvect ) THEN
0660 #endif
0661 DO k=1,Nr
0662 DO j=1-OLy,sNy+OLy
0663 DO i=1-OLx,sNx+OLx
c842b53753 Jean*0664 IVDConvCount(i,j,k,bi,bj) = 0.
c8b8efc127 Jean*0665 ENDDO
0666 ENDDO
0667 ENDDO
0668 #ifdef ALLOW_OFFLINE
0669 ENDIF
0670 IF ( calcGMRedi ) THEN
0671 #endif
c842b53753 Jean*0672 # ifdef ALLOW_GMREDI
c8b8efc127 Jean*0673 DO k=1,Nr
0674 DO j=1-OLy,sNy+OLy
0675 DO i=1-OLx,sNx+OLx
c842b53753 Jean*0676 Kwx(i,j,k,bi,bj) = 0. _d 0
0677 Kwy(i,j,k,bi,bj) = 0. _d 0
0678 Kwz(i,j,k,bi,bj) = 0. _d 0
0679 Kux(i,j,k,bi,bj) = 0. _d 0
0680 Kvy(i,j,k,bi,bj) = 0. _d 0
0681 # ifdef GM_EXTRA_DIAGONAL
0682 Kuz(i,j,k,bi,bj) = 0. _d 0
0683 Kvz(i,j,k,bi,bj) = 0. _d 0
0684 # endif
0685 # ifdef GM_BOLUS_ADVEC
0686 GM_PsiX(i,j,k,bi,bj) = 0. _d 0
0687 GM_PsiY(i,j,k,bi,bj) = 0. _d 0
0688 # endif
0689 # ifdef GM_VISBECK_VARIABLE_K
0690 VisbeckK(i,j,bi,bj) = 0. _d 0
0691 # endif
c8b8efc127 Jean*0692 ENDDO
0693 ENDDO
0694 ENDDO
c842b53753 Jean*0695 # endif /* ALLOW_GMREDI */
c8b8efc127 Jean*0696 #ifdef ALLOW_OFFLINE
0697 ENDIF
0698 IF ( calcKPP ) THEN
0699 #endif
8d29f48513 Patr*0700 # ifdef ALLOW_KPP
c8b8efc127 Jean*0701 DO k=1,Nr
0702 DO j=1-OLy,sNy+OLy
0703 DO i=1-OLx,sNx+OLx
8d29f48513 Patr*0704 KPPdiffKzS(i,j,k,bi,bj) = 0. _d 0
0705 KPPdiffKzT(i,j,k,bi,bj) = 0. _d 0
c842b53753 Jean*0706 ENDDO
0707 ENDDO
0708 ENDDO
c8b8efc127 Jean*0709 # endif /* ALLOW_KPP */
0710 #ifdef ALLOW_OFFLINE
0711 ENDIF
0712 #endif
517dbdc414 Jean*0713 #endif /* ALLOW_AUTODIFF */
c842b53753 Jean*0714
0715 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0716
0717
0718
27cc6013c1 Patr*0719 # ifdef ALLOW_KPP
edb6656069 Mart*0720
0721
27cc6013c1 Patr*0722 # endif
c842b53753 Jean*0723 #endif /* ALLOW_AUTODIFF_TAMC */
0724
842349fcb7 Jean*0725
0726
0727 #ifdef ALLOW_DEBUG
d497465397 Jean*0728 IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
842349fcb7 Jean*0729 #endif
517dbdc414 Jean*0730 #ifdef ALLOW_AUTODIFF
d497465397 Jean*0731 IF ( fluidIsWater ) THEN
517dbdc414 Jean*0732 #endif /* ALLOW_AUTODIFF */
1db41719d4 Jean*0733 #ifdef ALLOW_DOWN_SLOPE
d497465397 Jean*0734 IF ( useDOWN_SLOPE ) THEN
0735 DO k=1,Nr
1db41719d4 Jean*0736 CALL DWNSLP_CALC_RHO(
0737 I theta, salt,
842349fcb7 Jean*0738 O rhoInSitu(1-OLx,1-OLy,k,bi,bj),
1db41719d4 Jean*0739 I k, bi, bj, myTime, myIter, myThid )
d497465397 Jean*0740 ENDDO
0741 ENDIF
842349fcb7 Jean*0742 #endif /* ALLOW_DOWN_SLOPE */
15338fa568 Dimi*0743 #ifdef ALLOW_BBL
d497465397 Jean*0744 IF ( useBBL ) THEN
af61e5eb16 Mart*0745
0746
0747
0748
d497465397 Jean*0749 DO k=Nr,1,-1
15338fa568 Dimi*0750 CALL BBL_CALC_RHO(
0751 I theta, salt,
0752 O rhoInSitu,
0753 I k, bi, bj, myTime, myIter, myThid )
0754
d497465397 Jean*0755 ENDDO
0756 ENDIF
15338fa568 Dimi*0757 #endif /* ALLOW_BBL */
d497465397 Jean*0758 IF ( .NOT. ( useDOWN_SLOPE .OR. useBBL ) ) THEN
0759 DO k=1,Nr
842349fcb7 Jean*0760 CALL FIND_RHO_2D(
0761 I iMin, iMax, jMin, jMax, k,
0762 I theta(1-OLx,1-OLy,k,bi,bj),
0763 I salt (1-OLx,1-OLy,k,bi,bj),
0764 O rhoInSitu(1-OLx,1-OLy,k,bi,bj),
0765 I k, bi, bj, myThid )
d497465397 Jean*0766 ENDDO
0767 ENDIF
517dbdc414 Jean*0768 #ifdef ALLOW_AUTODIFF
d497465397 Jean*0769 ELSE
741260dd7e Jean*0770
d497465397 Jean*0771 DO k=1,Nr
34de4f2d34 Jean*0772 IF ( select_rStar.GE.1 .OR. selectSigmaCoord.GE.1 ) THEN
0773
0774 thetaRef = thetaConst
0775 ELSE
0776
0777 thetaRef = tRef(k)
0778 ENDIF
741260dd7e Jean*0779 DO j=1-OLy,sNy+OLy
0780 DO i=1-OLx,sNx+OLx
34de4f2d34 Jean*0781 rhoInSitu(i,j,k,bi,bj) =
0782 & ( theta(i,j,k,bi,bj)
0783 & *( salt(i,j,k,bi,bj)*atm_Rq + oneRL )
0784 & - thetaRef )*maskC(i,j,k,bi,bj)
741260dd7e Jean*0785 ENDDO
0786 ENDDO
d497465397 Jean*0787 ENDDO
0788 ENDIF
af61e5eb16 Mart*0789 # ifdef ALLOW_AUTODIFF_TAMC
0790
0791 # endif
517dbdc414 Jean*0792 #endif /* ALLOW_AUTODIFF */
1db41719d4 Jean*0793
d497465397 Jean*0794 #ifdef ALLOW_DEBUG
7eca977925 Jean*0795 IF (debugMode) THEN
0796 WRITE(msgBuf,'(A,2(I4,A))')
0797 & 'ENTERING UPWARD K LOOP (bi=', bi, ', bj=', bj,')'
0798 CALL DEBUG_MSG(msgBuf(1:43),myThid)
0799 ENDIF
d497465397 Jean*0800 #endif
0801
0802
0803 DO k=Nr,1,-1
0804
c842b53753 Jean*0805
0806
c8b8efc127 Jean*0807 IF ( calcGMRedi .OR. (k.GT.1 .AND. calcConvect)
d8d1486ca1 Jean*0808 & .OR. usePP81 .OR. useKL10
0809 & .OR. useMY82 .OR. useGGL90
b5aa60a554 Dimi*0810 & .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
c842b53753 Jean*0811 IF (k.GT.1) THEN
0320e25227 Mart*0812 IF ( usingZCoords ) THEN
0813 DO j=jMin,jMax
0814 DO i=iMin,iMax
0815 rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
0816 ENDDO
0817 ENDDO
0818 CALL FIND_RHO_2D(
0f5ba23f97 Jean*0819 I iMin, iMax, jMin, jMax, k,
0820 I theta(1-OLx,1-OLy,k-1,bi,bj),
0821 I salt (1-OLx,1-OLy,k-1,bi,bj),
0822 O rhoKm1,
0823 I k-1, bi, bj, myThid )
0320e25227 Mart*0824 ELSE
0825 CALL FIND_RHO_2D(
0826 I iMin, iMax, jMin, jMax, k-1,
0827 I theta(1-OLx,1-OLy,k,bi,bj),
0828 I salt (1-OLx,1-OLy,k,bi,bj),
0829 O rhoKp1,
0830 I k, bi, bj, myThid )
0831 DO j=jMin,jMax
0832 DO i=iMin,iMax
0833 rhoKm1(i,j) = rhoInSitu(i,j,k-1,bi,bj)
0834 ENDDO
0835 ENDDO
0836 ENDIF
c842b53753 Jean*0837 ENDIF
0838 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0839 IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
c842b53753 Jean*0840 #endif
0841 CALL GRAD_SIGMA(
0842 I bi, bj, iMin, iMax, jMin, jMax, k,
842349fcb7 Jean*0843 I rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
c842b53753 Jean*0844 O sigmaX, sigmaY, sigmaR,
0845 I myThid )
f59d76b0dd Ed D*0846
cda1c18f72 Jean*0847 #ifdef ALLOW_LEITH_QG
ecaa45da39 An T*0848 DO j=jMin,jMax
0849 DO i=iMin,iMax
0850 sigmaRfield(i,j,k,bi,bj)=sigmaR(i,j,k)
0851 ENDDO
0852 ENDDO
cda1c18f72 Jean*0853 #endif /* ALLOW_LEITH_QG */
f59d76b0dd Ed D*0854
517dbdc414 Jean*0855 #ifdef ALLOW_AUTODIFF
1db41719d4 Jean*0856 #ifdef GMREDI_WITH_STABLE_ADJOINT
bc93e58d13 Gael*0857
0858
1db41719d4 Jean*0859 CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
0860 CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
0861 CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
bc93e58d13 Gael*0862 #endif
517dbdc414 Jean*0863 #endif /* ALLOW_AUTODIFF */
c842b53753 Jean*0864 ENDIF
0865
0866
c8b8efc127 Jean*0867 IF (k.GT.1 .AND. calcConvect) THEN
c842b53753 Jean*0868 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0869 IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
c842b53753 Jean*0870 #endif
0871 CALL CALC_IVDC(
0872 I bi, bj, iMin, iMax, jMin, jMax, k,
da9b4e6c91 Mart*0873 I sigmaR,
c842b53753 Jean*0874 I myTime, myIter, myThid)
0875 ENDIF
0876
8ab93ea9a3 Jean*0877 #ifdef ALLOW_DIAGNOSTICS
d497465397 Jean*0878 IF ( doDiagsRho.GE.4 ) THEN
0879 CALL DIAGS_RHO_L( doDiagsRho, k, bi, bj,
0880 I rhoInSitu(1-OLx,1-OLy,1,bi,bj),
741260dd7e Jean*0881 I rhoKm1, wVel,
842349fcb7 Jean*0882 I myTime, myIter, myThid )
8ab93ea9a3 Jean*0883 ENDIF
0884 #endif
0885
c842b53753 Jean*0886
0887 ENDDO
0888
1e22f5fc71 Patr*0889 #ifdef ALLOW_AUTODIFF_TAMC
af61e5eb16 Mart*0890
0891
edb6656069 Mart*0892
1e22f5fc71 Patr*0893 #endif
0894
cf9e43202e Jean*0895
c8b8efc127 Jean*0896 IF ( calcGMRedi .OR. MOD(doDiagsRho,2).EQ.1 ) THEN
842349fcb7 Jean*0897 CALL CALC_OCE_MXLAYER(
0320e25227 Mart*0898 I rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
842349fcb7 Jean*0899 I bi, bj, myTime, myIter, myThid )
cf9e43202e Jean*0900 ENDIF
7f82819bd8 Patr*0901
8c3259a14c Dimi*0902 #ifdef ALLOW_SALT_PLUME
b5aa60a554 Dimi*0903 IF ( useSALT_PLUME ) THEN
842349fcb7 Jean*0904 CALL SALT_PLUME_CALC_DEPTH(
0320e25227 Mart*0905 I rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
842349fcb7 Jean*0906 I bi, bj, myTime, myIter, myThid )
1f89baba18 Patr*0907 #ifdef SALT_PLUME_VOLUME
0908 CALL SALT_PLUME_VOLFRAC(
0909 I bi, bj, myTime, myIter, myThid )
0910
0911 CALL SALT_PLUME_APPLY(
0320e25227 Mart*0912 I 1, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
1f89baba18 Patr*0913 I theta, 0,
0914 I myTime, myIter, myThid )
0915 CALL SALT_PLUME_APPLY(
0320e25227 Mart*0916 I 2, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
1f89baba18 Patr*0917 I salt, 0,
0918 I myTime, myIter, myThid )
0919
0920 CALL SALT_PLUME_FORCING_SURF(
0921 I bi, bj, iMin, iMax, jMin, jMax,
0922 I myTime, myIter, myThid )
0923 #endif /* SALT_PLUME_VOLUME */
e4775240e5 Dimi*0924 ENDIF
af61e5eb16 Mart*0925 # ifdef ALLOW_AUTODIFF_TAMC
0926
0927
0928 # endif /* ALLOW_AUTODIFF_TAMC */
b5aa60a554 Dimi*0929 #endif /* ALLOW_SALT_PLUME */
0930
9adfd21c8b Jean*0931 #ifdef ALLOW_DIAGNOSTICS
842349fcb7 Jean*0932 IF ( MOD(doDiagsRho,4).GE.2 ) THEN
f57fa1a615 Jean*0933 CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr,
0934 & 2, bi, bj, myThid)
9adfd21c8b Jean*0935 ENDIF
b5aa60a554 Dimi*0936 #endif /* ALLOW_DIAGNOSTICS */
9adfd21c8b Jean*0937
cb5aad258c Jean*0938
0939
c842b53753 Jean*0940
0941 #ifdef ALLOW_AUTODIFF_TAMC
0942
edb6656069 Mart*0943
0944
0945
0946
c842b53753 Jean*0947 #endif /* ALLOW_AUTODIFF_TAMC */
0948
0949 #ifdef ALLOW_KPP
0950
c8b8efc127 Jean*0951 IF ( calcKPP ) THEN
c842b53753 Jean*0952 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0953 IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
c842b53753 Jean*0954 #endif
fe0f90ad2c Davi*0955 CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
c842b53753 Jean*0956 CALL KPP_CALC(
bbf50a7383 Jean*0957 I bi, bj, myTime, myIter, myThid )
fe0f90ad2c Davi*0958 CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
517dbdc414 Jean*0959 #if (defined ALLOW_AUTODIFF) &&
c842b53753 Jean*0960 ELSE
0961 CALL KPP_CALC_DUMMY(
bbf50a7383 Jean*0962 I bi, bj, myTime, myIter, myThid )
517dbdc414 Jean*0963 #endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
c842b53753 Jean*0964 ENDIF
0965 #endif /* ALLOW_KPP */
0966
e864122ae8 Mart*0967 #ifdef ALLOW_PP81
0968
0969 IF (usePP81) THEN
0970 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0971 IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
e864122ae8 Mart*0972 #endif
0973 CALL PP81_CALC(
728c245bbd Jean*0974 I bi, bj, sigmaR, myTime, myIter, myThid )
e864122ae8 Mart*0975 ENDIF
0976 #endif /* ALLOW_PP81 */
0977
d8d1486ca1 Jean*0978 #ifdef ALLOW_KL10
0979
0980 IF (useKL10) THEN
0981 #ifdef ALLOW_DEBUG
0982 IF (debugMode) CALL DEBUG_CALL('KL10_CALC',myThid)
0983 #endif
0984 CALL KL10_CALC(
0985 I bi, bj, sigmaR, myTime, myIter, myThid )
0986 ENDIF
0987 #endif /* ALLOW_KL10 */
0988
e864122ae8 Mart*0989 #ifdef ALLOW_MY82
0990
0991 IF (useMY82) THEN
0992 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0993 IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
e864122ae8 Mart*0994 #endif
0995 CALL MY82_CALC(
728c245bbd Jean*0996 I bi, bj, sigmaR, myTime, myIter, myThid )
e864122ae8 Mart*0997 ENDIF
0998 #endif /* ALLOW_MY82 */
0999
69a7b27187 Mart*1000 #ifdef ALLOW_GGL90
2b52c649e6 Gael*1001 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*1002
2b52c649e6 Gael*1003 #endif /* ALLOW_AUTODIFF_TAMC */
69a7b27187 Mart*1004
0320e25227 Mart*1005 IF ( useGGL90 .AND. Nr.GT.1 ) THEN
69a7b27187 Mart*1006 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1007 IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
69a7b27187 Mart*1008 #endif
fe0f90ad2c Davi*1009 CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
69a7b27187 Mart*1010 CALL GGL90_CALC(
728c245bbd Jean*1011 I bi, bj, sigmaR, myTime, myIter, myThid )
fe0f90ad2c Davi*1012 CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
69a7b27187 Mart*1013 ENDIF
1014 #endif /* ALLOW_GGL90 */
1015
1db41719d4 Jean*1016 #ifdef ALLOW_GMREDI
cf9e43202e Jean*1017 #ifdef ALLOW_AUTODIFF_TAMC
1018 # ifndef GM_EXCLUDE_CLIPPING
1019
1020
1021
ff02675122 Jean*1022
edb6656069 Mart*1023
1024
1025
cf9e43202e Jean*1026 # endif
1027 #endif /* ALLOW_AUTODIFF_TAMC */
1028
1029
c8b8efc127 Jean*1030 IF ( calcGMRedi ) THEN
cf9e43202e Jean*1031 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1032 IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
cf9e43202e Jean*1033 #endif
1034 CALL GMREDI_CALC_TENSOR(
a0290d8c93 Jean*1035 I iMin, iMax, jMin, jMax,
cf9e43202e Jean*1036 I sigmaX, sigmaY, sigmaR,
a0290d8c93 Jean*1037 I bi, bj, myTime, myIter, myThid )
517dbdc414 Jean*1038 #if (defined ALLOW_AUTODIFF) &&
cf9e43202e Jean*1039 ELSE
1040 CALL GMREDI_CALC_TENSOR_DUMMY(
a0290d8c93 Jean*1041 I iMin, iMax, jMin, jMax,
cf9e43202e Jean*1042 I sigmaX, sigmaY, sigmaR,
a0290d8c93 Jean*1043 I bi, bj, myTime, myIter, myThid )
517dbdc414 Jean*1044 #endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
cf9e43202e Jean*1045 ENDIF
1db41719d4 Jean*1046 #endif /* ALLOW_GMREDI */
1047
1048 #ifdef ALLOW_DOWN_SLOPE
1049 IF ( useDOWN_SLOPE ) THEN
1050
1051 IF ( usingPCoords ) THEN
1052 CALL DWNSLP_CALC_FLOW(
842349fcb7 Jean*1053 I bi, bj, kSurfC, rhoInSitu,
1db41719d4 Jean*1054 I myTime, myIter, myThid )
1055 ELSE
1056 CALL DWNSLP_CALC_FLOW(
842349fcb7 Jean*1057 I bi, bj, kLowC, rhoInSitu,
1db41719d4 Jean*1058 I myTime, myIter, myThid )
1059 ENDIF
1060 ENDIF
1061 #endif /* ALLOW_DOWN_SLOPE */
cf9e43202e Jean*1062
3f38e138be Jean*1063
1064 ENDDO
1065 ENDDO
1066
517dbdc414 Jean*1067 #ifndef ALLOW_AUTODIFF
cb5aad258c Jean*1068
9e647b4f24 Jean*1069 ENDIF
1070 #endif
1071
dc2ebbdaf0 Jean*1072 #ifdef ALLOW_OFFLINE
1073 IF ( useOffLine ) THEN
1074 #ifdef ALLOW_DEBUG
1075 IF (debugMode) CALL DEBUG_CALL('OFFLINE_GET_DIFFUS',myThid)
1076 #endif /* ALLOW_DEBUG */
1077 CALL OFFLINE_GET_DIFFUS( myTime, myIter, myThid )
1078 ENDIF
1079 #endif /* ALLOW_OFFLINE */
1080
15338fa568 Dimi*1081 #ifdef ALLOW_BBL
1082 IF ( useBBL ) THEN
1083 CALL BBL_CALC_RHS(
1084 I myTime, myIter, myThid )
1085 ENDIF
1086 #endif /* ALLOW_BBL */
1087
5b0902e193 Dimi*1088 #ifdef ALLOW_MYPACKAGE
3f38e138be Jean*1089 IF ( useMYPACKAGE ) THEN
1090 CALL MYPACKAGE_CALC_RHS(
1091 I myTime, myIter, myThid )
1092 ENDIF
5b0902e193 Dimi*1093 #endif /* ALLOW_MYPACKAGE */
1094
9aea177344 Jean*1095 #ifdef ALLOW_GMREDI
c8b8efc127 Jean*1096 IF ( calcGMRedi ) THEN
9aea177344 Jean*1097 CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
1098 ENDIF
1099 #endif /* ALLOW_GMREDI */
1100
0ce7a76723 Jean*1101 #ifdef ALLOW_KPP
c8b8efc127 Jean*1102 IF ( calcKPP ) THEN
133aa1e926 Jean*1103 CALL KPP_DO_EXCH( myThid )
1104 ENDIF
0ce7a76723 Jean*1105 #endif /* ALLOW_KPP */
133aa1e926 Jean*1106
0320e25227 Mart*1107 #ifdef ALLOW_GGL90
1108 IF ( useGGL90 )
1109 & CALL GGL90_EXCHANGES( myThid )
1110 #endif /* ALLOW_GGL90 */
1111
38ee7d4239 Jean*1112 #ifdef ALLOW_DIAGNOSTICS
1113 IF ( fluidIsWater .AND. useDiagnostics ) THEN
741260dd7e Jean*1114 CALL DIAGS_RHO_G(
d497465397 Jean*1115 I rhoInSitu, uVel, vVel, wVel,
842349fcb7 Jean*1116 I myTime, myIter, myThid )
c18b173e8a Jean*1117 ENDIF
1118 IF ( useDiagnostics ) THEN
38ee7d4239 Jean*1119 CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
1120 ENDIF
c8b8efc127 Jean*1121 IF ( calcConvect .AND. useDiagnostics ) THEN
842349fcb7 Jean*1122 CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
1123 & 0, Nr, 0, 1, 1, myThid )
ad55014c08 Jean*1124 ENDIF
1f89baba18 Patr*1125 #ifdef ALLOW_SALT_PLUME
1126 IF ( useDiagnostics )
1127 & CALL SALT_PLUME_DIAGNOSTICS_FILL(bi,bj,myThid)
1128 #endif
38ee7d4239 Jean*1129 #endif
1130
c842b53753 Jean*1131 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1132 IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
c842b53753 Jean*1133 #endif
1134
1135 RETURN
1136 END