1 |
C $Header$ |
C $Header$ |
2 |
C $Name$ |
C $Name$ |
3 |
|
|
4 |
|
#include "PACKAGES_CONFIG.h" |
5 |
#include "CPP_OPTIONS.h" |
#include "CPP_OPTIONS.h" |
6 |
|
|
7 |
CBOP |
CBOP |
149 |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, k, |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, k, |
150 |
& tFld, sFld, |
& tFld, sFld, |
151 |
& alphaRho, myThid) |
& alphaRho, myThid) |
152 |
|
#ifdef ALLOW_SHELFICE |
153 |
|
C mask rho, so that there is no contribution of phiHyd from |
154 |
|
C overlying shelfice (whose density we do not know) |
155 |
|
IF ( useShelfIce ) THEN |
156 |
|
DO j=jMin,jMax |
157 |
|
DO i=iMin,iMax |
158 |
|
alphaRho(i,j) = alphaRho(i,j)*maskC(i,j,k,bi,bj) |
159 |
|
ENDDO |
160 |
|
ENDDO |
161 |
|
ENDIF |
162 |
|
#endif /* ALLOW_SHELFICE */ |
163 |
|
|
164 |
|
#ifdef ALLOW_DIAGNOSTICS |
165 |
|
IF ( useDiagnostics ) |
166 |
|
& CALL DIAGNOSTICS_FILL(alphaRho,'RHOAnoma',k,1,2,bi,bj,myThid) |
167 |
|
#endif |
168 |
|
|
169 |
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 |
170 |
IF (quasiHydrostatic) THEN |
IF (quasiHydrostatic) THEN |
250 |
CADJ STORE alphaRho (:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE alphaRho (:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
251 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
252 |
|
|
253 |
|
#ifdef ALLOW_DIAGNOSTICS |
254 |
|
IF ( useDiagnostics ) |
255 |
|
& CALL DIAGNOSTICS_FILL(alphaRho,'RHOAnoma',k,1,2,bi,bj,myThid) |
256 |
|
#endif |
257 |
|
|
258 |
C-- Calculate specific volume anomaly : alpha' = 1/rho - alpha_Cst |
C-- Calculate specific volume anomaly : alpha' = 1/rho - alpha_Cst |
259 |
DO j=jMin,jMax |
DO j=jMin,jMax |
260 |
DO i=iMin,iMax |
DO i=iMin,iMax |
339 |
C The ideal gas law is used implicitly here rather than calculating |
C The ideal gas law is used implicitly here rather than calculating |
340 |
C the specific volume, analogous to the oceanic case. |
C the specific volume, analogous to the oceanic case. |
341 |
|
|
342 |
|
C-- virtual potential temperature anomaly (including water vapour effect) |
343 |
|
DO j=jMin,jMax |
344 |
|
DO i=iMin,iMax |
345 |
|
alphaRho(i,j)=maskC(i,j,k,bi,bj) |
346 |
|
& *( tFld(i,j,k,bi,bj)*(sFld(i,j,k,bi,bj)*atm_Rq+one) |
347 |
|
& -tRef(k) ) |
348 |
|
ENDDO |
349 |
|
ENDDO |
350 |
|
|
351 |
C--- Integrate d Phi / d pi |
C--- Integrate d Phi / d pi |
352 |
|
|
353 |
IF (integr_GeoPot.EQ.0) THEN |
IF (integr_GeoPot.EQ.0) THEN |
375 |
C-------- This discretization is the energy conserving form |
C-------- This discretization is the energy conserving form |
376 |
DO j=jMin,jMax |
DO j=jMin,jMax |
377 |
DO i=iMin,iMax |
DO i=iMin,iMax |
378 |
phiHydC(i,j) = phiHydF(i,j) |
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j) |
379 |
& +ddPIm*maskC(i,j,k,bi,bj) |
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j) |
|
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
|
|
phiHydF(i,j) = phiHydC(i,j) |
|
|
& +ddPIp*maskC(i,j,k,bi,bj) |
|
|
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
|
380 |
ENDDO |
ENDDO |
381 |
ENDDO |
ENDDO |
382 |
C end: Energy Conserving Form, No hFac -- |
C end: Energy Conserving Form, No hFac -- |
404 |
ddRloc = ddRloc + surfPhiFac*etaH(i,j,bi,bj) |
ddRloc = ddRloc + surfPhiFac*etaH(i,j,bi,bj) |
405 |
#endif |
#endif |
406 |
phiHydC(i,j) = ddRloc*recip_drF(k)*2. _d 0 |
phiHydC(i,j) = ddRloc*recip_drF(k)*2. _d 0 |
407 |
& *ddPIm*maskC(i,j,k,bi,bj) |
& *ddPIm*alphaRho(i,j) |
|
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
|
408 |
ELSE |
ELSE |
409 |
phiHydC(i,j) = phiHydF(i,j) |
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j) |
|
& +ddPIm*maskC(i,j,k,bi,bj) |
|
|
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
|
410 |
ENDIF |
ENDIF |
411 |
phiHydF(i,j) = phiHydC(i,j) |
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j) |
|
& +ddPIp*maskC(i,j,k,bi,bj) |
|
|
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
|
412 |
ENDDO |
ENDDO |
413 |
ENDDO |
ENDDO |
414 |
C end: Finite Volume Form, with Part-Cell Topo, linear in P by Half level |
C end: Finite Volume Form, with Part-Cell Topo, linear in P by Half level |
449 |
#endif |
#endif |
450 |
phiHydC(i,j) =( MAX(zero,ddRloc)*rec_dRm*ddPIm |
phiHydC(i,j) =( MAX(zero,ddRloc)*rec_dRm*ddPIm |
451 |
& +MIN(zero,ddRloc)*rec_dRp*ddPIp ) |
& +MIN(zero,ddRloc)*rec_dRp*ddPIp ) |
452 |
& *(tFld(i,j,k,bi,bj)-tRef(k)) |
& *alphaRho(i,j) |
453 |
ELSE |
ELSE |
454 |
phiHydC(i,j) = phiHydF(i,j) |
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j) |
|
& +ddPIm*maskC(i,j,k,bi,bj) |
|
|
& *(tFld(I,J,k,bi,bj)-tRef(k)) |
|
455 |
ENDIF |
ENDIF |
456 |
phiHydF(i,j) = phiHydC(i,j) |
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j) |
|
& +ddPIp*maskC(i,j,k,bi,bj) |
|
|
& *(tFld(I,J,k,bi,bj)-tRef(k)) |
|
457 |
ENDDO |
ENDDO |
458 |
ENDDO |
ENDDO |
459 |
C end: Finite Difference Form, with Part-Cell Topo |
C end: Finite Difference Form, with Part-Cell Topo |