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

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

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

revision 1.5 by cnh, Wed Oct 28 03:11:36 1998 UTC revision 1.11 by cnh, Sun Feb 4 14:38:45 2001 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
4  #include "CPP_EEOPTIONS.h"  #include "CPP_OPTIONS.h"
5    
6  C     /==========================================================\  C     /==========================================================\
7  C     | S/R CALC_DIV_GHAT                                        |  C     | S/R CALC_DIV_GHAT                                        |
8  C     | o Form the right hand-side of the surface pressure eqn.  |  C     | o Form the right hand-side of the surface pressure eqn.  |
9    C     |==========================================================|
10  C     \==========================================================/  C     \==========================================================/
11        SUBROUTINE CALC_DIV_GHAT(        SUBROUTINE CALC_DIV_GHAT(
12       I        bi,bj,iMin,iMax,jMin,jMax,       I        bi,bj,iMin,iMax,jMin,jMax,
# Line 22  C     == Global variables == Line 24  C     == Global variables ==
24  #include "PARAMS.h"  #include "PARAMS.h"
25  #include "GRID.h"  #include "GRID.h"
26  #include "CG2D.h"  #include "CG2D.h"
27    #ifdef ALLOW_NONHYDROSTATIC
28    #include "CG3D.h"
29    #endif
30    
31  C     == Routine arguments ==  C     == Routine arguments ==
 C     pH - Hydrostatic pressure  
32  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation
33  C                                      results will be set.  C                                      results will be set.
34  C     kUp, kDown, kM1                - Index for upper and lower layers.  C     k                              - Index of layer.
35    C     xA, yA                         - Cell face areas
36  C     myThid - Instance number for this innvocation of CALC_MOM_RHS  C     myThid - Instance number for this innvocation of CALC_MOM_RHS
37        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER bi,bj,iMin,iMax,jMin,jMax
38        INTEGER K        INTEGER K
# Line 46  C     pulls div(U) + dh/dt back toward z Line 51  C     pulls div(U) + dh/dt back toward z
51    
52        IF ( k .EQ. Nr ) THEN        IF ( k .EQ. Nr ) THEN
53  C      Initialise source term on first pass  C      Initialise source term on first pass
54         DO j=jMin,jMax         DO j=1,sNy
55          DO i=iMin,iMax          DO i=1,sNx
56  C        cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)  C Note: The source term containing cg2d_x and cg3d_x (at k=1)
57  C    &    -freeSurfFac*_rA(i,j,bi,bj)*  C       has been moved to solve_for_pressure.F for convenience.
 C    &     cg2d_x(I  ,J  ,bi,bj)/deltaTMom/deltaTMom  
58           cg2d_b(i,j,bi,bj) =           cg2d_b(i,j,bi,bj) =
59       &    -freeSurfFac*_rA(i,j,bi,bj)*horiVertRatio*       &     freeSurfFac*_rA(i,j,bi,bj)*horiVertRatio*( 0.
60       &     cg2d_x(I  ,J  ,bi,bj)/deltaTMom/deltaTMom  #ifdef USE_NATURAL_BCS
61         &      +EmPmR(I,J,bi,bj)/deltaTMom
62    #endif
63         &     )
64          ENDDO          ENDDO
65         ENDDO         ENDDO
66        ENDIF        ENDIF
67    
68        DO j=jMin,jMax        DO j=1,sNy
69         DO i=iMin,iMax         DO i=1,sNx+1
70          pf(i,j) = xA(i,j)*gUNm1(i,j,k,bi,bj) / deltaTmom          pf(i,j) = xA(i,j)*gUNm1(i,j,k,bi,bj) / deltaTmom
71         ENDDO         ENDDO
72        ENDDO        ENDDO
73        DO j=1,sNy        DO j=1,sNy
74         DO i=1,sNx         DO i=1,sNx
75          cg2d_b(i,j,bi,bj) =  cg2d_b(i,j,bi,bj) +          cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj) +
76       &   pf(i+1,j)-pf(i,j)       &   pf(i+1,j)-pf(i,j)
77         ENDDO         ENDDO
78        ENDDO        ENDDO
79    
80        DO j=jMin,jMax  #ifdef ALLOW_NONHYDROSTATIC
81         DO i=iMin,iMax        IF (nonHydrostatic) THEN
82           DO j=1,sNy
83            DO i=1,sNx
84             cg3d_b(i,j,k,bi,bj) = pf(i+1,j)-pf(i,j)
85            ENDDO
86           ENDDO
87          ENDIF
88    #endif
89    
90          DO j=1,sNy+1
91           DO i=1,sNx
92          pf(i,j) = yA(i,j)*gVNm1(i,j,k,bi,bj) / deltatmom          pf(i,j) = yA(i,j)*gVNm1(i,j,k,bi,bj) / deltatmom
93         ENDDO         ENDDO
94        ENDDO        ENDDO
95    
96        DO j=1,sNy        DO j=1,sNy
97         DO i=1,sNx         DO i=1,sNx
98          cg2d_b(i,j,bi,bj)   =  cg2d_b(i,j,bi,bj) +          cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj) +
99       &   pf(i,j+1)-pf(i,j)       &   pf(i,j+1)-pf(i,j)
100         ENDDO         ENDDO
101        ENDDO        ENDDO
102    
103    #ifdef ALLOW_NONHYDROSTATIC
104          IF (nonHydrostatic) THEN
105           DO j=1,sNy
106            DO i=1,sNx
107             cg3d_b(i,j,k,bi,bj) = cg3d_b(i,j,k,bi,bj) +
108         &    pf(i,j+1)-pf(i,j)
109            ENDDO
110           ENDDO
111          ENDIF
112    #endif
113    
114        RETURN        RETURN
115        END        END

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22