/[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.6 by jmc, Thu Apr 17 13:42:53 2003 UTC revision 1.8 by heimbach, Fri Oct 10 23:00:01 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 146  C     Initialise intermediate terms Line 149  C     Initialise intermediate terms
149          vort3(i,j) = 0.          vort3(i,j) = 0.
150          omega3(i,j) = 0.          omega3(i,j) = 0.
151          ke(i,j) = 0.          ke(i,j) = 0.
152    #ifdef ALLOW_AUTODIFF_TAMC
153            strain(i,j)  = 0. _d 0
154            tension(i,j) = 0. _d 0
155            fVerU(i,j,1) = 0. _d 0
156            fVerU(i,j,2) = 0. _d 0
157            fVerV(i,j,1) = 0. _d 0
158            fVerV(i,j,2) = 0. _d 0
159    #endif
160         ENDDO         ENDDO
161        ENDDO        ENDDO
162    
# Line 212  C     Make local copies of horizontal fl Line 223  C     Make local copies of horizontal fl
223         ENDDO         ENDDO
224        ENDDO        ENDDO
225    
226  C     Calculate velocity field "volume transports" through tracer cell faces.  C note (jmc) : Dissipation and Vort3 advection do not necesary
227        DO j=1-OLy,sNy+OLy  C              use the same maskZ (and hFacZ)  => needs 2 call(s)
228         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  
229    
230        CALL MOM_VI_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)        CALL MOM_VI_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)
231    
# Line 260  C      or in terms of tension and strain Line 267  C      or in terms of tension and strain
267         ENDIF         ENDIF
268        ENDIF        ENDIF
269    
270    C-    Return to standard hfacZ (min-4) and mask vort3 accordingly:
271    c     CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid)
272    
273  C---- Zonal momentum equation starts here  C---- Zonal momentum equation starts here
274    
275  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 308  C-     No-slip BCs impose a drag at wall
308          ENDDO          ENDDO
309         ENDDO         ENDDO
310        ENDIF        ENDIF
311    
312  C-    No-slip BCs impose a drag at bottom  C-    No-slip BCs impose a drag at bottom
313        IF (momViscosity.AND.bottomDragTerms) THEN        IF (momViscosity.AND.bottomDragTerms) THEN
314         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 319  C-    No-slip BCs impose a drag at botto
319         ENDDO         ENDDO
320        ENDIF        ENDIF
321    
 C--   Forcing term (moved to timestep.F)  
 c     IF (momForcing)  
 c    &  CALL EXTERNAL_FORCING_U(  
 c    I     iMin,iMax,jMin,jMax,bi,bj,k,  
 c    I     myCurrentTime,myThid)  
   
322  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
323  c     IF (usingSphericalPolarMTerms) THEN  c     IF (usingSphericalPolarMTerms) THEN
324  C      o Spherical polar grid metric terms  C      o Spherical polar grid metric terms
# Line 325  c       ENDDO Line 330  c       ENDDO
330  c      ENDDO  c      ENDDO
331  c     ENDIF  c     ENDIF
332    
   
333  C---- Meridional momentum equation starts here  C---- Meridional momentum equation starts here
334    
335  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 378  C-    No-slip BCs impose a drag at botto
378         ENDDO         ENDDO
379        ENDIF        ENDIF
380    
 C--   Forcing term (moved to timestep.F)  
 c     IF (momForcing)  
 c    & CALL EXTERNAL_FORCING_V(  
 c    I     iMin,iMax,jMin,jMax,bi,bj,k,  
 c    I     myCurrentTime,myThid)  
   
381  C--   Metric terms for curvilinear grid systems  C--   Metric terms for curvilinear grid systems
382  c     IF (usingSphericalPolarMTerms) THEN  c     IF (usingSphericalPolarMTerms) THEN
383  C      o Spherical polar grid metric terms  C      o Spherical polar grid metric terms
# Line 393  c     ENDIF Line 391  c     ENDIF
391    
392  C--   Horizontal Coriolis terms  C--   Horizontal Coriolis terms
393        IF (useCoriolis .AND. .NOT.useCDscheme) THEN        IF (useCoriolis .AND. .NOT.useCDscheme) THEN
394         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,
395       &                      uCf,vCf,myThid)       &                      uCf,vCf,myThid)
396         DO j=jMin,jMax         DO j=jMin,jMax
397          DO i=iMin,iMax          DO i=iMin,iMax
# Line 406  C--   Horizontal Coriolis terms Line 404  C--   Horizontal Coriolis terms
404        IF (momAdvection) THEN        IF (momAdvection) THEN
405  C--   Horizontal advection of relative vorticity  C--   Horizontal advection of relative vorticity
406  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)
407         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,
408         &                        uCf,myThid)
409  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)
410         DO j=jMin,jMax         DO j=jMin,jMax
411          DO i=iMin,iMax          DO i=iMin,iMax
# Line 414  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K Line 413  c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K
413          ENDDO          ENDDO
414         ENDDO         ENDDO
415  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)
416         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,
417         &                        vCf,myThid)
418  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)
419         DO j=jMin,jMax         DO j=jMin,jMax
420          DO i=iMin,iMax          DO i=iMin,iMax
# Line 422  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K Line 422  c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K
422          ENDDO          ENDDO
423         ENDDO         ENDDO
424    
425    #ifdef ALLOW_TIMEAVE
426           IF (taveFreq.GT.0.) THEN
427             CALL TIMEAVE_CUMUL_1K1T(uZetatave,vCf,deltaTClock,
428         &                           Nr, k, bi, bj, myThid)
429             CALL TIMEAVE_CUMUL_1K1T(vZetatave,uCf,deltaTClock,
430         &                           Nr, k, bi, bj, myThid)
431           ENDIF
432    #endif
433    
434  C--   Vertical shear terms (-w*du/dr & -w*dv/dr)  C--   Vertical shear terms (-w*du/dr & -w*dv/dr)
435         CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)         CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)
436         DO j=jMin,jMax         DO j=jMin,jMax
# Line 477  c      CALL WRITE_LOCAL_RL('W3','I10',1, Line 486  c      CALL WRITE_LOCAL_RL('W3','I10',1,
486         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)
487        ENDIF        ENDIF
488    
489    #endif /* DISABLE_MOM_VECINV */
490    
491        RETURN        RETURN
492        END        END

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22