/[MITgcm]/MITgcm/pkg/mom_fluxform/mom_fluxform.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_fluxform/mom_fluxform.F

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

revision 1.1 by adcroft, Thu Aug 16 17:16:03 2001 UTC revision 1.10 by jmc, Tue Feb 11 04:06:15 2003 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4    CBOI
5    C !TITLE: pkg/mom\_advdiff
6    C !AUTHORS: adcroft@mit.edu
7    C !INTRODUCTION: Flux-form Momentum Equations Package
8    C
9    C Package "mom\_fluxform" provides methods for calculating explicit terms
10    C in the momentum equation cast in flux-form:
11    C \begin{eqnarray*}
12    C G^u & = & -\frac{1}{\rho} \partial_x \phi_h
13    C           -\nabla \cdot {\bf v} u
14    C           -fv
15    C           +\frac{1}{\rho} \nabla \cdot {\bf \tau}^x
16    C           + \mbox{metrics}
17    C \\
18    C G^v & = & -\frac{1}{\rho} \partial_y \phi_h
19    C           -\nabla \cdot {\bf v} v
20    C           +fu
21    C           +\frac{1}{\rho} \nabla \cdot {\bf \tau}^y
22    C           + \mbox{metrics}
23    C \end{eqnarray*}
24    C where ${\bf v}=(u,v,w)$ and $\tau$, the stress tensor, includes surface
25    C stresses as well as internal viscous stresses.
26    CEOI
27    
28  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
29    
30    CBOP
31    C !ROUTINE: MOM_FLUXFORM
32    
33    C !INTERFACE: ==========================================================
34        SUBROUTINE MOM_FLUXFORM(        SUBROUTINE MOM_FLUXFORM(
35       I        bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,       I        bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,
36       I        phi_hyd,KappaRU,KappaRV,       I        phi_hyd,dPhihydX,dPhiHydY,KappaRU,KappaRV,
37       U        fVerU, fVerV,       U        fVerU, fVerV,
38       I        myCurrentTime, myThid)       I        myTime,myIter,myThid)
 C     /==========================================================\  
 C     | S/R MOM_FLUXFORM                                         |  
 C     | o Form the right hand-side of the momentum equation.     |  
 C     |==========================================================|  
 C     | Terms are evaluated one layer at a time working from     |  
 C     | the bottom to the top. The vertically integrated         |  
 C     | barotropic flow tendency term is evluated by summing the |  
 C     | tendencies.                                              |  
 C     | Notes:                                                   |  
 C     | We have not sorted out an entirely satisfactory formula  |  
 C     | for the diffusion equation bc with lopping. The present  |  
 C     | form produces a diffusive flux that does not scale with  |  
 C     | open-area. Need to do something to solidfy this and to   |  
 C     | deal "properly" with thin walls.                         |  
 C     \==========================================================/  
       IMPLICIT NONE  
