/[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.5 by jmc, Fri Apr 11 13:35:03 2003 UTC revision 1.9 by heimbach, Sun Oct 26 01:01:23 2003 UTC
# Line 31  C     == Global variables == Line 31  C     == Global variables ==
31  #include "EEPARAMS.h"  #include "EEPARAMS.h"
32  #include "PARAMS.h"  #include "PARAMS.h"
33  #include "GRID.h"  #include "GRID.h"
34    #ifdef ALLOW_TIMEAVE
35    #include "TIMEAVE_STATV.h"
36    #endif
37    
38  C     == Routine arguments ==  C     == Routine arguments ==
39  C     fVerU   - Flux of momentum in the vertical  C     fVerU   - Flux of momentum in the vertical
# Line 53  C     myThid - Instance number for this Line 56  C     myThid - Instance number for this
56        INTEGER myThid        INTEGER myThid
57        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER bi,bj,iMin,iMax,jMin,jMax
58    
59    #ifndef DISABLE_MOM_VECINV
60    
61  C     == Functions ==  C     == Functions ==
62        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
63        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
# Line 73  C     == Local variables == Line 78  C     == Local variables ==
78        _RS r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
79        _RS xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
80        _RS yA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS yA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
       _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
81        _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
82        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
83        _RL dStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL dStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 112  C     xxxFac - On-off tracer parameters Line 115  C     xxxFac - On-off tracer parameters
115        _RL  phyFac        _RL  phyFac
116        _RL  vForcFac        _RL  vForcFac
117        _RL  mtFacV        _RL  mtFacV
       INTEGER km1,kp1  
118        _RL wVelBottomOverride        _RL wVelBottomOverride
119        LOGICAL bottomDragTerms        LOGICAL bottomDragTerms
120        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 120  C     xxxFac - On-off tracer parameters Line 122  C     xxxFac - On-off tracer parameters
122        _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
123        _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
124    
125        km1=MAX(1,k-1)  #ifdef ALLOW_AUTODIFF_TAMC
126        kp1=MIN(Nr,k+1)  C--   only the kDown part of fverU/V is set in this subroutine
127    C--   the kUp is still required
128    C--   In the case of mom_fluxform Kup is set as well
129    C--   (at least in part)
130          fVerU(1,1,kUp) = fVerU(1,1,kUp)
131          fVerV(1,1,kUp) = fVerV(1,1,kUp)
132    #endif
133    
134        rVelMaskOverride=1.        rVelMaskOverride=1.
135        IF ( k .EQ. 1 ) rVelMaskOverride=freeSurfFac        IF ( k .EQ. 1 ) rVelMaskOverride=freeSurfFac
136        wVelBottomOverride=1.        wVelBottomOverride=1.
# Line 146  C     Initialise intermediate terms Line 155  C     Initialise intermediate terms
155          vort3(i,j) = 0.          vort3(i,j) = 0.
156          omega3(i,j) = 0.          omega3(i,j) = 0.
157          ke(i,j) = 0.          ke(i,j) = 0.
158    #ifdef ALLOW_AUTODIFF_TAMC
159            strain(i,j)  = 0. _d 0
160            tension(i,j) = 0. _d 0
161    #endif
162         ENDDO         ENDDO
163        ENDDO        ENDDO
164    
# Line 212  C     Make local copies of horizontal fl Line 225  C     Make local copies of horizontal fl
225         ENDDO         ENDDO
226        ENDDO        ENDDO
227    
228  C     Calculate velocity field "volume transports" through tracer cell faces.  C note (jmc) : Dissipation and Vort3 advection do not necesary
229        DO j=1-OLy,sNy+OLy  C              use the same maskZ (and hFacZ)  => needs 2 call(s)
230         DO i=1-OLx,sNx+OLx  c     CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFacZ,r_hFacZ,myThid)
         uTrans(i,j) = uFld(i,j)*xA(i,j)  
         vTrans(i,j) = vFld(i,j)*yA(i,j)  
        ENDDO  
       ENDDO  
231    
232        CALL MOM_VI_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)        CALL MOM_VI_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)
233    
# Line 260  C      or in terms of tension and strain Line 269  C      or in terms of tension and strain
269         ENDIF         ENDIF
270        ENDIF        ENDIF
271    
272    C-    Return to standard hfacZ (min-4) and mask vort3 accordingly:
273    c     CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid)
274    
275  C---- Zonal momentum equation starts here  C---- Zonal momentum equation starts here
276    
277  C--   Vertical flux (fVer is at upper face of "u" cell)  C--   Vertical flux (fVer is at upper face of "u" cell)
# Line 298  C-     No-slip BCs impose a drag at wall Line 310  C-     No-slip BCs impose a drag at wall
310          ENDDO          ENDDO
311         ENDDO         ENDDO
312        ENDIF        ENDIF
313    
314  C-    No-slip BCs impose a drag at bottom  C-    No-slip BCs impose a drag at bottom
315        IF (momViscosity.AND.bottomDragTerms) THEN        IF (momViscosity.AND.bottomDragTerms) THEN
316         CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)         CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)
# Line 308  C-    No-slip BCs impose a drag at botto Line 321  C-    No-slip BCs impose a drag at botto
321         ENDDO         ENDDO
322        ENDIF        ENDIF
323    
 C--   Forcing term  
       IF (momForcing)  
      &  CALL EXTERNAL_FORCING_U(  
      I     iMin,iMax,jMin,jMax,bi,bj,k,  
      I     myCurrentTime,myThid)  
   
