File indexing completed on 2023-02-03 06:09:34 UTC
view on githubraw file Latest commit edb66560 on 2023-02-02 23:32:31 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
fb481a83c2 Alis*0002 #include "CPP_OPTIONS.h"
517dbdc414 Jean*0003 #ifdef ALLOW_AUTODIFF
0004 # include "AUTODIFF_OPTIONS.h"
0005 #endif
fb481a83c2 Alis*0006
9366854e02 Chri*0007
0008
0009
fb481a83c2 Alis*0010 SUBROUTINE CONVECTIVE_ADJUSTMENT(
218973b4ce Jean*0011 I bi, bj, myTime, myIter, myThid )
9366854e02 Chri*0012
0013
218973b4ce Jean*0014
0015
9366854e02 Chri*0016
0017
0018
0019
fb481a83c2 Alis*0020 IMPLICIT NONE
0021
0022 #include "SIZE.h"
0023 #include "EEPARAMS.h"
0024 #include "PARAMS.h"
0025 #include "DYNVARS.h"
0026 #include "GRID.h"
cc567180a0 Jean*0027 #ifdef ALLOW_TIMEAVE
0028 #include "TIMEAVE_STATV.h"
218973b4ce Jean*0029 #endif
7c50f07931 Mart*0030 #ifdef ALLOW_AUTODIFF_TAMC
2dcaa8b9a5 Patr*0031 #include "tamc.h"
7c50f07931 Mart*0032 #endif /* ALLOW_AUTODIFF_TAMC */
fb481a83c2 Alis*0033
9366854e02 Chri*0034
fb481a83c2 Alis*0035
218973b4ce Jean*0036
0037
0038
0039
0040 INTEGER bi,bj
0041 _RL myTime
fb481a83c2 Alis*0042 INTEGER myIter
0043 INTEGER myThid
0044
0045 #ifdef INCLUDE_CONVECT_CALL
0046
517dbdc414 Jean*0047
0048 EXTERNAL DIFFERENT_MULTIPLE
0049 LOGICAL DIFFERENT_MULTIPLE
0050
9366854e02 Chri*0051
fb481a83c2 Alis*0052
218973b4ce Jean*0053
dd54a44307 Mart*0054
9366854e02 Chri*0055
0056
218973b4ce Jean*0057 INTEGER iMin,iMax,jMin,jMax
dd54a44307 Mart*0058 INTEGER i, j, k, kTop, kBottom, kDir, deltaK
7c50f07931 Mart*0059 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0060 INTEGER tkey, kkey
7c50f07931 Mart*0061 #endif
fb481a83c2 Alis*0062 _RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0063 _RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0064 _RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
dfe2344b20 Alis*0065 _RL weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0066 _RL weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
9366854e02 Chri*0067
fb481a83c2 Alis*0068
0069
0fa2023ba5 Jean*0070 IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,deltaTClock)
51d88069bf Jean*0071 & ) THEN
fb481a83c2 Alis*0072
218973b4ce Jean*0073
517dbdc414 Jean*0074 iMin=1-OLx
0075 iMax=sNx+OLx
0076 jMin=1-OLy
0077 jMax=sNy+OLy
218973b4ce Jean*0078
7103bd8015 Patr*0079
0080 kTop = 0
0081 kBottom = 0
0082 kDir = 0
0083 deltaK = 0
0084
b91a70728d Jean*0085
dd54a44307 Mart*0086 DO k=1,Nr
b91a70728d Jean*0087 DO j=1-OLy,sNy+OLy
0088 DO i=1-OLx,sNx+OLx
dd54a44307 Mart*0089 ConvectCount(i,j,k) = 0.
b91a70728d Jean*0090 ENDDO
0091 ENDDO
0092 ENDDO
0093
2dcaa8b9a5 Patr*0094 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0095 tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy
2dcaa8b9a5 Patr*0096 #endif /* ALLOW_AUTODIFF_TAMC */
0097
7c50f07931 Mart*0098 IF ( rkSign*gravitySign .GT. 0. ) THEN
9669509dca Jean*0099
7c50f07931 Mart*0100 kTop = 2
0101 kBottom = Nr
0102 kDir = 1
0103 deltaK = -1
0104 ELSE
9669509dca Jean*0105
7c50f07931 Mart*0106 kTop = Nr
0107 kBottom = 2
0108 kDir = -1
0109 deltaK = 0
0110 ENDIF
59e59b79d8 Mart*0111
fb481a83c2 Alis*0112
7c50f07931 Mart*0113 DO k=kTop,kBottom,kDir
59e59b79d8 Mart*0114
fb481a83c2 Alis*0115 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0116 kkey = k + (tkey-1)*Nr
dd54a44307 Mart*0117
0118
0119
0120
0121
0122
0123
fb481a83c2 Alis*0124 #endif /* ALLOW_AUTODIFF_TAMC */
dd54a44307 Mart*0125
7c50f07931 Mart*0126 CALL FIND_RHO_2D(
0127 I iMin, iMax, jMin, jMax, k+deltaK,
0128 I theta(1-OLx,1-OLy,k-1,bi,bj),
0129 I salt (1-OLx,1-OLy,k-1,bi,bj),
0130 O rhoKm1,
0131 I k-1, bi, bj, myThid )
fb481a83c2 Alis*0132
dd54a44307 Mart*0133
7c50f07931 Mart*0134 CALL FIND_RHO_2D(
0135 I iMin, iMax, jMin, jMax, k+deltaK,
0136 I theta(1-OLx,1-OLy,k,bi,bj),
0137 I salt (1-OLx,1-OLy,k,bi,bj),
0138 O rhoK,
0139 I k, bi, bj, myThid )
fb481a83c2 Alis*0140 #ifdef ALLOW_AUTODIFF_TAMC
dd54a44307 Mart*0141
0142
fb481a83c2 Alis*0143 #endif /* ALLOW_AUTODIFF_TAMC */
dfe2344b20 Alis*0144
dd54a44307 Mart*0145
7c50f07931 Mart*0146 CALL CONVECTIVE_WEIGHTS(
0147 I bi,bj,k,rhoKm1,rhoK,
0148 O weightA,weightB,ConvectCount,
0149 I myThid)
dfe2344b20 Alis*0150
dd54a44307 Mart*0151
7c50f07931 Mart*0152 CALL CONVECTIVELY_MIXTRACER(
0153 I bi,bj,k,weightA,weightB,
0154 U theta,
0155 I myThid)
dfe2344b20 Alis*0156
dd54a44307 Mart*0157
7c50f07931 Mart*0158 CALL CONVECTIVELY_MIXTRACER(
0159 I bi,bj,k,weightA,weightB,
0160 U salt,
0161 I myThid)
dfe2344b20 Alis*0162
5c43c390b6 Alis*0163 #ifdef ALLOW_PTRACERS
dd54a44307 Mart*0164
7c50f07931 Mart*0165 IF ( usePTRACERS ) THEN
0166 CALL PTRACERS_CONVECT(
0167 I bi,bj,k,weightA,weightB,myThid)
0168 ENDIF
5c43c390b6 Alis*0169 #endif /* ALLOW_PTRACERS */
0170
dd54a44307 Mart*0171
7c50f07931 Mart*0172 ENDDO
218973b4ce Jean*0173
0174 #ifdef ALLOW_TIMEAVE
7c50f07931 Mart*0175 IF (myIter.NE.nIter0 .AND. taveFreq.GT.0.) THEN
0176 CALL TIMEAVE_CUMUL_1T(ConvectCountTave, ConvectCount,
0177 I Nr, deltaTClock, bi, bj, myThid)
0178 ENDIF
cc567180a0 Jean*0179 #endif /* ALLOW_TIMEAVE */
0180
218973b4ce Jean*0181 #ifdef ALLOW_DIAGNOSTICS
7c50f07931 Mart*0182 IF ( myIter.NE.nIter0 .AND. useDiagnostics ) THEN
0183 CALL DIAGNOSTICS_FILL( ConvectCount, 'CONVADJ ',
0184 I 0, Nr, 2, bi, bj, myThid )
0185 ENDIF
ad55014c08 Jean*0186 #endif /* ALLOW_DIAGNOSTICS */
0187
0fa2023ba5 Jean*0188
fb481a83c2 Alis*0189 ENDIF
0190
0191 #endif /* INCLUDE_CONVECT_CALL */
0192
0193 RETURN
0194 END