39    
40    C !DESCRIPTION:
41    C Calculates all the horizontal accelerations except for the implicit surface
42    C pressure gradient and implciit vertical viscosity.
43    
44    C !USES: ===============================================================
45  C     == Global variables ==  C     == Global variables ==
46          IMPLICIT NONE
47  #include "SIZE.h"  #include "SIZE.h"
48  #include "DYNVARS.h"  #include "DYNVARS.h"
49  #include "FFIELDS.h"  #include "FFIELDS.h"
# Line 34  C     == Global variables == Line 52  C     == Global variables ==
52  #include "GRID.h"  #include "GRID.h"
53  #include "SURFACE.h"  #include "SURFACE.h"
54    
55  C     == Routine arguments ==  C !INPUT PARAMETERS: ===================================================
56  C     fZon    - Work array for flux of momentum in the east-west  C  bi,bj                :: tile indices
57  C               direction at the west face of a cell.  C  iMin,iMax,jMin,jMAx  :: loop ranges
58  C     fMer    - Work array for flux of momentum in the north-south  C  k                    :: vertical level
59  C               direction at the south face of a cell.  C  kUp                  :: =1 or 2 for consecutive k
60  C     fVerU   - Flux of momentum in the vertical  C  kDown                :: =2 or 1 for consecutive k
61  C     fVerV     direction out of the upper face of a cell K  C  phi_hyd              :: hydrostatic pressure (perturbation)
62  C               ( flux into the cell above ).  C  dPhiHydX,Y           :: Gradient (X & Y dir.) of Hydrostatic Potential
63  C     phi_hyd - Hydrostatic pressure  C  KappaRU              :: vertical viscosity
64  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation  C  KappaRV              :: vertical viscosity
65  C                                      results will be set.  C  fVerU                :: vertical flux of U, 2 1/2 dim for pipe-lining
66  C     kUp, kDown                     - Index for upper and lower layers.  C  fVerV                :: vertical flux of V, 2 1/2 dim for pipe-lining
67  C     myThid - Instance number for this innvocation of CALC_MOM_RHS  C  myTime               :: current time
68    C  myIter               :: current time-step number
69    C  myThid               :: thread number
70          INTEGER bi,bj,iMin,iMax,jMin,jMax
71          INTEGER k,kUp,kDown
72        _RL phi_hyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL phi_hyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
73          _RL dPhiHydX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
74          _RL dPhiHydY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
75        _RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
76        _RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
77        _RL fVerU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVerU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
78        _RL fVerV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVerV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
79        INTEGER kUp,kDown        _RL     myTime
80          INTEGER myIter
81        INTEGER myThid        INTEGER myThid
       _RL     myCurrentTime  
       INTEGER bi,bj,iMin,iMax,jMin,jMax  