324  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
325  c     IF (usingSphericalPolarMTerms) THEN  c     IF (usingSphericalPolarMTerms) THEN
326  C      o Spherical polar grid metric terms  C      o Spherical polar grid metric terms
# Line 325  c       ENDDO Line 332  c       ENDDO
332  c      ENDDO  c      ENDDO
333  c     ENDIF  c     ENDIF
334    
   
335  C---- Meridional momentum equation starts here  C---- Meridional momentum equation starts here
336    
337  C--   Vertical flux (fVer is at upper face of "v" cell)  C--   Vertical flux (fVer is at upper face of "v" cell)
# Line 374  C-    No-slip BCs impose a drag at botto Line 380  C-    No-slip BCs impose a drag at botto
380         ENDDO         ENDDO
381        ENDIF        ENDIF
382    
 C--   Forcing term  
       IF (momForcing)  
      & CALL EXTERNAL_FORCING_V(  
      I     iMin,iMax,jMin,jMax,bi,bj,k,  
      I     myCurrentTime,myThid)  
   
383  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
384  c     IF (usingSphericalPolarMTerms) THEN  c     IF (usingSphericalPolarMTerms) THEN
385  C      o Spherical polar grid metric terms  C      o Spherical polar grid metric terms
# Line 392  c      ENDDO Line 392  c      ENDDO
392  c     ENDIF  c     ENDIF
393    
394  C--   Horizontal Coriolis terms  C--   Horizontal Coriolis terms
395        IF (useCoriolis) THEN        IF (useCoriolis .AND. .NOT.useCDscheme) THEN
396         CALL MOM_VI_CORIOLIS(bi,bj,K,uFld,vFld,omega3,r_hFacZ,         CALL MOM_VI_CORIOLIS(bi,bj,k,uFld,vFld,omega3,hFacZ,r_hFacZ,
397       &                      uCf,vCf,myThid)       &                      uCf,vCf,myThid)
398         DO j=jMin,jMax         DO j=jMin,jMax
399          DO i=iMin,iMax          DO i=iMin,iMax
# Line 406  C--   Horizontal Coriolis terms Line 406  C--   Horizontal Coriolis terms
406        IF (momAdvection) THEN        IF (momAdvection) THEN
407  C--   Horizontal advection of relative vorticity  C--   Horizontal advection of relative vorticity
408  c      CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,r_hFacZ,uCf,myThid)  c      CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,r_hFacZ,uCf,myThid)
409         CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,vort3,r_hFacZ,uCf,myThid)         CALL MOM_VI_U_CORIOLIS(bi,bj,k,vFld,vort3,hFacZ,r_hFacZ,
410         &                        uCf,myThid)
411  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K,vFld,vort3,r_hFacZ,uCf,myThid)  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K,vFld,vort3,r_hFacZ,uCf,myThid)
412         DO j=jMin,jMax         DO j=jMin,jMax
413          DO i=iMin,iMax          DO i=iMin,iMax
# Line 414  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K Line 415  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K
415          ENDDO          ENDDO
416         ENDDO         ENDDO
417  c      CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,r_hFacZ,vCf,myThid)  c      CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,r_hFacZ,vCf,myThid)
418         CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,vort3,r_hFacZ,vCf,myThid)         CALL MOM_VI_V_CORIOLIS(bi,bj,k,uFld,vort3,hFacZ,r_hFacZ,
419         &                        vCf,myThid)
420  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3,r_hFacZ,vCf,myThid)  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3,r_hFacZ,vCf,myThid)
421         DO j=jMin,jMax         DO j=jMin,jMax
422          DO i=iMin,iMax          DO i=iMin,iMax
# Line 422  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K Line 424  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K
424          ENDDO          ENDDO
425         ENDDO         ENDDO
426    
427    #ifdef ALLOW_TIMEAVE
428           IF (taveFreq.GT.0.) THEN
429             CALL TIMEAVE_CUMUL_1K1T(uZetatave,vCf,deltaTClock,
430         &                           Nr, k, bi, bj, myThid)
431             CALL TIMEAVE_CUMUL_1K1T(vZetatave,uCf,deltaTClock,
432         &                           Nr, k, bi, bj, myThid)
433           ENDIF
434    #endif
435    
436  C--   Vertical shear terms (-w*du/dr & -w*dv/dr)  C--   Vertical shear terms (-w*du/dr & -w*dv/dr)
437         CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)         CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)
438         DO j=jMin,jMax         DO j=jMin,jMax
# Line 477  c      CALL WRITE_LOCAL_RL('W3','I10',1, Line 488  c      CALL WRITE_LOCAL_RL('W3','I10',1,
488         CALL WRITE_LOCAL_RL('D','I10',1,hdiv,bi,bj,k,myIter,myThid)         CALL WRITE_LOCAL_RL('D','I10',1,hdiv,bi,bj,k,myIter,myThid)
489        ENDIF        ENDIF
490    
491    #endif /* DISABLE_MOM_VECINV */
492    
493        RETURN        RETURN
494        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22