/[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.71 by jmc, Sun Feb 9 18:46:46 2014 UTC revision 1.76 by jmc, Sat Jan 3 23:58:53 2015 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "MOM_VECINV_OPTIONS.h"  #include "MOM_VECINV_OPTIONS.h"
5    #ifdef ALLOW_AUTODIFF
6    # include "AUTODIFF_OPTIONS.h"
7    #endif
8  #ifdef ALLOW_MOM_COMMON  #ifdef ALLOW_MOM_COMMON
9  # include "MOM_COMMON_OPTIONS.h"  # include "MOM_COMMON_OPTIONS.h"
10  #endif  #endif
11    
12        SUBROUTINE MOM_VECINV(        SUBROUTINE MOM_VECINV(
13       I        bi,bj,k,iMin,iMax,jMin,jMax,       I        bi,bj,k,iMin,iMax,jMin,jMax,
14       I        KappaRU, KappaRV,       I        kappaRU, kappaRV,
15       I        fVerUkm, fVerVkm,       I        fVerUkm, fVerVkm,
16       O        fVerUkp, fVerVkp,       O        fVerUkp, fVerVkp,
17       O        guDiss, gvDiss,       O        guDiss, gvDiss,
# Line 69  C     myIter  :: current time-step numbe Line 72  C     myIter  :: current time-step numbe
72  C     myThid  :: my Thread Id number  C     myThid  :: my Thread Id number
73        INTEGER bi,bj,k        INTEGER bi,bj,k
74        INTEGER iMin,iMax,jMin,jMax        INTEGER iMin,iMax,jMin,jMax
75        _RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL kappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
76        _RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL kappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
77        _RL fVerUkm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fVerUkm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
78        _RL fVerVkm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fVerVkm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
79        _RL fVerUkp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fVerUkp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 88  C     == Functions == Line 91  C     == Functions ==
91        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
92    
93  C     == Local variables ==  C     == Local variables ==
94    C     strainBC :: same as strain but account for no-slip BC
95    C     vort3BC  :: same as vort3  but account for no-slip BC
96        _RL      vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
97        _RL      vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
98        _RL      uCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      uCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 103  C     == Local variables == Line 108  C     == Local variables ==
108        _RL zStar   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL zStar   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
109        _RL tension (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tension (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
110        _RL strain  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL strain  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
111          _RL strainBC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
112        _RL KE      (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL KE      (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
113        _RL omega3  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL omega3  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
114        _RL vort3   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vort3   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
115          _RL vort3BC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
116        _RL hDiv    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL hDiv    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
117        _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
118        _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 128  C     xxxFac :: On-off tracer parameters Line 135  C     xxxFac :: On-off tracer parameters
135        CHARACTER*(1) pf        CHARACTER*(1) pf
136  #endif  #endif
137    
138  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
139  C--   only the kDown part of fverU/V is set in this subroutine  C--   only the kDown part of fverU/V is set in this subroutine
140  C--   the kUp is still required  C--   the kUp is still required
141  C--   In the case of mom_fluxform Kup is set as well  C--   In the case of mom_fluxform Kup is set as well
# Line 200  c       viscAh_D(i,j) = 0. Line 207  c       viscAh_D(i,j) = 0.
207  c       viscA4_Z(i,j) = 0.  c       viscA4_Z(i,j) = 0.
208  c       viscA4_D(i,j) = 0.  c       viscA4_D(i,j) = 0.
209          strain(i,j)  = 0. _d 0          strain(i,j)  = 0. _d 0
210            strainBC(i,j)= 0. _d 0
211          tension(i,j) = 0. _d 0          tension(i,j) = 0. _d 0
212  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
213          hFacZ(i,j)   = 0. _d 0          hFacZ(i,j)   = 0. _d 0
214  #endif  #endif
215         ENDDO         ENDDO
# Line 222  C       vorticity at a no-slip boundary Line 230  C       vorticity at a no-slip boundary
230        ENDIF        ENDIF
231    
232        IF (     no_slip_bottom        IF (     no_slip_bottom
233       &    .OR. bottomDragQuadratic.NE.0.       &    .OR. selectBotDragQuadr.GE.0
234       &    .OR. bottomDragLinear.NE.0.) THEN       &    .OR. bottomDragLinear.NE.0.) THEN
235         bottomDragTerms=.TRUE.         bottomDragTerms=.TRUE.
236        ELSE        ELSE
# Line 248  c     CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFa Line 256  c     CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFa
256    
257        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
258    
259    C-    mask vort3 and account for no-slip / free-slip BC in vort3BC:
260          DO j=1-OLy,sNy+OLy
261           DO i=1-OLx,sNx+OLx
262             vort3BC(i,j) = vort3(i,j)
263             IF ( hFacZ(i,j).EQ.zeroRS ) THEN
264               vort3BC(i,j) = sideMaskFac*vort3BC(i,j)
265               vort3(i,j)   = 0.
266             ENDIF
267           ENDDO
268          ENDDO
269    
270        IF (momViscosity) THEN        IF (momViscosity) THEN
271  C--    For viscous term, compute horizontal divergence, tension & strain  C--    For viscous term, compute horizontal divergence, tension & strain
272  C      and mask relative vorticity (free-slip case):  C      and mask relative vorticity (free-slip case):
# Line 269  C      and mask relative vorticity (free Line 288  C      and mask relative vorticity (free
288         ENDIF         ENDIF
289  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
290    
 #ifdef ALLOW_AUTODIFF_TAMC  
 CADJ STORE vort3(:,:) =  
 CADJ &     comlev1_bibj_k, key = imomkey, byte = isbyte  
 #endif  
   
291         CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)         CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
292    
293         CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)         IF ( useVariableVisc .OR. useStrainTensionVisc ) THEN
294            CALL MOM_CALC_TENSION( bi,bj,k,uFld,vFld,tension,myThid )
295         CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)          CALL MOM_CALC_STRAIN( bi,bj,k,uFld,vFld,hFacZ,strain,myThid )
296    C-    mask strain and account for no-slip / free-slip BC in strainBC:
297  C-     account for no-slip / free-slip BC:          DO j=1-OLy,sNy+OLy
298         DO j=1-OLy,sNy+OLy           DO i=1-OLx,sNx+OLx
299          DO i=1-OLx,sNx+OLx             strainBC(i,j) = strain(i,j)
300            IF ( hFacZ(i,j).EQ.0. ) THEN             IF ( hFacZ(i,j).EQ.zeroRS ) THEN
301              vort3(i,j)  = sideMaskFac*vort3(i,j)               strainBC(i,j) = sideMaskFac*strainBC(i,j)
302              strain(i,j) = sideMaskFac*strain(i,j)               strain(i,j)   = 0.
303            ENDIF             ENDIF
304             ENDDO
305          ENDDO          ENDDO
306         ENDDO         ENDIF
307    
308  C--    Calculate Lateral Viscosities  C--    Calculate Lateral Viscosities
309         DO j=1-OLy,sNy+OLy         DO j=1-OLy,sNy+OLy
# Line 300  C--    Calculate Lateral Viscosities Line 315  C--    Calculate Lateral Viscosities
315          ENDDO          ENDDO
316         ENDDO         ENDDO
317         IF ( useVariableVisc ) THEN         IF ( useVariableVisc ) THEN
318    C-     uses vort3BC & strainBC which account for no-slip / free-slip BC
319           CALL MOM_CALC_VISC( bi, bj, k,           CALL MOM_CALC_VISC( bi, bj, k,
320       O            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,       O            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,
321       I            hDiv, vort3, tension, strain, KE, hfacZ,       I            hDiv, vort3BC, tension, strainBC, KE, hfacZ,
322       I            myThid )       I            myThid )
323         ENDIF         ENDIF
324    
# Line 310  C      Calculate del^2 u and del^2 v for Line 326  C      Calculate del^2 u and del^2 v for
326         IF (useBiharmonicVisc) THEN         IF (useBiharmonicVisc) THEN
327           CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ,           CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ,
328       O                      del2u,del2v,       O                      del2u,del2v,
329       &                      myThid)       I                      myThid)
330           CALL MOM_CALC_HDIV(bi,bj,k,2,del2u,del2v,dStar,myThid)           CALL MOM_CALC_HDIV(bi,bj,k,2,del2u,del2v,dStar,myThid)
331           CALL MOM_CALC_RELVORT3(bi,bj,k,           CALL MOM_CALC_RELVORT3(bi,bj,k,
332       &                          del2u,del2v,hFacZ,zStar,myThid)       &                          del2u,del2v,hFacZ,zStar,myThid)
          IF ( writeDiag ) THEN  
            CALL WRITE_LOCAL_RL( 'del2u', 'I10', 1, del2u,  
      &                           bi,bj,k, myIter, myThid )  
            CALL WRITE_LOCAL_RL( 'del2v', 'I10', 1, del2v,  
      &                           bi,bj,k, myIter, myThid )  
            CALL WRITE_LOCAL_RL( 'dStar', 'I10', 1, dStar,  
      &                           bi,bj,k, myIter, myThid )  
            CALL WRITE_LOCAL_RL( 'zStar', 'I10', 1, zStar,  
      &                           bi,bj,k, myIter, myThid )  
          ENDIF  
333         ENDIF         ENDIF
334    
 C-    Strain diagnostics:  
        IF ( writeDiag ) THEN  
         IF (snapshot_mdsio) THEN  
           CALL WRITE_LOCAL_RL('Ds','I10',1,strain,bi,bj,k,myIter,myThid)  
         ENDIF  
 #ifdef ALLOW_MNC  
         IF (useMNC .AND. snapshot_mnc) THEN  
           CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Ds',strain,  
      &          offsets, myThid)  
         ENDIF  
 #endif /*  ALLOW_MNC  */  
        ENDIF  
 #ifdef ALLOW_DIAGNOSTICS  
        IF ( useDiagnostics ) THEN  
         CALL DIAGNOSTICS_FILL(strain, 'Strain  ',k,1,2,bi,bj,myThid)  
        ENDIF  
 #endif /* ALLOW_DIAGNOSTICS */  
   
335  C---   Calculate dissipation terms for U and V equations  C---   Calculate dissipation terms for U and V equations
336    
337  C      in terms of tension and strain  C-     in terms of tension and strain
338         IF (useStrainTensionVisc) THEN         IF (useStrainTensionVisc) THEN
339  C        mask strain as if free-slip since side-drag is computed separately  C      use masked strain as if free-slip since side-drag is computed separately
          DO j=1-OLy,sNy+OLy  
           DO i=1-OLx,sNx+OLx  
             IF ( hFacZ(i,j).EQ.0. ) strain(i,j) = 0. _d 0  
           ENDDO  
          ENDDO  
340           CALL MOM_HDISSIP( bi, bj, k,           CALL MOM_HDISSIP( bi, bj, k,
341       I            hDiv, vort3, tension, strain, KE, hFacZ,       I            tension, strain, hFacZ,
342       I            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,       I            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,
343       I            useHarmonicVisc, useBiharmonicVisc, useVariableVisc,       I            useHarmonicVisc, useBiharmonicVisc, useVariableVisc,
344       O            guDiss, gvDiss,       O            guDiss, gvDiss,
345       I            myThid )       I            myThid )
346         ELSE         ELSE
347  C      in terms of vorticity and divergence  C-     in terms of vorticity and divergence
348           CALL MOM_VI_HDISSIP( bi, bj, k,           CALL MOM_VI_HDISSIP( bi, bj, k,
349       I            hDiv, vort3, tension, strain, KE, hFacZ,dStar,zStar,       I            hDiv, vort3, dStar, zStar, hFacZ,
350       I            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,       I            viscAh_Z, viscAh_D, viscA4_Z, viscA4_D,
351       I            useHarmonicVisc, useBiharmonicVisc, useVariableVisc,       I            useHarmonicVisc, useBiharmonicVisc, useVariableVisc,
352       O            guDiss, gvDiss,       O            guDiss, gvDiss,
353       &            myThid )       I            myThid )
354         ENDIF         ENDIF
355    
356  C---  Other dissipation terms in Zonal momentum equation  C---  Other dissipation terms in Zonal momentum equation
# Line 375  C---  Other dissipation terms in Zonal m Line 358  C---  Other dissipation terms in Zonal m
358  C--   Vertical flux (fVer is at upper face of "u" cell)  C--   Vertical flux (fVer is at upper face of "u" cell)
359  C     Eddy component of vertical flux (interior component only) -> vrF  C     Eddy component of vertical flux (interior component only) -> vrF
360        IF ( .NOT.implicitViscosity ) THEN        IF ( .NOT.implicitViscosity ) THEN
361         CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,KappaRU,vrF,myThid)         CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,kappaRU,vrF,myThid)
362  C     Combine fluxes  C     Combine fluxes
363         DO j=jMin,jMax         DO j=jMin,jMax
364          DO i=iMin,iMax          DO i=iMin,iMax
# Line 411  C-     No-slip BCs impose a drag at wall Line 394  C-     No-slip BCs impose a drag at wall
394    
395  C-    No-slip BCs impose a drag at bottom  C-    No-slip BCs impose a drag at bottom
396        IF ( bottomDragTerms ) THEN        IF ( bottomDragTerms ) THEN
397         CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)         CALL MOM_U_BOTTOMDRAG( bi, bj, k,
398         I            uFld, vFld, KE, kappaRU,
399         O            vF,
400         I            myThid )
401         DO j=jMin,jMax         DO j=jMin,jMax
402          DO i=iMin,iMax          DO i=iMin,iMax
403           guDiss(i,j) = guDiss(i,j)+vF(i,j)           guDiss(i,j) = guDiss(i,j)+vF(i,j)
# Line 419  C-    No-slip BCs impose a drag at botto Line 405  C-    No-slip BCs impose a drag at botto
405         ENDDO         ENDDO
406        ENDIF        ENDIF
407  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
408        IF ( useShelfIce.AND.bottomDragTerms ) THEN        IF ( useShelfIce ) THEN
409         CALL SHELFICE_U_DRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)         CALL SHELFICE_U_DRAG( bi, bj, k,
410         I            uFld, vFld, KE, kappaRU,
411         O            vF,
412         I            myThid )
413         DO j=jMin,jMax         DO j=jMin,jMax
414          DO i=iMin,iMax          DO i=iMin,iMax
415           guDiss(i,j) = guDiss(i,j) + vF(i,j)           guDiss(i,j) = guDiss(i,j) + vF(i,j)
# Line 434  C---  Other dissipation terms in Meridio Line 423  C---  Other dissipation terms in Meridio
423  C--   Vertical flux (fVer is at upper face of "v" cell)  C--   Vertical flux (fVer is at upper face of "v" cell)
424  C     Eddy component of vertical flux (interior component only) -> vrF  C     Eddy component of vertical flux (interior component only) -> vrF
425        IF ( .NOT.implicitViscosity ) THEN        IF ( .NOT.implicitViscosity ) THEN
426         CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,KappaRV,vrF,myThid)         CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,kappaRV,vrF,myThid)
427  C     Combine fluxes -> fVerV  C     Combine fluxes -> fVerV
428         DO j=jMin,jMax         DO j=jMin,jMax
429          DO i=iMin,iMax          DO i=iMin,iMax
# Line 470  C-     No-slip BCs impose a drag at wall Line 459  C-     No-slip BCs impose a drag at wall
459    
460  C-    No-slip BCs impose a drag at bottom  C-    No-slip BCs impose a drag at bottom
461        IF ( bottomDragTerms ) THEN        IF ( bottomDragTerms ) THEN
462         CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid)         CALL MOM_V_BOTTOMDRAG( bi, bj, k,
463         I            uFld, vFld, KE, kappaRV,
464         O            vF,
465         I            myThid )
466         DO j=jMin,jMax         DO j=jMin,jMax
467          DO i=iMin,iMax          DO i=iMin,iMax
468           gvDiss(i,j) = gvDiss(i,j)+vF(i,j)           gvDiss(i,j) = gvDiss(i,j)+vF(i,j)
# Line 478  C-    No-slip BCs impose a drag at botto Line 470  C-    No-slip BCs impose a drag at botto
470         ENDDO         ENDDO
471        ENDIF        ENDIF
472  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
473        IF  (useShelfIce.AND.bottomDragTerms ) THEN        IF ( useShelfIce ) THEN
474           CALL SHELFICE_V_DRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid)         CALL SHELFICE_V_DRAG( bi, bj, k,
475           DO j=jMin,jMax       I            uFld, vFld, KE, kappaRV,
476            DO i=iMin,iMax       O            vF,
477             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)       I            myThid )
478            ENDDO         DO j=jMin,jMax
479           ENDDO          DO i=iMin,iMax
480          ENDIF           gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
481            ENDDO
482           ENDDO
483          ENDIF
484  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
485    
486  C--   if (momViscosity) end of block.  C--   if (momViscosity) end of block.
# Line 494  C--   if (momViscosity) end of block. Line 489  C--   if (momViscosity) end of block.
489  C-    Return to standard hfacZ (min-4) and mask vort3 accordingly:  C-    Return to standard hfacZ (min-4) and mask vort3 accordingly:
490  c     CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid)  c     CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid)
491    
 C-    Vorticity diagnostics:  
       IF ( writeDiag ) THEN  
         IF (snapshot_mdsio) THEN  
           CALL WRITE_LOCAL_RL('Z3','I10',1,vort3, bi,bj,k,myIter,myThid)  
         ENDIF  
 #ifdef ALLOW_MNC  
         IF (useMNC .AND. snapshot_mnc) THEN  
           CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Z3',vort3,  
      &          offsets, myThid)  
         ENDIF  
 #endif /*  ALLOW_MNC  */  
       ENDIF  
 #ifdef ALLOW_DIAGNOSTICS  
       IF ( useDiagnostics ) THEN  
         CALL DIAGNOSTICS_FILL(vort3,  'momVort3',k,1,2,bi,bj,myThid)  
       ENDIF  
 #endif /* ALLOW_DIAGNOSTICS */  
   