82    
83  C     == Local variables ==  C !OUTPUT PARAMETERS: ==================================================
84  C     ab15, ab05    - Weights for Adams-Bashforth time stepping scheme.  C None - updates gU() and gV() in common blocks
85  C     i,j,k         - Loop counters  
86    C !LOCAL VARIABLES: ====================================================
87    C  i,j                  :: loop indices
88    C  aF                   :: advective flux
89    C  vF                   :: viscous flux
90    C  v4F                  :: bi-harmonic viscous flux
91    C  vrF                  :: vertical viscous flux
92    C  cF                   :: Coriolis acceleration
93    C  mT                   :: Metric terms
94    C  pF                   :: Pressure gradient
95    C  fZon                 :: zonal fluxes
96    C  fMer                 :: meridional fluxes
97          INTEGER i,j
98          _RL aF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
99          _RL vF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
100          _RL v4F(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
101          _RL vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
102          _RL cF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
103          _RL mT(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
104          _RL pF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
105          _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
106          _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
107  C     wMaskOverride - Land sea flag override for top layer.  C     wMaskOverride - Land sea flag override for top layer.
108  C     afFacMom      - Tracer parameters for turning terms  C     afFacMom      - Tracer parameters for turning terms
109  C     vfFacMom        on and off.  C     vfFacMom        on and off.
# Line 69  C     mTFacMom        pfFacMom - Pressur Line 113  C     mTFacMom        pfFacMom - Pressur
113  C                     cfFacMom - Coriolis terms  C                     cfFacMom - Coriolis terms
114  C                     foFacMom - Forcing  C                     foFacMom - Forcing
115  C                     mTFacMom - Metric term  C                     mTFacMom - Metric term
 C     vF            - Temporary holding viscous term (Laplacian)  
 C     v4F           - Temporary holding viscous term (Biharmonic)  
 C     cF            - Temporary holding coriolis term.  
 C     mT            - Temporary holding metric terms(s).  
 C     pF            - Temporary holding pressure|potential gradient terms.  
116  C     uDudxFac, AhDudxFac, etc ... individual term tracer parameters  C     uDudxFac, AhDudxFac, etc ... individual term tracer parameters
       _RL      aF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      v4F(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      vrF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      cF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      mT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL      pF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL    fZon (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL    fMer (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
117        _RS    hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS    hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
118        _RS  r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS  r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
119        _RS      xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS      xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 92  C     uDudxFac, AhDudxFac, etc ... indiv Line 122  C     uDudxFac, AhDudxFac, etc ... indiv
122        _RL  vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
123        _RL  uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
124        _RL  vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
125          _RL  rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
126          _RL  rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
127  C     I,J,K - Loop counters  C     I,J,K - Loop counters
       INTEGER i,j,k  
128  C     rVelMaskOverride - Factor for imposing special surface boundary conditions  C     rVelMaskOverride - Factor for imposing special surface boundary conditions
129  C                        ( set according to free-surface condition ).  C                        ( set according to free-surface condition ).
130  C     hFacROpen        - Lopped cell factos used tohold fraction of open  C     hFacROpen        - Lopped cell factos used tohold fraction of open
# Line 123  C     xxxFac - On-off tracer parameters Line 154  C     xxxFac - On-off tracer parameters
154        _RL  phyFac        _RL  phyFac
155        _RL  vForcFac        _RL  vForcFac
156        _RL  mtFacV        _RL  mtFacV
 C     ab05, ab15 - Adams-Bashforth time-stepping weights.  
       _RL  ab05, ab15  
157        INTEGER km1,kp1        INTEGER km1,kp1
158        _RL wVelBottomOverride        _RL wVelBottomOverride
159        LOGICAL bottomDragTerms        LOGICAL bottomDragTerms
160        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
161    CEOP
162    
163        km1=MAX(1,k-1)        km1=MAX(1,k-1)
164        kp1=MIN(Nr,k+1)        kp1=MIN(Nr,k+1)
# Line 149  C     Initialise intermediate terms Line 179  C     Initialise intermediate terms
179          pF(i,j)   = 0.          pF(i,j)   = 0.
180          fZon(i,j) = 0.          fZon(i,j) = 0.
181          fMer(i,j) = 0.          fMer(i,j) = 0.
182            rTransU(i,j) = 0.
183            rTransV(i,j) = 0.
184         ENDDO         ENDDO
185        ENDDO        ENDDO
186    
# Line 193  C-- with stagger time stepping, grad Phi Line 225  C-- with stagger time stepping, grad Phi
225          phyFac = 0.          phyFac = 0.
226        ENDIF        ENDIF
227    
 C--   Adams-Bashforth weighting factors  
       ab15   =  1.5 _d 0 + abEps  
       ab05   = -0.5 _d 0 - abEps  
     
228  C--   Calculate open water fraction at vorticity points  C--   Calculate open water fraction at vorticity points
229        CALL MOM_CALC_HFACZ(bi,bj,k,hFacZ,r_hFacZ,myThid)        CALL MOM_CALC_HFACZ(bi,bj,k,hFacZ,r_hFacZ,myThid)
230    
# Line 229  C     Calculate velocity field "volume t Line 257  C     Calculate velocity field "volume t
257    
258        CALL MOM_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)        CALL MOM_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)
259    
260    C---  First call (k=1): compute vertical adv. flux fVerU(kUp) & fVerV(kUp)
261          IF (momAdvection.AND.k.EQ.1) THEN
262    
263    C-    Calculate vertical transports above U & V points (West & South face):
264           CALL MOM_CALC_RTRANS( k, bi, bj,
265         O                       rTransU, rTransV,
266         I                       myTime, myIter, myThid)
267    
268    C-    Free surface correction term (flux at k=1)
269           CALL MOM_U_ADV_WU(bi,bj,k,uVel,wVel,rTransU,af,myThid)
270           DO j=jMin,jMax
271            DO i=iMin,iMax
272             fVerU(i,j,kUp) = af(i,j)
273            ENDDO
274           ENDDO
275    
276           CALL MOM_V_ADV_WV(bi,bj,k,vVel,wVel,rTransV,af,myThid)
277           DO j=jMin,jMax
278            DO i=iMin,iMax
279             fVerV(i,j,kUp) = af(i,j)
280            ENDDO
281           ENDDO
282    
283    C---  endif momAdvection & k=1
284          ENDIF
285    
286    
287    C---  Calculate vertical transports (at k+1) below U & V points :
288          IF (momAdvection) THEN
289           CALL MOM_CALC_RTRANS( k+1, bi, bj,
290         O                       rTransU, rTransV,
291         I                       myTime, myIter, myThid)
292          ENDIF
293    
294    
295  C---- Zonal momentum equation starts here  C---- Zonal momentum equation starts here
296    
297  C     Bi-harmonic term del^2 U -> v4F  C     Bi-harmonic term del^2 U -> v4F
298        IF (momViscosity)        IF (momViscosity .AND. viscA4.NE.0. )
299       & CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)       & CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)
300    
301  C---  Calculate mean and eddy fluxes between cells for zonal flow.  C---  Calculate mean and eddy fluxes between cells for zonal flow.
# Line 265  C     Laplacian and bi-harmonic term Line 328  C     Laplacian and bi-harmonic term
328       & CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,vF,myThid)       & CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,vF,myThid)
329    
330  C     Combine fluxes -> fMer  C     Combine fluxes -> fMer
331        DO j=jMin,jMax        DO j=jMin,jMax+1
332         DO i=iMin,iMax         DO i=iMin,iMax
333          fMer(i,j) = vDudyFac*aF(i,j) + AhDudyFac*vF(i,j)          fMer(i,j) = vDudyFac*aF(i,j) + AhDudyFac*vF(i,j)
334         ENDDO         ENDDO
# Line 273  C     Combine fluxes -> fMer Line 336  C     Combine fluxes -> fMer
336    
337  C--   Vertical flux (fVer is at upper face of "u" cell)  C--   Vertical flux (fVer is at upper face of "u" cell)
338    
 C--   Free surface correction term (flux at k=1)  
       IF (momAdvection.AND.k.EQ.1) THEN  
        CALL MOM_U_ADV_WU(bi,bj,k,uVel,wVel,af,myThid)  
        DO j=jMin,jMax  
         DO i=iMin,iMax  
          fVerU(i,j,kUp) = af(i,j)  
         ENDDO  
        ENDDO  
       ENDIF  
