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

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

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


Revision 1.3 - (hide annotations) (download)
Tue Feb 18 15:30:47 2003 UTC (21 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint48g_post
Changes since 1.2: +83 -26 lines
o avoid using any hFac in calc_phi_hyd ; use Ro_surf,R_low instead.
 NLFS + p-coord.: eta*Alpha' is not longer lagging 1.time-step behind
  ( change results of global_ocean_pressure )
 NLFS + z-coord.: add eta*Alpha' contribution.
  accurate phiHyd when using interface-W at the middle between 2 center.
  ( change results of ideal_2D_oce )
o includes r* 2nd term in potential gradient.

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/model/src/calc_grad_phi_hyd.F,v 1.2 2003/02/09 02:00:50 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "CPP_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: CALC_GRAD_PHI_HYD
8     C !INTERFACE:
9     SUBROUTINE CALC_GRAD_PHI_HYD(
10     I k, bi, bj, iMin,iMax, jMin,jMax,
11 jmc 1.3 I phiHydC, alphRho, tFld, sFld,
12 jmc 1.1 O dPhiHydX, dPhiHydY,
13     I myTime, myIter, myThid)
14     C !DESCRIPTION: \bv
15     C *==========================================================*
16     C | S/R CALC_GRAD_PHI_HYD
17     C | o Calculate the gradient of Hydrostatic potential anomaly
18     C *==========================================================*
19     C \ev
20    
21     C !USES:
22     IMPLICIT NONE
23     C == Global variables ==
24     #include "SIZE.h"
25     #include "EEPARAMS.h"
26     #include "PARAMS.h"
27     #include "GRID.h"
28     #include "SURFACE.h"
29 jmc 1.3 #include "DYNVARS.h"
30 jmc 1.1
31     C !INPUT/OUTPUT PARAMETERS:
32     C == Routine Arguments ==
33     C bi,bj :: tile index
34     C iMin,iMax,jMin,jMax :: Loop counters
35 jmc 1.3 C phiHydC :: Hydrostatic Potential anomaly
36 jmc 1.1 C (atmos: =Geopotential ; ocean-z: =Pressure/rho)
37     C alphRho :: Density (z-coord) or specific volume (p-coord)
38     C tFld :: Potential temp.
39     C sFld :: Salinity
40     C dPhiHydX,Y :: Gradient (X & Y directions) of Hyd. Potential
41     C myTime :: Current time
42     C myIter :: Current iteration number
43     C myThid :: Instance number for this call of the routine.
44     INTEGER k, bi,bj, iMin,iMax, jMin,jMax
45 jmc 1.3 c _RL phiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
46     _RL phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47 jmc 1.1 _RL alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48     _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)
50     _RL dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
51     _RL dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
52     _RL myTime
53     INTEGER myIter, myThid
54    
55     #ifdef INCLUDE_PHIHYD_CALCULATION_CODE
56    
57     C !LOCAL VARIABLES:
58     C == Local variables ==
59     C i,j :: Loop counters
60     INTEGER i,j
61     _RL varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
62 jmc 1.3 _RL factorZ, factorP, conv_theta2T
63 jmc 1.1 CEOP
64    
65 jmc 1.3 #ifdef NONLIN_FRSURF
66     IF (select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN
67     DO j=jMin-1,jMax
68     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 jmc 1.1 ENDDO
73 jmc 1.3 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 jmc 1.1
84 jmc 1.3 C-- Zonal & Meridional gradient of potential anomaly
85 jmc 1.1 DO j=jMin,jMax
86     DO i=iMin,iMax
87     dPhiHydX(i,j) = _recip_dxC(i,j,bi,bj)
88     & *( varLoc(i,j)-varLoc(i-1,j) )
89     dPhiHydY(i,j) = _recip_dyC(i,j,bi,bj)
90     & *( varLoc(i,j)-varLoc(i,j-1) )
91     ENDDO
92     ENDDO
93 jmc 1.3
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 jmc 1.1
152     #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */
153    
154     RETURN
155     END

  ViewVC Help
Powered by ViewVC 1.1.22