File indexing completed on 2025-11-07 06:08:10 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 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"
7c50f07931 Mart*0027 #ifdef ALLOW_AUTODIFF_TAMC
2dcaa8b9a5 Patr*0028 #include "tamc.h"
7c50f07931 Mart*0029 #endif /* ALLOW_AUTODIFF_TAMC */
fb481a83c2 Alis*0030
9366854e02 Chri*0031
fb481a83c2 Alis*0032
218973b4ce Jean*0033
0034
0035
0036
0037 INTEGER bi,bj
0038 _RL myTime
fb481a83c2 Alis*0039 INTEGER myIter
0040 INTEGER myThid
0041
0042 #ifdef INCLUDE_CONVECT_CALL
0043
517dbdc414 Jean*0044
0045 EXTERNAL DIFFERENT_MULTIPLE
0046 LOGICAL DIFFERENT_MULTIPLE
0047
9366854e02 Chri*0048
fb481a83c2 Alis*0049
218973b4ce Jean*0050
dd54a44307 Mart*0051
9366854e02 Chri*0052
0053
218973b4ce Jean*0054 INTEGER iMin,iMax,jMin,jMax
dd54a44307 Mart*0055 INTEGER i, j, k, kTop, kBottom, kDir, deltaK
7c50f07931 Mart*0056 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0057 INTEGER tkey, kkey
7c50f07931 Mart*0058 #endif
fb481a83c2 Alis*0059 _RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0060 _RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0061 _RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
dfe2344b20 Alis*0062 _RL weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0063 _RL weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
9366854e02 Chri*0064
fb481a83c2 Alis*0065
0066
0fa2023ba5 Jean*0067 IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,deltaTClock)
51d88069bf Jean*0068 & ) THEN
fb481a83c2 Alis*0069
218973b4ce Jean*0070
517dbdc414 Jean*0071 iMin=1-OLx
0072 iMax=sNx+OLx
0073 jMin=1-OLy
0074 jMax=sNy+OLy
218973b4ce Jean*0075
7103bd8015 Patr*0076
0077 kTop = 0
0078 kBottom = 0
0079 kDir = 0
0080 deltaK = 0
0081
b91a70728d Jean*0082
dd54a44307 Mart*0083 DO k=1,Nr
b91a70728d Jean*0084 DO j=1-OLy,sNy+OLy
0085 DO i=1-OLx,sNx+OLx
dd54a44307 Mart*0086 ConvectCount(i,j,k) = 0.
b91a70728d Jean*0087 ENDDO
0088 ENDDO
0089 ENDDO
0090
2dcaa8b9a5 Patr*0091 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0092 tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy
2dcaa8b9a5 Patr*0093 #endif /* ALLOW_AUTODIFF_TAMC */
0094
7c50f07931 Mart*0095 IF ( rkSign*gravitySign .GT. 0. ) THEN
9669509dca Jean*0096
7c50f07931 Mart*0097 kTop = 2
0098 kBottom = Nr
0099 kDir = 1
0100 deltaK = -1
0101 ELSE
9669509dca Jean*0102
7c50f07931 Mart*0103 kTop = Nr
0104 kBottom = 2
0105 kDir = -1
0106 deltaK = 0
0107 ENDIF
59e59b79d8 Mart*0108
fb481a83c2 Alis*0109
7c50f07931 Mart*0110 DO k=kTop,kBottom,kDir
59e59b79d8 Mart*0111
fb481a83c2 Alis*0112 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0113 kkey = k + (tkey-1)*Nr
dd54a44307 Mart*0114
0115
0116
0117
0118
0119
0120
fb481a83c2 Alis*0121 #endif /* ALLOW_AUTODIFF_TAMC */
dd54a44307 Mart*0122
7c50f07931 Mart*0123 CALL FIND_RHO_2D(
0124 I iMin, iMax, jMin, jMax, k+deltaK,
0125 I theta(1-OLx,1-OLy,k-1,bi,bj),
0126 I salt (1-OLx,1-OLy,k-1,bi,bj),
0127 O rhoKm1,
0128 I k-1, bi, bj, myThid )
fb481a83c2 Alis*0129
dd54a44307 Mart*0130
7c50f07931 Mart*0131 CALL FIND_RHO_2D(
0132 I iMin, iMax, jMin, jMax, k+deltaK,
0133 I theta(1-OLx,1-OLy,k,bi,bj),
0134 I salt (1-OLx,1-OLy,k,bi,bj),
0135 O rhoK,
0136 I k, bi, bj, myThid )
fb481a83c2 Alis*0137 #ifdef ALLOW_AUTODIFF_TAMC
dd54a44307 Mart*0138
0139
fb481a83c2 Alis*0140 #endif /* ALLOW_AUTODIFF_TAMC */
dfe2344b20 Alis*0141
dd54a44307 Mart*0142
7c50f07931 Mart*0143 CALL CONVECTIVE_WEIGHTS(
0144 I bi,bj,k,rhoKm1,rhoK,
0145 O weightA,weightB,ConvectCount,
0146 I myThid)
dfe2344b20 Alis*0147
dd54a44307 Mart*0148
7c50f07931 Mart*0149 CALL CONVECTIVELY_MIXTRACER(
0150 I bi,bj,k,weightA,weightB,
0151 U theta,
0152 I myThid)
dfe2344b20 Alis*0153
dd54a44307 Mart*0154
7c50f07931 Mart*0155 CALL CONVECTIVELY_MIXTRACER(
0156 I bi,bj,k,weightA,weightB,
0157 U salt,
0158 I myThid)
dfe2344b20 Alis*0159
5c43c390b6 Alis*0160 #ifdef ALLOW_PTRACERS
dd54a44307 Mart*0161
7c50f07931 Mart*0162 IF ( usePTRACERS ) THEN
0163 CALL PTRACERS_CONVECT(
0164 I bi,bj,k,weightA,weightB,myThid)
0165 ENDIF
5c43c390b6 Alis*0166 #endif /* ALLOW_PTRACERS */
0167
dd54a44307 Mart*0168
7c50f07931 Mart*0169 ENDDO
218973b4ce Jean*0170
0171 #ifdef ALLOW_DIAGNOSTICS
7c50f07931 Mart*0172 IF ( myIter.NE.nIter0 .AND. useDiagnostics ) THEN
0173 CALL DIAGNOSTICS_FILL( ConvectCount, 'CONVADJ ',
0174 I 0, Nr, 2, bi, bj, myThid )
0175 ENDIF
ad55014c08 Jean*0176 #endif /* ALLOW_DIAGNOSTICS */
0177
0fa2023ba5 Jean*0178
fb481a83c2 Alis*0179 ENDIF
0180
0181 #endif /* INCLUDE_CONVECT_CALL */
0182
0183 RETURN
0184 END