339  C     Mean flow component of vertical flux (at k+1) -> aF  C     Mean flow component of vertical flux (at k+1) -> aF
340        IF (momAdvection)        IF (momAdvection)
341       & CALL MOM_U_ADV_WU(bi,bj,k+1,uVel,wVel,af,myThid)       & CALL MOM_U_ADV_WU(bi,bj,k+1,uVel,wVel,rTransU,af,myThid)
342    
343  C     Eddy component of vertical flux (interior component only) -> vrF  C     Eddy component of vertical flux (interior component only) -> vrF
344        IF (momViscosity.AND..NOT.implicitViscosity)        IF (momViscosity.AND..NOT.implicitViscosity)
# Line 297  C     Combine fluxes Line 351  C     Combine fluxes
351         ENDDO         ENDDO
352        ENDDO        ENDDO
353    
 C---  Hydrostatic term ( -1/rhoConst . dphi/dx )  
       IF (momPressureForcing) THEN  
        DO j=jMin,jMax  
         DO i=iMin,iMax  
          pf(i,j) = - _recip_dxC(i,j,bi,bj)  
      &    *(phi_hyd(i,j,k)-phi_hyd(i-1,j,k))  
         ENDDO  
        ENDDO  
       ENDIF  
   
354  C--   Tendency is minus divergence of the fluxes + coriolis + pressure term  C--   Tendency is minus divergence of the fluxes + coriolis + pressure term
355        DO j=jMin,jMax        DO j=jMin,jMax
356         DO i=iMin,iMax         DO i=iMin,iMax
# Line 322  C--   Tendency is minus divergence of th Line 366  C--   Tendency is minus divergence of th
366       &   +fMer(i,j+1)          - fMer(i  ,j)       &   +fMer(i,j+1)          - fMer(i  ,j)
367       &   +fVerU(i,j,kUp)*rkFac - fVerU(i,j,kDown)*rkFac       &   +fVerU(i,j,kUp)*rkFac - fVerU(i,j,kDown)*rkFac
368       &   )       &   )
369       & _PHM( +phxFac * pf(i,j) )       &  - phxFac*dPhiHydX(i,j)
370         ENDDO         ENDDO
371        ENDDO        ENDDO
372    
373    #ifdef NONLIN_FRSURF
374    C-- account for 3.D divergence of the flow in rStar coordinate:
375          IF ( momAdvection .AND. select_rStar.GT.0 ) THEN
376           DO j=jMin,jMax
377            DO i=iMin,iMax
378             gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
379         &     - (rStarExpW(i,j,bi,bj) - 1. _d 0)/deltaTfreesurf
380         &       *uVel(i,j,k,bi,bj)
381            ENDDO
382           ENDDO
383          ENDIF
384          IF ( momAdvection .AND. select_rStar.LT.0 ) THEN
385           DO j=jMin,jMax
386            DO i=iMin,iMax
387             gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
388         &     - rStarDhWDt(i,j,bi,bj)*uVel(i,j,k,bi,bj)
389            ENDDO
390           ENDDO
391          ENDIF
392    #endif /* NONLIN_FRSURF */
393    
394  C-- No-slip and drag BCs appear as body forces in cell abutting topography  C-- No-slip and drag BCs appear as body forces in cell abutting topography
395        IF (momViscosity.AND.no_slip_sides) THEN        IF (momViscosity.AND.no_slip_sides) THEN
396  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
# Line 350  C--   Forcing term Line 415  C--   Forcing term
415        IF (momForcing)        IF (momForcing)
416       &  CALL EXTERNAL_FORCING_U(       &  CALL EXTERNAL_FORCING_U(
417       I     iMin,iMax,jMin,jMax,bi,bj,k,       I     iMin,iMax,jMin,jMax,bi,bj,k,
418       I     myCurrentTime,myThid)       I     myTime,myThid)
419    
420  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
421        IF (usingSphericalPolarMTerms) THEN        IF (useNHMTerms) THEN
422  C      o Spherical polar grid metric terms  C      o Non-hydrosatic metric terms
423         CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)         CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)
424         DO j=jMin,jMax         DO j=jMin,jMax
425          DO i=iMin,iMax          DO i=iMin,iMax
426           gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mTFacU*mT(i,j)           gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mTFacU*mT(i,j)
427          ENDDO          ENDDO
428         ENDDO         ENDDO
429          ENDIF
430          IF (usingSphericalPolarMTerms) THEN
431         CALL MOM_U_METRIC_SPHERE(bi,bj,k,uFld,vFld,mT,myThid)         CALL MOM_U_METRIC_SPHERE(bi,bj,k,uFld,vFld,mT,myThid)
432         DO j=jMin,jMax         DO j=jMin,jMax
433          DO i=iMin,iMax          DO i=iMin,iMax
# Line 380  C--   Set du/dt on boundaries to zero Line 447  C--   Set du/dt on boundaries to zero
447  C---- Meridional momentum equation starts here  C---- Meridional momentum equation starts here
448    
449  C     Bi-harmonic term del^2 V -> v4F  C     Bi-harmonic term del^2 V -> v4F
450        IF (momViscosity)        IF (momViscosity .AND. viscA4.NE.0. )
451       & CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)       & CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)
452    
453  C---  Calculate mean and eddy fluxes between cells for meridional flow.  C---  Calculate mean and eddy fluxes between cells for meridional flow.
# Line 397  C     Laplacian and bi-harmonic terms -> Line 464  C     Laplacian and bi-harmonic terms ->
464    
465  C     Combine fluxes -> fZon  C     Combine fluxes -> fZon
466        DO j=jMin,jMax        DO j=jMin,jMax
467         DO i=iMin,iMax         DO i=iMin,iMax+1
468          fZon(i,j) = uDvdxFac*aF(i,j) + AhDvdxFac*vF(i,j)          fZon(i,j) = uDvdxFac*aF(i,j) + AhDvdxFac*vF(i,j)
469         ENDDO         ENDDO
470        ENDDO        ENDDO
# Line 421  C     Combine fluxes -> fMer Line 488  C     Combine fluxes -> fMer
488    
489  C--   Vertical flux (fVer is at upper face of "v" cell)  C--   Vertical flux (fVer is at upper face of "v" cell)
490    
 C--   Free surface correction term (flux at k=1)  
       IF (momAdvection.AND.k.EQ.1) THEN  
        CALL MOM_V_ADV_WV(bi,bj,k,vVel,wVel,af,myThid)  
        DO j=jMin,jMax  
         DO i=iMin,iMax  
          fVerV(i,j,kUp) = af(i,j)  
         ENDDO  
        ENDDO  
       ENDIF  
