12 |
I tFld, sFld, |
I tFld, sFld, |
13 |
U phiHydF, |
U phiHydF, |
14 |
O phiHydC, dPhiHydX, dPhiHydY, |
O phiHydC, dPhiHydX, dPhiHydY, |
15 |
I myTime, myIter, myThid) |
I myTime, myIter, myThid ) |
16 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
17 |
C *==========================================================* |
C *==========================================================* |
18 |
C | SUBROUTINE CALC_PHI_HYD | |
C | SUBROUTINE CALC_PHI_HYD | |
135 |
C This is the hydrostatic pressure calculation for the Ocean |
C This is the hydrostatic pressure calculation for the Ocean |
136 |
C which uses the FIND_RHO() routine to calculate density |
C which uses the FIND_RHO() routine to calculate density |
137 |
C before integrating g*rho over the current layer/interface |
C before integrating g*rho over the current layer/interface |
138 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
139 |
CADJ GENERAL |
CADJ GENERAL |
140 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
141 |
|
|
142 |
|
IF ( implicitIntGravWave .OR. myIter.LT.0 ) THEN |
143 |
C--- Calculate density |
C--- Calculate density |
144 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
145 |
kkey = (ikey-1)*Nr + k |
kkey = (ikey-1)*Nr + k |
146 |
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
147 |
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
148 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
149 |
CALL FIND_RHO_2D( |
CALL FIND_RHO_2D( |
150 |
I iMin, iMax, jMin, jMax, k, |
I iMin, iMax, jMin, jMax, k, |
151 |
I tFld(1-OLx,1-OLy,k,bi,bj), sFld(1-OLx,1-OLy,k,bi,bj), |
I tFld(1-OLx,1-OLy,k,bi,bj), |
152 |
O alphaRho, |
I sFld(1-OLx,1-OLy,k,bi,bj), |
153 |
I k, bi, bj, myThid ) |
O alphaRho, |
154 |
|
I k, bi, bj, myThid ) |
155 |
|
ELSE |
156 |
|
DO j=jMin,jMax |
157 |
|
DO i=iMin,iMax |
158 |
|
alphaRho(i,j) = rhoInSitu(i,j,k,bi,bj) |
159 |
|
ENDDO |
160 |
|
ENDDO |
161 |
|
ENDIF |
162 |
|
|
163 |
#ifdef ALLOW_SHELFICE |
#ifdef ALLOW_SHELFICE |
164 |
C mask rho, so that there is no contribution of phiHyd from |
C mask rho, so that there is no contribution of phiHyd from |
181 |
ENDIF |
ENDIF |
182 |
#endif /* ALLOW_SHELFICE */ |
#endif /* ALLOW_SHELFICE */ |
183 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
IF ( useDiagnostics ) |
|
|
& CALL DIAGNOSTICS_FILL(alphaRho,'RHOAnoma',k,1,2,bi,bj,myThid) |
|
|
#endif |
|
|
|
|
184 |
#ifdef ALLOW_MOM_COMMON |
#ifdef ALLOW_MOM_COMMON |
185 |
C Quasi-hydrostatic terms are added in as if they modify the buoyancy |
C Quasi-hydrostatic terms are added in as if they modify the buoyancy |
186 |
IF (quasiHydrostatic) THEN |
IF (quasiHydrostatic) THEN |
254 |
CADJ GENERAL |
CADJ GENERAL |
255 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
256 |
|
|
257 |
|
IF ( implicitIntGravWave .OR. myIter.LT.0 ) THEN |
258 |
C-- Calculate density |
C-- Calculate density |
259 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
260 |
kkey = (ikey-1)*Nr + k |
kkey = (ikey-1)*Nr + k |
261 |
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
262 |
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
263 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
264 |
CALL FIND_RHO_2D( |
CALL FIND_RHO_2D( |
265 |
I iMin, iMax, jMin, jMax, k, |
I iMin, iMax, jMin, jMax, k, |
266 |
I tFld(1-OLx,1-OLy,k,bi,bj), sFld(1-OLx,1-OLy,k,bi,bj), |
I tFld(1-OLx,1-OLy,k,bi,bj), |
267 |
O alphaRho, |
I sFld(1-OLx,1-OLy,k,bi,bj), |
268 |
I k, bi, bj, myThid ) |
O alphaRho, |
269 |
|
I k, bi, bj, myThid ) |
270 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
271 |
CADJ STORE alphaRho (:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE alphaRho (:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
272 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
273 |
|
ELSE |
274 |
#ifdef ALLOW_DIAGNOSTICS |
DO j=jMin,jMax |
275 |
IF ( useDiagnostics ) |
DO i=iMin,iMax |
276 |
& CALL DIAGNOSTICS_FILL(alphaRho,'RHOAnoma',k,1,2,bi,bj,myThid) |
alphaRho(i,j) = rhoInSitu(i,j,k,bi,bj) |
277 |
#endif |
ENDDO |
278 |
|
ENDDO |
279 |
|
ENDIF |
280 |
|
|
281 |
C-- Calculate specific volume anomaly : alpha' = 1/rho - alpha_Cst |
C-- Calculate specific volume anomaly : alpha' = 1/rho - alpha_Cst |
282 |
DO j=jMin,jMax |
DO j=jMin,jMax |