File indexing completed on 2025-11-07 06:08:36 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
0c49347dc7 Alis*0001 #include "GMREDI_OPTIONS.h"
94a8024bbe Jean*0002 #ifdef ALLOW_CTRL
0003 # include "CTRL_OPTIONS.h"
0004 #endif
0c49347dc7 Alis*0005
8391062d12 Jean*0006
e04376af63 Jean*0007
8391062d12 Jean*0008
e04376af63 Jean*0009 SUBROUTINE GMREDI_INIT_VARIA( myThid )
8391062d12 Jean*0010
0011
0012
e04376af63 Jean*0013
8391062d12 Jean*0014
0015
0016
f6de204bec Jean*0017
8391062d12 Jean*0018
0c49347dc7 Alis*0019 IMPLICIT NONE
0020
0021
0022 #include "SIZE.h"
0023 #include "EEPARAMS.h"
0024 #include "PARAMS.h"
0025 #include "GRID.h"
0026 #include "GMREDI.h"
0027
8391062d12 Jean*0028
0029
0c49347dc7 Alis*0030 INTEGER myThid
8391062d12 Jean*0031
0c49347dc7 Alis*0032
0033 #ifdef ALLOW_GMREDI
8391062d12 Jean*0034
f42e64b3e7 Jean*0035 INTEGER i,j,k,bi,bj
0c49347dc7 Alis*0036
94a8024bbe Jean*0037
0038 #if (defined ALLOW_KAPREDI_CONTROL && defined GM_READ_K3D_REDI )
0039
0040 DO bj = myByLo(myThid), myByHi(myThid)
0041 DO bi = myBxLo(myThid), myBxHi(myThid)
0042 DO k=1,Nr
0043 DO j=1-OLy,sNy+OLy
0044 DO i=1-OLx,sNx+OLx
0045 GM_inpK3dRedi(i,j,k,bi,bj) = GM_isopycK
0046 & *GM_isoFac1d(k)*GM_isoFac2d(i,j,bi,bj)
0047 ENDDO
0048 ENDDO
0049 ENDDO
0050 ENDDO
0051 ENDDO
0052 #endif /* ALLOW_KAPREDI_CONTROL and GM_READ_K3D_REDI */
0053 #if (defined ALLOW_KAPGM_CONTROL && defined GM_READ_K3D_GM )
0054
0055 DO bj = myByLo(myThid), myByHi(myThid)
0056 DO bi = myBxLo(myThid), myBxHi(myThid)
0057 DO k=1,Nr
0058 DO j=1-OLy,sNy+OLy
0059 DO i=1-OLx,sNx+OLx
0060 GM_inpK3dGM(i,j,k,bi,bj) = GM_background_K
0061 & *GM_bolFac1d(k)*GM_bolFac2d(i,j,bi,bj)
0062 ENDDO
0063 ENDDO
0064 ENDDO
0065 ENDDO
0066 ENDDO
0067 #endif /* ALLOW_KAPGM_CONTROL and GM_READ_K3D_GM */
0068
0069
0070 #ifdef ALLOW_AUTODIFF
0071
0072
0073
0074
0075 IF ( useGMRedi ) THEN
0076 #endif
a4576c7cde Juli*0077 #ifdef GM_GEOM_VARIABLE_K
0078
0079 _BEGIN_MASTER( myThid )
0080 GEOM_startAB = MIN( nIter0, 1 )
0081 _END_MASTER( myThid )
0082 #endif
94a8024bbe Jean*0083
0084 #if (defined ALLOW_KAPREDI_CONTROL && defined GM_READ_K3D_REDI )
0085
0086 IF ( GM_K3dRediFile .NE. ' ' ) THEN
0087 CALL READ_FLD_XYZ_RL( GM_K3dRediFile, ' ',
0088 & GM_inpK3dRedi, 0, myThid )
0089 CALL EXCH_XYZ_RL( GM_inpK3dRedi, myThid )
0090 ENDIF
0091 #endif /* ALLOW_KAPREDI_CONTROL and GM_READ_K3D_REDI */
0092 #if (defined ALLOW_KAPGM_CONTROL && defined GM_READ_K3D_GM )
0093
0094 IF ( GM_K3dGMFile .NE. ' ' ) THEN
0095 CALL READ_FLD_XYZ_RL( GM_K3dGMFile, ' ',
0096 & GM_inpK3dGM, 0, myThid )
0097 CALL EXCH_XYZ_RL( GM_inpK3dGM, myThid )
0098 ENDIF
0099 #endif /* ALLOW_KAPGM_CONTROL and GM_READ_K3D_GM */
0100
0c49347dc7 Alis*0101 DO bj = myByLo(myThid), myByHi(myThid)
0102 DO bi = myBxLo(myThid), myBxHi(myThid)
f42e64b3e7 Jean*0103
a4576c7cde Juli*0104
f42e64b3e7 Jean*0105 DO k=1,Nr
796b5e35f7 Jean*0106 DO j=1-OLy,sNy+OLy
0107 DO i=1-OLx,sNx+OLx
b6b11b9b2f Patr*0108 Kwx(i,j,k,bi,bj) = 0. _d 0
0109 Kwy(i,j,k,bi,bj) = 0. _d 0
0110 Kwz(i,j,k,bi,bj) = 0. _d 0
796b5e35f7 Jean*0111 Kux(i,j,k,bi,bj) = 0. _d 0
0112 Kvy(i,j,k,bi,bj) = 0. _d 0
f42e64b3e7 Jean*0113 #ifdef GM_EXTRA_DIAGONAL
b6b11b9b2f Patr*0114 Kuz(i,j,k,bi,bj) = 0. _d 0
0115 Kvz(i,j,k,bi,bj) = 0. _d 0
f42e64b3e7 Jean*0116 #endif
0117 #ifdef GM_BOLUS_ADVEC
b6b11b9b2f Patr*0118 GM_PsiX(i,j,k,bi,bj) = 0. _d 0
0119 GM_PsiY(i,j,k,bi,bj) = 0. _d 0
f42e64b3e7 Jean*0120 #endif
f59d76b0dd Ed D*0121 #ifdef ALLOW_GM_LEITH_QG
0122 GM_LeithQG_K(i,j,k,bi,bj) = 0. _d 0
f42e64b3e7 Jean*0123 #endif
05118ac017 Jean*0124 #ifdef GM_BATES_K3D
0125 GM_BatesK3d(i,j,k,bi,bj) = 0. _d 0
0d1e4b948d Mich*0126 #endif
a4576c7cde Juli*0127 #ifdef GM_GEOM_VARIABLE_K
0128 GEOM_K3d(i,j,k,bi,bj) = 0. _d 0
0129 #endif
f42e64b3e7 Jean*0130 ENDDO
0131 ENDDO
0132 ENDDO
a4576c7cde Juli*0133
0134 DO j=1-OLy,sNy+OLy
0135 DO i=1-OLx,sNx+OLx
0136 #ifdef GM_VISBECK_VARIABLE_K
0137 VisbeckK(i,j,bi,bj) = 0. _d 0
0138 #endif
0139 #ifdef GM_GEOM_VARIABLE_K
0140 GEOM_EKE(i,j,bi,bj) = GEOM_ini_EKE * maskInC(i,j,bi,bj)
0141 GEOM_gEKE_Nm1(i,j,bi,bj) = 0. _d 0
0142 #endif
0143 ENDDO
0144 ENDDO
f42e64b3e7 Jean*0145
0146
0147 ENDDO
0148 ENDDO
f6de204bec Jean*0149
94a8024bbe Jean*0150
f6de204bec Jean*0151
0152 IF ( GM_iso1dFile .NE. ' ' ) THEN
0153 CALL WRITE_GLVEC_RS( 'GM_isoFac1d', ' ', GM_isoFac1d,
0154 I Nr, -1, myThid )
0155 ENDIF
0156 IF ( GM_bol1dFile .NE. ' ' ) THEN
0157 CALL WRITE_GLVEC_RS( 'GM_bolFac1d', ' ', GM_bolFac1d,
0158 I Nr, -1, myThid )
0159 ENDIF
0160 IF ( GM_iso2dFile .NE. ' ' ) THEN
0161 CALL WRITE_FLD_XY_RS( 'GM_isoFac2d',' ',GM_isoFac2d,-1,myThid )
0162 ENDIF
0163 IF ( GM_bol2dFile .NE. ' ' ) THEN
0164 CALL WRITE_FLD_XY_RS( 'GM_bolFac2d',' ',GM_bolFac2d,-1,myThid )
0165 ENDIF
0c49347dc7 Alis*0166
a4576c7cde Juli*0167 #if ( defined GM_BATES_K3D || defined GM_GEOM_VARIABLE_K )
0168 IF ( .NOT.( startTime.EQ.baseTime .AND. nIter0.EQ.0
0169 & .AND. pickupSuff.EQ.' ' )
0170 & .AND.( GM_useBatesK3d .OR. GM_useGEOM ) ) THEN
0171 CALL GMREDI_READ_PICKUP( nIter0, myThid )
5a6ef5c2b4 Mich*0172 ENDIF
0173 #endif
f183cca6ba Davi*0174
05118ac017 Jean*0175 #ifdef GM_BATES_K3D
a4576c7cde Juli*0176
0177
0178
f183cca6ba Davi*0179
0180 IF ( selectCoriMap.EQ.1 ) THEN
0181 DO bj = myByLo(myThid), myByHi(myThid)
0182 DO bi = myBxLo(myThid), myBxHi(myThid)
796b5e35f7 Jean*0183 DO j=1-OLy,sNy+OLy
0184 DO i=1-OLx,sNx+OLx
f183cca6ba Davi*0185 gradf(i,j,bi,bj) = beta
0186 ENDDO
0187 ENDDO
0188 ENDDO
0189 ENDDO
0190 ELSEIF ( selectCoriMap.EQ.2 ) THEN
0191 DO bj = myByLo(myThid), myByHi(myThid)
0192 DO bi = myBxLo(myThid), myBxHi(myThid)
796b5e35f7 Jean*0193 DO j=1-OLy,sNy+OLy
0194 DO i=1-OLx,sNx+OLx
f183cca6ba Davi*0195 gradf(i,j,bi,bj) = recip_rSphere*fCoriCos(i,j,bi,bj)
0196 ENDDO
0197 ENDDO
0198 ENDDO
0199 ENDDO
0200 ELSE
0201 DO bj = myByLo(myThid), myByHi(myThid)
0202 DO bi = myBxLo(myThid), myBxHi(myThid)
796b5e35f7 Jean*0203 DO j=1-OLy+1,sNy+OLy-1
0204 DO i=1-OLx+1,sNx+OLx-1
f183cca6ba Davi*0205 gradf(i,j,bi,bj) = .5 _d 0*angleSinC(i,j,bi,bj)*(
0206 & (fCori(i+1,j,bi,bj)-fCori(i ,j,bi,bj))*recip_dxC(i+1,j,bi,bj)
0207 & +(fCori(i ,j,bi,bj)-fCori(i-1,j,bi,bj))*recip_dxC(i,j,bi,bj) )
0208 & + .5 _d 0*angleCosC(i,j,bi,bj)*(
0209 & (fCori(i,j+1,bi,bj)-fCori(i,j ,bi,bj))*recip_dyC(i,j+1,bi,bj)
0210 & +(fCori(i,j ,bi,bj)-fCori(i,j-1,bi,bj))*recip_dyC(i,j,bi,bj) )
0211 gradf(i,j,bi,bj)=max(1. _d -18, gradf(i,j,bi,bj) )
0212 ENDDO
0213 ENDDO
0214 ENDDO
0215 ENDDO
0216 ENDIF
0217 CALL EXCH_XY_RL( gradf, myThid)
94a8024bbe Jean*0218 #endif /* GM_BATES_K3D */
0219
0220 #ifdef ALLOW_AUTODIFF
0221 ENDIF
f183cca6ba Davi*0222 #endif
94a8024bbe Jean*0223 #endif /* ALLOW_GMREDI */
f183cca6ba Davi*0224
8391062d12 Jean*0225 RETURN
0226 END