491  C     o Mean flow component of vertical flux  C     o Mean flow component of vertical flux
492        IF (momAdvection)        IF (momAdvection)
493       & CALL MOM_V_ADV_WV(bi,bj,k+1,vVel,wVel,af,myThid)       & CALL MOM_V_ADV_WV(bi,bj,k+1,vVel,wVel,rTransV,af,myThid)
494    
495  C     Eddy component of vertical flux (interior component only) -> vrF  C     Eddy component of vertical flux (interior component only) -> vrF
496        IF (momViscosity.AND..NOT.implicitViscosity)        IF (momViscosity.AND..NOT.implicitViscosity)
# Line 445  C     Combine fluxes -> fVerV Line 503  C     Combine fluxes -> fVerV
503         ENDDO         ENDDO
504        ENDDO        ENDDO
505    
 C---  Hydorstatic term (-1/rhoConst . dphi/dy )  
       IF (momPressureForcing) THEN  
        DO j=jMin,jMax  
         DO i=iMin,iMax  
          pF(i,j) = -_recip_dyC(i,j,bi,bj)  
      &    *(phi_hyd(i,j,k)-phi_hyd(i,j-1,k))  
         ENDDO  
        ENDDO  
       ENDIF  
   
506  C--   Tendency is minus divergence of the fluxes + coriolis + pressure term  C--   Tendency is minus divergence of the fluxes + coriolis + pressure term
507        DO j=jMin,jMax        DO j=jMin,jMax
508         DO i=iMin,iMax         DO i=iMin,iMax
# Line 470  C--   Tendency is minus divergence of th Line 518  C--   Tendency is minus divergence of th
518       &   +fMer(i,j  )          - fMer(i,j-1)       &   +fMer(i,j  )          - fMer(i,j-1)
519       &   +fVerV(i,j,kUp)*rkFac - fVerV(i,j,kDown)*rkFac       &   +fVerV(i,j,kUp)*rkFac - fVerV(i,j,kDown)*rkFac
520       &   )       &   )
521       & _PHM( +phyFac*pf(i,j) )       &  - phyFac*dPhiHydY(i,j)
522         ENDDO         ENDDO
523        ENDDO        ENDDO
524    
525    #ifdef NONLIN_FRSURF
526    C-- account for 3.D divergence of the flow in rStar coordinate:
527          IF ( momAdvection .AND. select_rStar.GT.0 ) THEN
528           DO j=jMin,jMax
529            DO i=iMin,iMax
530             gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
531         &     - (rStarExpS(i,j,bi,bj) - 1. _d 0)/deltaTfreesurf
532         &       *vVel(i,j,k,bi,bj)
533            ENDDO
534           ENDDO
535          ENDIF
536          IF ( momAdvection .AND. select_rStar.LT.0 ) THEN
537           DO j=jMin,jMax
538            DO i=iMin,iMax
539             gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
540         &     - rStarDhSDt(i,j,bi,bj)*vVel(i,j,k,bi,bj)
541            ENDDO
542           ENDDO
543          ENDIF
544    #endif /* NONLIN_FRSURF */
545    
546  C-- No-slip and drag BCs appear as body forces in cell abutting topography  C-- No-slip and drag BCs appear as body forces in cell abutting topography
547        IF (momViscosity.AND.no_slip_sides) THEN        IF (momViscosity.AND.no_slip_sides) THEN
548  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
# Line 498  C--   Forcing term Line 567  C--   Forcing term
567        IF (momForcing)        IF (momForcing)
568       & CALL EXTERNAL_FORCING_V(       & CALL EXTERNAL_FORCING_V(
569       I     iMin,iMax,jMin,jMax,bi,bj,k,       I     iMin,iMax,jMin,jMax,bi,bj,k,
570       I     myCurrentTime,myThid)       I     myTime,myThid)
571    
572  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
573        IF (usingSphericalPolarMTerms) THEN        IF (useNHMTerms) THEN
574  C      o Spherical polar grid metric terms  C      o Spherical polar grid metric terms
575         CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)         CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)
576         DO j=jMin,jMax         DO j=jMin,jMax
# Line 509  C      o Spherical polar grid metric ter Line 578  C      o Spherical polar grid metric ter
578           gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mTFacV*mT(i,j)           gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mTFacV*mT(i,j)
579          ENDDO          ENDDO
580         ENDDO         ENDDO
581          ENDIF
582          IF (usingSphericalPolarMTerms) THEN
583         CALL MOM_V_METRIC_SPHERE(bi,bj,k,uFld,mT,myThid)         CALL MOM_V_METRIC_SPHERE(bi,bj,k,uFld,mT,myThid)
584         DO j=jMin,jMax         DO j=jMin,jMax
585          DO i=iMin,iMax          DO i=iMin,iMax
# Line 527  C--   Set dv/dt on boundaries to zero Line 598  C--   Set dv/dt on boundaries to zero
598  C--   Coriolis term  C--   Coriolis term
599  C     Note. As coded here, coriolis will not work with "thin walls"  C     Note. As coded here, coriolis will not work with "thin walls"
600  #ifdef INCLUDE_CD_CODE  #ifdef INCLUDE_CD_CODE
601        CALL MOM_CDSCHEME(bi,bj,k,phi_hyd,myThid)        CALL MOM_CDSCHEME(bi,bj,k,phi_hyd,dPhiHydX,dPhiHydY,myThid)
602  #else  #else
603        CALL MOM_U_CORIOLIS(bi,bj,k,vFld,cf,myThid)        CALL MOM_U_CORIOLIS(bi,bj,k,vFld,cf,myThid)
604        DO j=jMin,jMax        DO j=jMin,jMax
# Line 542  C     Note. As coded here, coriolis will Line 613  C     Note. As coded here, coriolis will
613         ENDDO         ENDDO
614        ENDDO        ENDDO
615  #endif /* INCLUDE_CD_CODE */  #endif /* INCLUDE_CD_CODE */
616          IF (nonHydrostatic.OR.quasiHydrostatic) THEN
617           CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,cf,myThid)
618           DO j=jMin,jMax
619            DO i=iMin,iMax
620             gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)
621            ENDDO
622           ENDDO
623          ENDIF
624    
625        RETURN        RETURN
626        END        END

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22