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

Diff of /MITgcm/pkg/mom_vecinv/mom_vecinv.F

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

revision 1.56 by mlosch, Tue Feb 7 11:46:17 2006 UTC revision 1.57 by jmc, Thu Mar 30 19:51:31 2006 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "MOM_VECINV_OPTIONS.h"  #include "MOM_VECINV_OPTIONS.h"
5    
6        SUBROUTINE MOM_VECINV(        SUBROUTINE MOM_VECINV(
7       I        bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,       I        bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,
8       I        KappaRU, KappaRV,       I        KappaRU, KappaRV,
9       U        fVerU, fVerV,       U        fVerU, fVerV,
# Line 71  C     == Local variables == Line 71  C     == Local variables ==
71        _RL      vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
72        _RL      uCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      uCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
73        _RL      vCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      vCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
 c     _RL      mT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
74        _RS hFacZ   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS hFacZ   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
75        _RS r_hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS r_hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
76        _RL uFld    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL uFld    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 94  C     i,j,k  :: Loop counters Line 93  C     i,j,k  :: Loop counters
93        INTEGER i,j,k        INTEGER i,j,k
94  C     xxxFac - On-off tracer parameters used for switching terms off.  C     xxxFac - On-off tracer parameters used for switching terms off.
95        _RL  ArDudrFac        _RL  ArDudrFac
 c     _RL  mtFacU  
96        _RL  ArDvdrFac        _RL  ArDvdrFac
 c     _RL  mtFacV  
97        _RL  sideMaskFac        _RL  sideMaskFac
98        LOGICAL bottomDragTerms        LOGICAL bottomDragTerms
99        LOGICAL writeDiag        LOGICAL writeDiag
# Line 146  C     Initialise intermediate terms Line 143  C     Initialise intermediate terms
143          vrF(i,j)   = 0.          vrF(i,j)   = 0.
144          uCf(i,j)   = 0.          uCf(i,j)   = 0.
145          vCf(i,j)   = 0.          vCf(i,j)   = 0.
 c       mT(i,j)    = 0.  
146          del2u(i,j) = 0.          del2u(i,j) = 0.
147          del2v(i,j) = 0.          del2v(i,j) = 0.
148          dStar(i,j) = 0.          dStar(i,j) = 0.
# Line 172  c       mT(i,j)    = 0. Line 168  c       mT(i,j)    = 0.
168  C--   Term by term tracer parmeters  C--   Term by term tracer parmeters
169  C     o U momentum equation  C     o U momentum equation
170        ArDudrFac    = vfFacMom*1.        ArDudrFac    = vfFacMom*1.
 c     mTFacU       = mtFacMom*1.  
171  C     o V momentum equation  C     o V momentum equation
172        ArDvdrFac    = vfFacMom*1.        ArDvdrFac    = vfFacMom*1.
 c     mTFacV       = mtFacMom*1.  
173    
174  C note: using standard stencil (no mask) results in under-estimating  C note: using standard stencil (no mask) results in under-estimating
175  C       vorticity at a no-slip boundary by a factor of 2 = sideDragFactor  C       vorticity at a no-slip boundary by a factor of 2 = sideDragFactor
# Line 213  c     CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFa Line 207  c     CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFa
207        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
208    
209        IF (momViscosity) THEN        IF (momViscosity) THEN
210  C--    For viscous term, compute horizontal divergence, tension & strain  C--    For viscous term, compute horizontal divergence, tension & strain
211  C      and mask relative vorticity (free-slip case):  C      and mask relative vorticity (free-slip case):
212    
213         CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)         CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
# Line 291  C      in terms of vorticity and diverge Line 285  C      in terms of vorticity and diverge
285       I                       viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,       I                       viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
286       I                       harmonic,biharmonic,useVariableViscosity,       I                       harmonic,biharmonic,useVariableViscosity,
287       O                       guDiss,gvDiss,       O                       guDiss,gvDiss,
288       &                       myThid)               &                       myThid)
289         ENDIF         ENDIF
290  C--   if (momViscosity) end of block.  C--   if (momViscosity) end of block.
291        ENDIF        ENDIF
# Line 327  C--   Tendency is minus divergence of th Line 321  C--   Tendency is minus divergence of th
321         ENDDO         ENDDO
322        ENDIF        ENDIF
323    
324  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
325        IF (momViscosity.AND.no_slip_sides) THEN        IF (momViscosity.AND.no_slip_sides) THEN
326  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
327         CALL MOM_U_SIDEDRAG(         CALL MOM_U_SIDEDRAG(
# Line 392  C--   Tendency is minus divergence of th Line 386  C--   Tendency is minus divergence of th
386         ENDDO         ENDDO
387        ENDIF        ENDIF
388    
389  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
390        IF (momViscosity.AND.no_slip_sides) THEN        IF (momViscosity.AND.no_slip_sides) THEN
391  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
392         CALL MOM_V_SIDEDRAG(         CALL MOM_V_SIDEDRAG(
# Line 481  C- jmc: change it to keep the Coriolis t Line 475  C- jmc: change it to keep the Coriolis t
475           gV(i,j,k,bi,bj) = vCf(i,j)           gV(i,j,k,bi,bj) = vCf(i,j)
476          ENDDO          ENDDO
477         ENDDO         ENDDO
   
478         IF ( writeDiag ) THEN         IF ( writeDiag ) THEN
479           IF (snapshot_mdsio) THEN           IF (snapshot_mdsio) THEN
480             CALL WRITE_LOCAL_RL('fV','I10',1,uCf,bi,bj,k,myIter,myThid)             CALL WRITE_LOCAL_RL('fV','I10',1,uCf,bi,bj,k,myIter,myThid)
# Line 502  C- jmc: change it to keep the Coriolis t Line 495  C- jmc: change it to keep the Coriolis t
495           CALL DIAGNOSTICS_FILL(vCf,'Vm_Cori ',k,1,2,bi,bj,myThid)           CALL DIAGNOSTICS_FILL(vCf,'Vm_Cori ',k,1,2,bi,bj,myThid)
496         ENDIF         ENDIF
497  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
   
498        ELSE        ELSE
499         DO j=jMin,jMax         DO j=jMin,jMax
500          DO i=iMin,iMax          DO i=iMin,iMax
# Line 634  C--   Bernoulli term Line 626  C--   Bernoulli term
626  C--   end if momAdvection  C--   end if momAdvection
627        ENDIF        ENDIF
628    
629  C--   Metric terms for curvilinear grid systems  C--   3.D Coriolis term (horizontal momentum, Eastward component: -f'*w)
630  c     IF (usingSphericalPolarMTerms) THEN        IF ( nonHydrostatic.OR.quasiHydrostatic ) THEN
631  C      o Spherical polar grid metric terms          CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,uCf,myThid)
632  c      CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)          DO j=jMin,jMax
633  c      DO j=jMin,jMax           DO i=iMin,iMax
634  c       DO i=iMin,iMax            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
635  c        gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mTFacU*mT(i,j)           ENDDO
636  c       ENDDO          ENDDO
637  c      ENDDO         IF ( usingCurvilinearGrid ) THEN
638  c      CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)  C-     presently, non zero angleSinC array only supported with Curvilinear-Grid
639  c      DO j=jMin,jMax          CALL MOM_V_CORIOLIS_NH(bi,bj,k,wVel,vCf,myThid)
640  c       DO i=iMin,iMax          DO j=jMin,jMax
641  c        gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mTFacV*mT(i,j)           DO i=iMin,iMax
642  c       ENDDO            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
643  c      ENDDO           ENDDO
644  c     ENDIF          ENDDO
645           ENDIF
646          ENDIF
647    
648    C--   Non-Hydrostatic (spherical) metric terms
649          IF ( useNHMTerms ) THEN
650           CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,uCf,myThid)
651           DO j=jMin,jMax
652            DO i=iMin,iMax
653             gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
654            ENDDO
655           ENDDO
656           CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,vCf,myThid)
657           DO j=jMin,jMax
658            DO i=iMin,iMax
659             gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
660            ENDDO
661           ENDDO
662          ENDIF
663    
664  C--   Set du/dt & dv/dt on boundaries to zero  C--   Set du/dt & dv/dt on boundaries to zero
665        DO j=jMin,jMax        DO j=jMin,jMax

Legend:
Removed from v.1.56  
changed lines
  Added in v.1.57

  ViewVC Help
Powered by ViewVC 1.1.22