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

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

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

revision 1.2 by jmc, Sun Feb 9 02:00:50 2003 UTC revision 1.3 by jmc, Tue Feb 18 15:30:47 2003 UTC
# Line 8  C     !ROUTINE: CALC_GRAD_PHI_HYD Line 8  C     !ROUTINE: CALC_GRAD_PHI_HYD
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE CALC_GRAD_PHI_HYD(        SUBROUTINE CALC_GRAD_PHI_HYD(
10       I                       k, bi, bj, iMin,iMax, jMin,jMax,       I                       k, bi, bj, iMin,iMax, jMin,jMax,
11       I                       phiHyd, alphRho, tFld, sFld,       I                       phiHydC, alphRho, tFld, sFld,
12       O                       dPhiHydX, dPhiHydY,       O                       dPhiHydX, dPhiHydY,
13       I                       myTime, myIter, myThid)       I                       myTime, myIter, myThid)
14  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
# Line 26  C     == Global variables == Line 26  C     == Global variables ==
26  #include "PARAMS.h"  #include "PARAMS.h"
27  #include "GRID.h"  #include "GRID.h"
28  #include "SURFACE.h"  #include "SURFACE.h"
29    #include "DYNVARS.h"
30    
31  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
32  C     == Routine Arguments ==  C     == Routine Arguments ==
33  C     bi,bj      :: tile index              C     bi,bj      :: tile index            
34  C     iMin,iMax,jMin,jMax :: Loop counters  C     iMin,iMax,jMin,jMax :: Loop counters
35  C     phiHyd     :: Hydrostatic Potential anomaly  C     phiHydC    :: Hydrostatic Potential anomaly
36  C                  (atmos: =Geopotential ; ocean-z: =Pressure/rho)  C                  (atmos: =Geopotential ; ocean-z: =Pressure/rho)
37  C     alphRho    :: Density (z-coord) or specific volume (p-coord)  C     alphRho    :: Density (z-coord) or specific volume (p-coord)
38  C     tFld       :: Potential temp.  C     tFld       :: Potential temp.
# Line 41  C     myTime :: Current time Line 42  C     myTime :: Current time
42  C     myIter :: Current iteration number  C     myIter :: Current iteration number
43  C     myThid :: Instance number for this call of the routine.  C     myThid :: Instance number for this call of the routine.
44        INTEGER k, bi,bj, iMin,iMax, jMin,jMax        INTEGER k, bi,bj, iMin,iMax, jMin,jMax
45        _RL phiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)  c     _RL phiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
46          _RL phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47        _RL alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48        _RL tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
49        _RL sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
# Line 57  C     == Local variables == Line 59  C     == Local variables ==
59  C     i,j :: Loop counters  C     i,j :: Loop counters
60        INTEGER i,j        INTEGER i,j
61        _RL varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
62          _RL factorZ, factorP, conv_theta2T
63  CEOP  CEOP
64    
65        DO j=jMin-1,jMax  #ifdef NONLIN_FRSURF
66         DO i=iMin-1,iMax        IF (select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN
67          varLoc(i,j) = phiHyd(i,j,k)+phi0surf(i,j,bi,bj)         DO j=jMin-1,jMax
68  c       varLoc(i,j) = phiHyd(i,j,k)          DO i=iMin-1,iMax
69             varLoc(i,j) = phiHydC(i,j)*rStarFacC(i,j,bi,bj)
70         &               + phi0surf(i,j,bi,bj)
71            ENDDO
72         ENDDO         ENDDO
73        ENDDO        ELSE
74    #else /* NONLIN_FRSURF */
75          IF (.TRUE.) THEN
76    #endif /* NONLIN_FRSURF */
77           DO j=jMin-1,jMax
78            DO i=iMin-1,iMax
79             varLoc(i,j) = phiHydC(i,j)+phi0surf(i,j,bi,bj)
80            ENDDO
81           ENDDO
82          ENDIF
83    
84  C-    Zonal gradient  C--   Zonal & Meridional gradient of potential anomaly
85        DO j=jMin,jMax        DO j=jMin,jMax
86         DO i=iMin,iMax         DO i=iMin,iMax
87          dPhiHydX(i,j) = _recip_dxC(i,j,bi,bj)          dPhiHydX(i,j) = _recip_dxC(i,j,bi,bj)
88       &                *( varLoc(i,j)-varLoc(i-1,j) )       &                *( varLoc(i,j)-varLoc(i-1,j) )
 c    &              *( (phiHyd(i,j,k)-phiHyd(i-1,j,k))  
 c    &                +(phi0surf(i,j,bi,bj)-phi0surf(i-1,j,bi,bj))  
 c    &              *( (phiHyd(i,j,k)+phi0surf(i,j,bi,bj))  
 c    &                -(phiHyd(i-1,j,k)+phi0surf(i-1,j,bi,bj))  
 c    &               )  
        ENDDO  
       ENDDO  
   
 C-    Meridional gradient  
       DO j=jMin,jMax  
        DO i=iMin,iMax  
89          dPhiHydY(i,j) = _recip_dyC(i,j,bi,bj)          dPhiHydY(i,j) = _recip_dyC(i,j,bi,bj)
90       &                *( varLoc(i,j)-varLoc(i,j-1) )       &                *( varLoc(i,j)-varLoc(i,j-1) )
 c    &              *( (phiHyd(i,j,k)-phiHyd(i,j-1,k))  
 c    &                +(phi0surf(i,j,bi,bj)-phi0surf(i,j-1,bi,bj))  
 c    &              *( (phiHyd(i,j,k)+phi0surf(i,j,bi,bj))  
 c    &                -(phiHyd(i,j-1,k)+phi0surf(i,j-1,bi,bj))  
 c    &               )  
91         ENDDO         ENDDO
92        ENDDO        ENDDO
93    
94    #ifdef NONLIN_FRSURF
95          IF (select_rStar.GE.2 .AND. nonlinFreeSurf.GE.1 ) THEN
96           IF ( buoyancyRelation .EQ. 'OCEANIC' ) THEN
97    C--    z* coordinate slope term: rho'/rho0 * Grad_r(g.z)
98            factorZ = gravity*recip_rhoConst*0.5 _d 0
99            DO j=jMin-1,jMax
100             DO i=iMin-1,iMax
101              varLoc(i,j) = etaH(i,j,bi,bj)
102         &                *(1. _d 0 + rC(k)*recip_Rcol(i,j,bi,bj))
103             ENDDO
104            ENDDO
105            DO j=jMin,jMax
106             DO i=iMin,iMax
107              dPhiHydX(i,j) = dPhiHydX(i,j)
108         &     +factorZ*(alphRho(i-1,j)+alphRho(i,j))
109         &             *(varLoc(i,j)-varLoc(i-1,j))
110         &             *recip_dxC(i,j,bi,bj)
111              dPhiHydY(i,j) = dPhiHydY(i,j)
112         &     +factorZ*(alphRho(i,j-1)+alphRho(i,j))
113         &             *(varLoc(i,j)-varLoc(i,j-1))
114         &             *recip_dyC(i,j,bi,bj)  
115             ENDDO
116            ENDDO
117           ELSEIF (buoyancyRelation .EQ. 'OCEANICP' ) THEN
118    C--    p* coordinate slope term: alpha' * Grad_r( p )
119            factorP = 0.5 _d 0
120            DO j=jMin,jMax
121             DO i=iMin,iMax
122              dPhiHydX(i,j) = dPhiHydX(i,j)
123         &     +factorP*(alphRho(i-1,j)+alphRho(i,j))
124         &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i-1,j,bi,bj))
125         &             *rC(k)*recip_dxC(i,j,bi,bj)  
126              dPhiHydY(i,j) = dPhiHydY(i,j)
127         &     +factorP*(alphRho(i,j-1)+alphRho(i,j))
128         &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i,j-1,bi,bj))
129         &             *rC(k)*recip_dyC(i,j,bi,bj)  
130             ENDDO
131            ENDDO
132           ELSEIF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
133    C--    p* coordinate slope term: alpha' * Grad_r( p )
134            conv_theta2T = (rC(k)/atm_Po)**atm_kappa
135            factorP = (atm_Rd/rC(k))*conv_theta2T*0.5 _d 0
136            DO j=jMin,jMax
137             DO i=iMin,iMax
138              dPhiHydX(i,j) = dPhiHydX(i,j)
139         &     +factorP*(tFld(i-1,j,k,bi,bj)+tFld(i,j,k,bi,bj))
140         &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i-1,j,bi,bj))
141         &             *rC(k)*recip_dxC(i,j,bi,bj)  
142              dPhiHydY(i,j) = dPhiHydY(i,j)
143         &     +factorP*(tFld(i,j-1,k,bi,bj)+tFld(i,j,k,bi,bj))
144         &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i,j-1,bi,bj))
145         &             *rC(k)*recip_dyC(i,j,bi,bj)  
146             ENDDO
147            ENDDO
148           ENDIF
149          ENDIF
150    #endif /* NONLIN_FRSURF */
151    
152  #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */  #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */
153    
154        RETURN        RETURN

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22