492  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
493    
494  C---  Prepare for Advection & Coriolis terms:  C---  Prepare for Advection & Coriolis terms:
495  C-    Mask relative vorticity and calculate absolute vorticity  C-    calculate absolute vorticity
       DO j=1-OLy,sNy+OLy  
        DO i=1-OLx,sNx+OLx  
          IF ( hFacZ(i,j).EQ.0. ) vort3(i,j) = 0.  
        ENDDO  
       ENDDO  
496        IF (useAbsVorticity)        IF (useAbsVorticity)
497       &  CALL MOM_CALC_ABSVORT3(bi,bj,k,vort3,omega3,myThid)       &  CALL MOM_CALC_ABSVORT3(bi,bj,k,vort3,omega3,myThid)
498    
# Line 753  C--   Set du/dt & dv/dt on boundaries to Line 725  C--   Set du/dt & dv/dt on boundaries to
725  #endif /* ALLOW_DEBUG */  #endif /* ALLOW_DEBUG */
726    
727        IF ( writeDiag ) THEN        IF ( writeDiag ) THEN
728            IF (useBiharmonicVisc) THEN
729             CALL WRITE_LOCAL_RL( 'del2u', 'I10', 1, del2u,
730         &                        bi,bj,k, myIter, myThid )
731             CALL WRITE_LOCAL_RL( 'del2v', 'I10', 1, del2v,
732         &                        bi,bj,k, myIter, myThid )
733             CALL WRITE_LOCAL_RL( 'dStar', 'I10', 1, dStar,
734         &                        bi,bj,k, myIter, myThid )
735             CALL WRITE_LOCAL_RL( 'zStar', 'I10', 1, zStar,
736         &                        bi,bj,k, myIter, myThid )
737            ENDIF
738          IF (snapshot_mdsio) THEN          IF (snapshot_mdsio) THEN
739           CALL WRITE_LOCAL_RL('W3','I10',1,omega3, bi,bj,k,myIter,myThid)           CALL WRITE_LOCAL_RL('W3','I10',1,omega3, bi,bj,k,myIter,myThid)
740             CALL WRITE_LOCAL_RL('Z3','I10',1,vort3BC,bi,bj,k,myIter,myThid)
741           CALL WRITE_LOCAL_RL('KE','I10',1,KE,     bi,bj,k,myIter,myThid)           CALL WRITE_LOCAL_RL('KE','I10',1,KE,     bi,bj,k,myIter,myThid)
742           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)
743           CALL WRITE_LOCAL_RL('Dt','I10',1,tension,bi,bj,k,myIter,myThid)           CALL WRITE_LOCAL_RL('Dt','I10',1,tension,bi,bj,k,myIter,myThid)
744             CALL WRITE_LOCAL_RL( 'Ds', 'I10', 1, strainBC,
745         &                        bi,bj,k, myIter, myThid )
746           CALL WRITE_LOCAL_RL('Du','I10',1,guDiss, bi,bj,k,myIter,myThid)           CALL WRITE_LOCAL_RL('Du','I10',1,guDiss, bi,bj,k,myIter,myThid)
747           CALL WRITE_LOCAL_RL('Dv','I10',1,gvDiss, bi,bj,k,myIter,myThid)           CALL WRITE_LOCAL_RL('Dv','I10',1,gvDiss, bi,bj,k,myIter,myThid)
748          ENDIF          ENDIF
# Line 765  C--   Set du/dt & dv/dt on boundaries to Line 750  C--   Set du/dt & dv/dt on boundaries to
750          IF (useMNC .AND. snapshot_mnc) THEN          IF (useMNC .AND. snapshot_mnc) THEN
751            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'W3',omega3,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'W3',omega3,
752       &          offsets, myThid)       &          offsets, myThid)
753              CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Z3',vort3BC,
754         &          offsets, myThid)
755            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'KE',KE,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'KE',KE,
756       &          offsets, myThid)       &          offsets, myThid)
757            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'D', hDiv,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'D', hDiv,
758       &          offsets, myThid)       &          offsets, myThid)
759            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Dt',tension,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Dt',tension,
760       &          offsets, myThid)       &          offsets, myThid)
761              CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Ds',strainBC,
762         &          offsets, myThid)
763            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Du',guDiss,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Du',guDiss,
764       &          offsets, myThid)       &          offsets, myThid)
765            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Dv',gvDiss,            CALL MNC_CW_RL_W_OFFSET(pf,'mom_vi',bi,bj,'Dv',gvDiss,
# Line 781  C--   Set du/dt & dv/dt on boundaries to Line 770  C--   Set du/dt & dv/dt on boundaries to
770    
771  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
772        IF ( useDiagnostics ) THEN        IF ( useDiagnostics ) THEN
773            CALL DIAGNOSTICS_FILL(vort3BC,'momVort3',k,1,2,bi,bj,myThid)
774          CALL DIAGNOSTICS_FILL(KE,     'momKE   ',k,1,2,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(KE,     'momKE   ',k,1,2,bi,bj,myThid)
775         IF (momViscosity) THEN         IF (momViscosity) THEN
776          CALL DIAGNOSTICS_FILL(hDiv,   'momHDiv ',k,1,2,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(hDiv,   'momHDiv ',k,1,2,bi,bj,myThid)
777          CALL DIAGNOSTICS_FILL(tension,'Tension ',k,1,2,bi,bj,myThid)         ENDIF
778          CALL DIAGNOSTICS_FILL(guDiss, 'Um_Diss ',k,1,2,bi,bj,myThid)         IF ( useVariableVisc .OR. useStrainTensionVisc ) THEN
779          CALL DIAGNOSTICS_FILL(gvDiss, 'Vm_Diss ',k,1,2,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(tension, 'Tension ',k,1,2,bi,bj,myThid)
780            CALL DIAGNOSTICS_FILL(strainBC,'Strain  ',k,1,2,bi,bj,myThid)
781         ENDIF         ENDIF
782          CALL DIAGNOSTICS_FILL(gU(1-OLx,1-OLy,k,bi,bj),          CALL DIAGNOSTICS_FILL(gU(1-OLx,1-OLy,k,bi,bj),
783       &                                'Um_Advec',k,1,2,bi,bj,myThid)       &                                'Um_Advec',k,1,2,bi,bj,myThid)

Legend:
Removed from v.1.71  
changed lines
  Added in v.1.76

  ViewVC Help
Powered by ViewVC 1.1.22