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

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

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

revision 1.6 by jmc, Fri Jan 15 22:39:54 2010 UTC revision 1.9 by jmc, Tue Jul 19 23:49:34 2011 UTC
# Line 62  C     i,j :: Loop counters Line 62  C     i,j :: Loop counters
62        _RL zero, one, half        _RL zero, one, half
63        _RL ddRloc, ratioRm, ratioRp        _RL ddRloc, ratioRm, ratioRp
64        PARAMETER ( zero= 0. _d 0 , one= 1. _d 0 , half= .5 _d 0 )        PARAMETER ( zero= 0. _d 0 , one= 1. _d 0 , half= .5 _d 0 )
65    #ifdef NONLIN_FRSURF
66          _RL facP, dPhiRef
67    #endif /* NONLIN_FRSURF */
68  CEOP  CEOP
69    
70        IF ( usingZCoords ) THEN        IF ( usingZCoords ) THEN
71    
72  C----- Compute bottom pressure deviation from gravity*rho0*H  C----- Compute bottom pressure deviation from gravity*rho0*H
73  C      Start from phiHyd at the (bottom) tracer point and add Del_h*g*rho'  C      Start from phiHyd at the (bottom) tracer point and add Del_h*g*rho_prime
74  C      with Del_h = distance from the bottom up to tracer point  C      with Del_h = distance from the bottom up to tracer point
75    
76  C--    Initialise to zero (otherwise phi0surf accumulate over land)  C--    Initialise to zero (otherwise phi0surf accumulate over land)
# Line 133  C  -- P coordinate : Phi(R_low) is simpl Line 136  C  -- P coordinate : Phi(R_low) is simpl
136    
137  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
138  c      IF ( select_rStar.GE.2 .AND. nonlinFreeSurf.GE.4 ) THEN  c      IF ( select_rStar.GE.2 .AND. nonlinFreeSurf.GE.4 ) THEN
139         IF ( select_rStar.GT.0 .AND. nonlinFreeSurf.GE.4 ) THEN         IF ( select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN
140          DO j=jMin,jMax  C-    Integral of b.dr = rStarFac * Integral of b.dr* :
141           DO i=iMin,iMax          IF ( fluidIsAir ) THEN
142             phiHydLow(i,j,bi,bj) = phiHydLow(i,j,bi,bj)  C-     Consistent with Phi'= Integr[ theta'.dPi ] :
143       &                          *rStarFacC(i,j,bi,bj)           DO j=jMin,jMax
144              DO i=iMin,iMax
145               facP = rStarFacC(i,j,bi,bj)**atm_kappa
146               dPhiRef = phiRef(2*k+1) - gravity*topoZ(i,j,bi,bj)
147         &                             - phi0surf(i,j,bi,bj)
148               phiHydLow(i,j,bi,bj) =
149         &              phiHydLow(i,j,bi,bj)*facP
150         &            + MAX( dPhiRef, zero )*( facP - 1. _d 0 )
151         &            + phi0surf(i,j,bi,bj)
152              ENDDO
153           ENDDO           ENDDO
154          ENDDO          ELSEIF ( usingPCoords ) THEN
155         ENDIF  C- Note: dPhiRef*(rStarFacC -1) = 1/rho*PSo*((eta+PSo)/PSo -1) = Bo_surf*etaN
156    C     so that this expression is the same as before (same as in "ELSE" block below)
157             DO j=jMin,jMax
158              DO i=iMin,iMax
159               dPhiRef = ( Ro_surf(i,j,bi,bj) - R_low(i,j,bi,bj) )
160         &              *recip_rhoConst
161               phiHydLow(i,j,bi,bj) =
162         &              phiHydLow(i,j,bi,bj)*rStarFacC(i,j,bi,bj)
163         &            + dPhiRef*( rStarFacC(i,j,bi,bj) - 1. _d 0 )
164         &            + phi0surf(i,j,bi,bj)
165              ENDDO
166             ENDDO
167            ELSE
168    C- Note: dPhiRef*(rStarFacC -1) = g*H*((eta+H)/H -1) = Bo_surf*etaN
169    C     so that this expression is the same as before (same as in "ELSE" block below)
170             DO j=jMin,jMax
171              DO i=iMin,iMax
172               dPhiRef = ( Ro_surf(i,j,bi,bj)-R_low(i,j,bi,bj) )
173         &              *gravity
174               phiHydLow(i,j,bi,bj) =
175         &              phiHydLow(i,j,bi,bj)*rStarFacC(i,j,bi,bj)
176         &            + dPhiRef*( rStarFacC(i,j,bi,bj) - 1. _d 0 )
177         &            + phi0surf(i,j,bi,bj)
178              ENDDO
179             ENDDO
180            ENDIF
181           ELSE
182    #else /* NONLIN_FRSURF */
183           IF ( .TRUE. ) THEN
184  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
185    
186          DO j=jMin,jMax           DO j=jMin,jMax
187           DO i=iMin,iMax            DO i=iMin,iMax
188             phiHydLow(i,j,bi,bj) = phiHydLow(i,j,bi,bj)             phiHydLow(i,j,bi,bj) = phiHydLow(i,j,bi,bj)
189       &            + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)       &            + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
190       &            + phi0surf(i,j,bi,bj)       &            + phi0surf(i,j,bi,bj)
191              ENDDO
192           ENDDO           ENDDO
193          ENDDO         ENDIF
194    
195  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
196  C  -- end if k=Nr.  C  -- end if k=Nr.

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22