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

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

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


Revision 1.3 - (hide annotations) (download)
Mon Oct 26 00:43:38 2009 UTC (14 years, 7 months ago) by gforget
Branch: MAIN
Changes since 1.2: +7 -1 lines
initialize phihydlow to avoid TAF recomputation
(in the context of bottom pressure (GRACE) cost term)

1 gforget 1.3 C $Header: /u/gcmpack/MITgcm/model/src/diags_phi_rlow.F,v 1.2 2003/02/18 15:30:47 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "CPP_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: DIAGS_PHI_RLOW
8     C !INTERFACE:
9     SUBROUTINE DIAGS_PHI_RLOW(
10     I k, bi, bj, iMin,iMax, jMin,jMax,
11 jmc 1.2 I phiHydF, phiHydC, alphRho, tFld, sFld,
12 jmc 1.1 I myTime, myIter, myThid)
13     C !DESCRIPTION: \bv
14     C *==========================================================*
15     C | S/R DIAGS_PHI_RLOW
16     C | o Diagnose Phi-Hydrostatic at r-lower boundary
17     C | = bottom pressure (ocean in z-coord) ;
18     C | = sea surface elevation (ocean in p-coord) ;
19     C | = height at the top of atmosphere (in p-coord) ;
20     C *==========================================================*
21     C \ev
22    
23     C !USES:
24     IMPLICIT NONE
25     C == Global variables ==
26     #include "SIZE.h"
27     #include "EEPARAMS.h"
28     #include "PARAMS.h"
29     #include "GRID.h"
30     #include "SURFACE.h"
31     #include "DYNVARS.h"
32    
33     C !INPUT/OUTPUT PARAMETERS:
34     C == Routine Arguments ==
35     C bi,bj :: tile index
36     C iMin,iMax,jMin,jMax :: Loop counters
37 jmc 1.2 C phiHydF :: hydrostatic potential anomaly at middle between
38     C 2 centers k & k+1 (interface k+1)
39     C phiHydC :: hydrostatic potential anomaly at cell center
40 jmc 1.1 C (atmos: =Geopotential ; ocean-z: =Pressure/rho)
41     C alphRho :: Density (z-coord) or specific volume (p-coord)
42     C tFld :: Potential temp.
43     C sFld :: Salinity
44     C myTime :: Current time
45     C myIter :: Current iteration number
46     C myThid :: Instance number for this call of the routine.
47     INTEGER k, bi,bj, iMin,iMax, jMin,jMax
48 jmc 1.2 _RL phiHydF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49     _RL phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50 jmc 1.1 _RL alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51     _RL tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
52     _RL sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
53     _RL myTime
54     INTEGER myIter, myThid
55    
56     #ifdef INCLUDE_PHIHYD_CALCULATION_CODE
57    
58     C !LOCAL VARIABLES:
59     C == Local variables ==
60     C i,j :: Loop counters
61     INTEGER i,j
62     _RL zero, one, half
63 jmc 1.2 _RL ddRloc, ratioRm, ratioRp
64 jmc 1.1 PARAMETER ( zero= 0. _d 0 , one= 1. _d 0 , half= .5 _d 0 )
65     CEOP
66    
67 gforget 1.3 DO j=jMin,jMax
68     DO i=iMin,iMax
69     phiHydLow(i,j,bi,bj) = 0. _d 0
70     ENDDO
71     ENDDO
72    
73 jmc 1.2 IF ( buoyancyRelation .EQ. 'OCEANIC' ) THEN
74 jmc 1.1
75 jmc 1.2 C----- Compute bottom pressure deviation from gravity*rho0*H
76     C Start from phiHyd at the (bottom) tracer point and add Del_h*g*rho'
77     C with Del_h = distance from the bottom up to tracer point
78 jmc 1.1
79     IF (integr_GeoPot.EQ.1) THEN
80     C -- Finite Volume Form
81    
82     DO j=jMin,jMax
83     DO i=iMin,iMax
84     IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN
85 jmc 1.2 ddRloc = rC(k)-R_low(i,j,bi,bj)
86     phiHydLow(i,j,bi,bj) = phiHydC(i,j)
87     & + ddRloc*gravity*alphRho(i,j)*recip_rhoConst
88 jmc 1.1 ENDIF
89     ENDDO
90     ENDDO
91    
92     ELSE
93     C -- Finite Difference Form
94    
95 jmc 1.2 ratioRm = one
96     ratioRp = one
97     IF (k.GT.1 ) ratioRm = half*drC(k)/(rF(k)-rC(k))
98     IF (k.LT.Nr) ratioRp = half*drC(k+1)/(rC(k)-rF(k+1))
99 jmc 1.1
100     DO j=jMin,jMax
101     DO i=iMin,iMax
102 jmc 1.2 IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN
103     ddRloc = rC(k)-R_low(i,j,bi,bj)
104     phiHydLow(i,j,bi,bj) = phiHydC(i,j)
105     & +( MIN(zero,ddRloc)*ratioRm
106     & +MAX(zero,ddRloc)*ratioRp
107     & )*gravity*alphRho(i,j)*recip_rhoConst
108 jmc 1.1 ENDIF
109     ENDDO
110     ENDDO
111    
112     C -- end if integr_GeoPot = ...
113     ENDIF
114    
115 jmc 1.2 C -- end buoyancyR = Oceanic (z)
116     ENDIF
117    
118     IF (k.EQ.Nr) THEN
119 jmc 1.1 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
120 jmc 1.2 C -- last level (bottom): rescale (r*) and add surface contribution
121 jmc 1.1
122 jmc 1.2 IF ( buoyancyRelation .EQ. 'OCEANICP' .OR.
123     & buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
124     C -- P coordinate : Phi(R_low) is simply at the top :
125     DO j=jMin,jMax
126     DO i=iMin,iMax
127     phiHydLow(i,j,bi,bj) = phiHydF(i,j)
128 jmc 1.1 ENDDO
129 jmc 1.2 ENDDO
130     ENDIF
131 jmc 1.1
132 jmc 1.2 DO j=jMin,jMax
133     DO i=iMin,iMax
134     phiHydLow(i,j,bi,bj) = phiHydLow(i,j,bi,bj)
135     & + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
136     & + phi0surf(i,j,bi,bj)
137 jmc 1.1 ENDDO
138 jmc 1.2 ENDDO
139 jmc 1.1
140     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
141 jmc 1.2 C -- end if k=Nr.
142 jmc 1.1 ENDIF
143    
144     #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */
145    
146     RETURN
147     END

  ViewVC Help
Powered by ViewVC 1.1.22