/[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.23 by jmc, Sat Jul 30 22:07:00 2005 UTC revision 1.33 by jmc, Fri Mar 17 23:18:05 2006 UTC
# Line 101  C  fVrUp,fVrDw          :: vertical visc Line 101  C  fVrUp,fVrDw          :: vertical visc
101        _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
102        _RL fVrUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fVrUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
103        _RL fVrDw(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fVrDw(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
104  C     afFacMom      - Tracer parameters for turning terms  C     afFacMom     :: Tracer parameters for turning terms on and off.
105  C     vfFacMom        on and off.  C     vfFacMom        
106  C     pfFacMom        afFacMom - Advective terms  C     pfFacMom        afFacMom - Advective terms
107  C     cfFacMom        vfFacMom - Eddy viscosity terms  C     cfFacMom        vfFacMom - Eddy viscosity terms
108  C     mTFacMom        pfFacMom - Pressure terms  C     mtFacMom        pfFacMom - Pressure terms
109  C                     cfFacMom - Coriolis terms  C                     cfFacMom - Coriolis terms
110  C                     foFacMom - Forcing  C                     foFacMom - Forcing
111  C                     mTFacMom - Metric term  C                     mtFacMom - Metric term
112  C     uDudxFac, AhDudxFac, etc ... individual term parameters for switching terms off  C     uDudxFac, AhDudxFac, etc ... individual term parameters for switching terms off
113        _RS    hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS    hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
114        _RS  r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS  r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 121  C     uDudxFac, AhDudxFac, etc ... indiv Line 121  C     uDudxFac, AhDudxFac, etc ... indiv
121        _RL  rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
122        _RL  rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
123        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
124  c     _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
125  c     _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
126  c     _RL viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
127  c     _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
128  c     _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
129  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
130        _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
131        _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
132        _RL  uDudxFac        _RL  uDudxFac
# Line 137  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O Line 137  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O
137        _RL  ArDudrFac        _RL  ArDudrFac
138        _RL  fuFac        _RL  fuFac
139        _RL  mtFacU        _RL  mtFacU
140          _RL  mtNHFacU
141        _RL  uDvdxFac        _RL  uDvdxFac
142        _RL  AhDvdxFac        _RL  AhDvdxFac
143        _RL  vDvdyFac        _RL  vDvdyFac
# Line 145  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O Line 146  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O
146        _RL  ArDvdrFac        _RL  ArDvdrFac
147        _RL  fvFac        _RL  fvFac
148        _RL  mtFacV        _RL  mtFacV
149        LOGICAL bottomDragTerms        _RL  mtNHFacV
150          _RL  sideMaskFac
151          LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity
152  CEOP  CEOP
153    
154  C     Initialise intermediate terms  C     Initialise intermediate terms
# Line 165  C     Initialise intermediate terms Line 168  C     Initialise intermediate terms
168          tension(i,j)= 0.          tension(i,j)= 0.
169          guDiss(i,j) = 0.          guDiss(i,j) = 0.
170          gvDiss(i,j) = 0.          gvDiss(i,j) = 0.
171    #ifdef ALLOW_AUTODIFF_TAMC
172            vort3(i,j)   = 0. _d 0
173            strain(i,j)  = 0. _d 0
174            tension(i,j) = 0. _d 0
175    #endif
176         ENDDO         ENDDO
177        ENDDO        ENDDO
178    
# Line 176  C     o U momentum equation Line 184  C     o U momentum equation
184        AhDudyFac    = vfFacMom*1.        AhDudyFac    = vfFacMom*1.
185        rVelDudrFac  = afFacMom*1.        rVelDudrFac  = afFacMom*1.
186        ArDudrFac    = vfFacMom*1.        ArDudrFac    = vfFacMom*1.
187        mTFacU       = mtFacMom*1.        mtFacU       = mtFacMom*1.
188          mtNHFacU     = 1.
189        fuFac        = cfFacMom*1.        fuFac        = cfFacMom*1.
190  C     o V momentum equation  C     o V momentum equation
191        uDvdxFac     = afFacMom*1.        uDvdxFac     = afFacMom*1.
# Line 185  C     o V momentum equation Line 194  C     o V momentum equation
194        AhDvdyFac    = vfFacMom*1.        AhDvdyFac    = vfFacMom*1.
195        rVelDvdrFac  = afFacMom*1.        rVelDvdrFac  = afFacMom*1.
196        ArDvdrFac    = vfFacMom*1.        ArDvdrFac    = vfFacMom*1.
197        mTFacV       = mtFacMom*1.        mtFacV       = mtFacMom*1.
198          mtNHFacV     = 1.
199        fvFac        = cfFacMom*1.        fvFac        = cfFacMom*1.
200    
201        IF (implicitViscosity) THEN        IF (implicitViscosity) THEN
# Line 193  C     o V momentum equation Line 203  C     o V momentum equation
203          ArDvdrFac  = 0.          ArDvdrFac  = 0.
204        ENDIF        ENDIF
205    
206    C note: using standard stencil (no mask) results in under-estimating
207    C       vorticity at a no-slip boundary by a factor of 2 = sideDragFactor
208          IF ( no_slip_sides ) THEN
209            sideMaskFac = sideDragFactor
210          ELSE
211            sideMaskFac = 0. _d 0
212          ENDIF
213    
214        IF (     no_slip_bottom        IF (     no_slip_bottom
215       &    .OR. bottomDragQuadratic.NE.0.       &    .OR. bottomDragQuadratic.NE.0.
216       &    .OR. bottomDragLinear.NE.0.) THEN       &    .OR. bottomDragLinear.NE.0.) THEN
# Line 231  C     Calculate velocity field "volume t Line 249  C     Calculate velocity field "volume t
249         ENDDO         ENDDO
250        ENDDO        ENDDO
251    
252        IF (bottomDragTerms) THEN        CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)
253          CALL MOM_CALC_KE(bi,bj,k,3,uFld,vFld,KE,myThid)        IF ( momViscosity) THEN
254        ENDIF          CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
255            CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
256        IF (viscAstrain.NE.0. .OR. viscAtension.NE.0.) THEN          CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
257           CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,          CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
258       O                         tension,          DO j=1-Oly,sNy+Oly
259       I                         myThid)           DO i=1-Olx,sNx+Olx
260           CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,             IF ( hFacZ(i,j).EQ.0. ) THEN
261       O                        strain,               vort3(i,j)  = sideMaskFac*vort3(i,j)
262       I                        myThid)               strain(i,j) = sideMaskFac*strain(i,j)
263               ENDIF
264             ENDDO
265            ENDDO
266    #ifdef ALLOW_DIAGNOSTICS
267            IF ( useDiagnostics ) THEN
268              CALL DIAGNOSTICS_FILL(hDiv,   'momHDiv ',k,1,2,bi,bj,myThid)
269              CALL DIAGNOSTICS_FILL(vort3,  'momVort3',k,1,2,bi,bj,myThid)
270              CALL DIAGNOSTICS_FILL(tension,'Tension ',k,1,2,bi,bj,myThid)
271              CALL DIAGNOSTICS_FILL(strain, 'Strain  ',k,1,2,bi,bj,myThid)
272            ENDIF
273    #endif
274        ENDIF        ENDIF
275    
276  C---  First call (k=1): compute vertical adv. flux fVerU(kUp) & fVerV(kUp)  C---  First call (k=1): compute vertical adv. flux fVerU(kUp) & fVerV(kUp)
# Line 270  C---  Calculate vertical transports (at Line 299  C---  Calculate vertical transports (at
299       I                        myTime, myIter, myThid)       I                        myTime, myIter, myThid)
300        ENDIF        ENDIF
301    
302  c     IF (momViscosity) THEN        IF (momViscosity) THEN
303  c    &  CALL MOM_CALC_VISCOSITY(bi,bj,k,         CALL MOM_CALC_VISC(
304  c    I                         uFld,vFld,       I        bi,bj,k,
305  c    O                         viscAh_D,viscAh_Z,myThid)       O        viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
306         O        harmonic,biharmonic,useVariableViscosity,
307         I        hDiv,vort3,tension,strain,KE,hFacZ,
308         I        myThid)
309          ENDIF
310    
311  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
312    
# Line 314  C--   Tendency is minus divergence of th Line 347  C--   Tendency is minus divergence of th
347           ENDDO           ENDDO
348          ENDDO          ENDDO
349    
350    #ifdef ALLOW_DIAGNOSTICS
351            IF ( useDiagnostics ) THEN
352              CALL DIAGNOSTICS_FILL(fZon,'ADVx_Um ',k,1,2,bi,bj,myThid)
353              CALL DIAGNOSTICS_FILL(fMer,'ADVy_Um ',k,1,2,bi,bj,myThid)
354              CALL DIAGNOSTICS_FILL(fVerU(1-Olx,1-Oly,kUp),
355         &                               'ADVrE_Um',k,1,2,bi,bj,myThid)
356            ENDIF
357    #endif
358    
359  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
360  C-- account for 3.D divergence of the flow in rStar coordinate:  C-- account for 3.D divergence of the flow in rStar coordinate:
361    # ifndef DISABLE_RSTAR_CODE
362          IF ( select_rStar.GT.0 ) THEN          IF ( select_rStar.GT.0 ) THEN
363           DO j=jMin,jMax           DO j=jMin,jMax
364            DO i=iMin,iMax            DO i=iMin,iMax
# Line 333  C-- account for 3.D divergence of the fl Line 376  C-- account for 3.D divergence of the fl
376            ENDDO            ENDDO
377           ENDDO           ENDDO
378          ENDIF          ENDIF
379    # endif /* DISABLE_RSTAR_CODE */
380  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
381    
382        ELSE        ELSE
# Line 350  C-    endif momAdvection. Line 394  C-    endif momAdvection.
394  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.
395    
396  C     Bi-harmonic term del^2 U -> v4F  C     Bi-harmonic term del^2 U -> v4F
397          IF ( viscA4.NE.0. )          IF (biharmonic)
398       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)
399    
400  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
401          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,myThid)          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,
402         I    viscAh_D,viscA4_D,myThid)
403    
404  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
405          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,myThid)          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,
406         I    viscAh_Z,viscA4_Z,myThid)
407    
408  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
409         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 383  C--   Tendency is minus divergence of th Line 429  C--   Tendency is minus divergence of th
429           ENDDO           ENDDO
430          ENDDO          ENDDO
431    
432    #ifdef ALLOW_DIAGNOSTICS
433            IF ( useDiagnostics ) THEN
434              CALL DIAGNOSTICS_FILL(fZon, 'VISCx_Um',k,1,2,bi,bj,myThid)
435              CALL DIAGNOSTICS_FILL(fMer, 'VISCy_Um',k,1,2,bi,bj,myThid)
436              IF (.NOT.implicitViscosity)
437         &    CALL DIAGNOSTICS_FILL(fVrUp,'VISrE_Um',k,1,2,bi,bj,myThid)
438            ENDIF
439    #endif
440    
441  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
442          IF (no_slip_sides) THEN          IF (no_slip_sides) THEN
443  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
444           CALL MOM_U_SIDEDRAG(bi,bj,k,uFld,v4F,hFacZ,vF,myThid)           CALL MOM_U_SIDEDRAG(
445         I        bi,bj,k,
446         I        uFld, v4f, hFacZ,
447         I        viscAh_Z,viscA4_Z,
448         I        harmonic,biharmonic,useVariableViscosity,
449         O        vF,
450         I        myThid)
451           DO j=jMin,jMax           DO j=jMin,jMax
452            DO i=iMin,iMax            DO i=iMin,iMax
453             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
# Line 403  C-    No-slip BCs impose a drag at botto Line 464  C-    No-slip BCs impose a drag at botto
464           ENDDO           ENDDO
465          ENDIF          ENDIF
466    
467    #ifdef ALLOW_SHELFICE
468            IF (useShelfIce) THEN
469             CALL SHELFICE_U_DRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)
470             DO j=jMin,jMax
471              DO i=iMin,iMax
472               gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
473              ENDDO
474             ENDDO
475            ENDIF
476    #endif /* ALLOW_SHELFICE */
477    
478  C-    endif momViscosity  C-    endif momViscosity
479        ENDIF        ENDIF
480    
# Line 414  c    I     myTime,myThid) Line 486  c    I     myTime,myThid)
486    
487  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
488        IF (useNHMTerms) THEN        IF (useNHMTerms) THEN
489  C      o Non-hydrosatic metric terms  C      o Non-Hydrostatic (spherical) metric terms
490         CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)         CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)
491         DO j=jMin,jMax         DO j=jMin,jMax
492          DO i=iMin,iMax          DO i=iMin,iMax
493           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)+mtNHFacU*mT(i,j)
494          ENDDO          ENDDO
495         ENDDO         ENDDO
496        ENDIF        ENDIF
497        IF (usingSphericalPolarMTerms) THEN        IF ( usingSphericalPolarGrid .AND. metricTerms ) THEN
498    C      o Spherical polar grid metric terms
499         CALL MOM_U_METRIC_SPHERE(bi,bj,k,uFld,vFld,mT,myThid)         CALL MOM_U_METRIC_SPHERE(bi,bj,k,uFld,vFld,mT,myThid)
500         DO j=jMin,jMax         DO j=jMin,jMax
501          DO i=iMin,iMax          DO i=iMin,iMax
502           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)
503          ENDDO          ENDDO
504         ENDDO         ENDDO
505        ENDIF        ENDIF
506        IF (usingCylindricalGrid) THEN        IF ( usingCylindricalGrid .AND. metricTerms ) THEN
507           CALL MOM_U_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)  C      o Cylindrical grid metric terms
508           DO j=jMin,jMax         CALL MOM_U_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)
509            DO i=iMin,iMax         DO j=jMin,jMax
510               gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mTFacU*mT(i,j)          DO i=iMin,iMax
511            ENDDO           gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mtFacU*mT(i,j)
512            ENDDO
513         ENDDO         ENDDO
514        ENDIF        ENDIF
515    
# Line 473  C--   Tendency is minus divergence of th Line 547  C--   Tendency is minus divergence of th
547       &      +( fMer(i,  j)     - fMer(i,j-1) )*vDvdyFac       &      +( fMer(i,  j)     - fMer(i,j-1) )*vDvdyFac
548       &      +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac       &      +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac
549       &     )       &     )
550         ENDDO           ENDDO
551        ENDDO          ENDDO
552    
553    #ifdef ALLOW_DIAGNOSTICS
554            IF ( useDiagnostics ) THEN
555              CALL DIAGNOSTICS_FILL(fZon,'ADVx_Vm ',k,1,2,bi,bj,myThid)
556              CALL DIAGNOSTICS_FILL(fMer,'ADVy_Vm ',k,1,2,bi,bj,myThid)
557              CALL DIAGNOSTICS_FILL(fVerV(1-Olx,1-Oly,kUp),
558         &                               'ADVrE_Vm',k,1,2,bi,bj,myThid)
559            ENDIF
560    #endif
561    
562  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
563  C-- account for 3.D divergence of the flow in rStar coordinate:  C-- account for 3.D divergence of the flow in rStar coordinate:
564    # ifndef DISABLE_RSTAR_CODE
565          IF ( select_rStar.GT.0 ) THEN          IF ( select_rStar.GT.0 ) THEN
566           DO j=jMin,jMax           DO j=jMin,jMax
567            DO i=iMin,iMax            DO i=iMin,iMax
# Line 495  C-- account for 3.D divergence of the fl Line 579  C-- account for 3.D divergence of the fl
579            ENDDO            ENDDO
580           ENDDO           ENDDO
581          ENDIF          ENDIF
582    # endif /* DISABLE_RSTAR_CODE */
583  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
584    
585        ELSE        ELSE
# Line 511  C-    endif momAdvection. Line 596  C-    endif momAdvection.
596        IF (momViscosity) THEN        IF (momViscosity) THEN
597  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.
598  C     Bi-harmonic term del^2 V -> v4F  C     Bi-harmonic term del^2 V -> v4F
599          IF ( viscA4.NE.0. )          IF (biharmonic)
600       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)
601    
602  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
603          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,myThid)          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,
604         I    viscAh_Z,viscA4_Z,myThid)
605    
606  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
607          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,myThid)          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,
608         I    viscAh_D,viscA4_D,myThid)
609    
610  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
611         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 544  C--   Tendency is minus divergence of th Line 631  C--   Tendency is minus divergence of th
631           ENDDO           ENDDO
632          ENDDO          ENDDO
633    
634    #ifdef ALLOW_DIAGNOSTICS
635            IF ( useDiagnostics ) THEN
636              CALL DIAGNOSTICS_FILL(fZon, 'VISCx_Vm',k,1,2,bi,bj,myThid)
637              CALL DIAGNOSTICS_FILL(fMer, 'VISCy_Vm',k,1,2,bi,bj,myThid)
638              IF (.NOT.implicitViscosity)
639         &    CALL DIAGNOSTICS_FILL(fVrUp,'VISrE_Vm',k,1,2,bi,bj,myThid)
640            ENDIF
641    #endif
642    
643  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
644        IF (no_slip_sides) THEN          IF (no_slip_sides) THEN
645  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
646           CALL MOM_V_SIDEDRAG(bi,bj,k,vFld,v4F,hFacZ,vF,myThid)           CALL MOM_V_SIDEDRAG(
647         I        bi,bj,k,
648         I        vFld, v4f, hFacZ,
649         I        viscAh_Z,viscA4_Z,
650         I        harmonic,biharmonic,useVariableViscosity,
651         O        vF,
652         I        myThid)
653           DO j=jMin,jMax           DO j=jMin,jMax
654            DO i=iMin,iMax            DO i=iMin,iMax
655             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
# Line 564  C-    No-slip BCs impose a drag at botto Line 666  C-    No-slip BCs impose a drag at botto
666           ENDDO           ENDDO
667          ENDIF          ENDIF
668    
669    #ifdef ALLOW_SHELFICE
670            IF (useShelfIce) THEN
671             CALL SHELFICE_V_DRAG(bi,bj,k,vFld,KE,KappaRU,vF,myThid)
672             DO j=jMin,jMax
673              DO i=iMin,iMax
674               gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
675              ENDDO
676             ENDDO
677            ENDIF
678    #endif /* ALLOW_SHELFICE */
679    
680  C-    endif momViscosity  C-    endif momViscosity
681        ENDIF        ENDIF
682    
# Line 575  c    I     myTime,myThid) Line 688  c    I     myTime,myThid)
688    
689  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
690        IF (useNHMTerms) THEN        IF (useNHMTerms) THEN
691  C      o Spherical polar grid metric terms  C      o Non-Hydrostatic (spherical) metric terms
692         CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)         CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)
693         DO j=jMin,jMax         DO j=jMin,jMax
694          DO i=iMin,iMax          DO i=iMin,iMax
695           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)+mtNHFacV*mT(i,j)
696          ENDDO          ENDDO
697         ENDDO         ENDDO
698        ENDIF        ENDIF
699        IF (usingSphericalPolarMTerms) THEN        IF ( usingSphericalPolarGrid .AND. metricTerms ) THEN
700    C      o Spherical polar grid metric terms
701         CALL MOM_V_METRIC_SPHERE(bi,bj,k,uFld,mT,myThid)         CALL MOM_V_METRIC_SPHERE(bi,bj,k,uFld,mT,myThid)
702         DO j=jMin,jMax         DO j=jMin,jMax
703          DO i=iMin,iMax          DO i=iMin,iMax
704           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)
705          ENDDO          ENDDO
706         ENDDO         ENDDO
707        ENDIF        ENDIF
708        IF (usingCylindricalGrid) THEN        IF ( usingCylindricalGrid .AND. metricTerms ) THEN
709           CALL MOM_V_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)  C      o Cylindrical grid metric terms
710           DO j=jMin,jMax         CALL MOM_V_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)
711              DO i=iMin,iMax         DO j=jMin,jMax
712                 gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mTFacV*mT(i,j)          DO i=iMin,iMax
713              ENDDO           gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mtFacV*mT(i,j)
714           ENDDO          ENDDO
715           ENDDO
716        ENDIF        ENDIF
717    
718  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
# Line 614  c     ELSE Line 729  c     ELSE
729            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)
730           ENDDO           ENDDO
731          ENDDO          ENDDO
732    #ifdef ALLOW_DIAGNOSTICS
733            IF ( useDiagnostics )
734         &    CALL DIAGNOSTICS_FILL(cf,'Um_Cori ',k,1,2,bi,bj,myThid)
735    #endif
736          CALL MOM_V_CORIOLIS(bi,bj,k,uFld,cf,myThid)          CALL MOM_V_CORIOLIS(bi,bj,k,uFld,cf,myThid)
737          DO j=jMin,jMax          DO j=jMin,jMax
738           DO i=iMin,iMax           DO i=iMin,iMax
739            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)
740           ENDDO           ENDDO
741          ENDDO          ENDDO
742    #ifdef ALLOW_DIAGNOSTICS
743            IF ( useDiagnostics )
744         &    CALL DIAGNOSTICS_FILL(cf,'Vm_Cori ',k,1,2,bi,bj,myThid)
745    #endif
746        ENDIF        ENDIF
747    
748        IF (nonHydrostatic.OR.quasiHydrostatic) THEN        IF (nonHydrostatic.OR.quasiHydrostatic) THEN
# Line 641  C--   Set du/dt & dv/dt on boundaries to Line 764  C--   Set du/dt & dv/dt on boundaries to
764         ENDDO         ENDDO
765        ENDDO        ENDDO
766    
767    #ifdef ALLOW_DIAGNOSTICS
768          IF ( useDiagnostics ) THEN
769            CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)
770            CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),
771         &                               'Um_Advec',k,1,2,bi,bj,myThid)
772            CALL DIAGNOSTICS_FILL(gV(1-Olx,1-Oly,k,bi,bj),
773         &                               'Vm_Advec',k,1,2,bi,bj,myThid)
774           IF (momViscosity) THEN
775            CALL DIAGNOSTICS_FILL(guDiss,'Um_Diss ',k,1,2,bi,bj,myThid)
776            CALL DIAGNOSTICS_FILL(gvDiss,'Vm_Diss ',k,1,2,bi,bj,myThid)
777           ENDIF
778          ENDIF
779    #endif /* ALLOW_DIAGNOSTICS */
780    
781        RETURN        RETURN
782        END        END

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.33

  ViewVC Help
Powered by ViewVC 1.1.22