/[MITgcm]/MITgcm/model/src/calc_phi_hyd.F
ViewVC logotype

Diff of /MITgcm/model/src/calc_phi_hyd.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.29 by jmc, Tue Feb 18 15:30:47 2003 UTC revision 1.33 by mlosch, Tue Feb 7 11:47:49 2006 UTC
# Line 1  Line 1 
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
# Line 148  CADJ STORE sFld (:,:,k,bi,bj) = comlev1_ Line 149  CADJ STORE sFld (:,:,k,bi,bj) = comlev1_
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
# Line 233  CADJ STORE sFld (:,:,k,bi,bj) = comlev1_ Line 250  CADJ STORE sFld (:,:,k,bi,bj) = comlev1_
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
# Line 317  C       This is the hydrostatic geopoten Line 339  C       This is the hydrostatic geopoten
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
# Line 344  C--------------------------------------- Line 375  C---------------------------------------
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  --
# Line 377  C--------- Line 404  C---------
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
# Line 427  C--------- Line 449  C---------
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

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.33

  ViewVC Help
Powered by ViewVC 1.1.22