/[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.26 by jmc, Fri Sep 23 15:19:38 2005 UTC revision 1.30 by heimbach, Thu Nov 24 00:06:38 2005 UTC
# Line 145  C     uDudxFac, AhDudxFac, etc ... indiv Line 145  C     uDudxFac, AhDudxFac, etc ... indiv
145        _RL  ArDvdrFac        _RL  ArDvdrFac
146        _RL  fvFac        _RL  fvFac
147        _RL  mtFacV        _RL  mtFacV
148          _RL  sideMaskFac
149        LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity        LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity
150  CEOP  CEOP
151    
# Line 165  C     Initialise intermediate terms Line 166  C     Initialise intermediate terms
166          tension(i,j)= 0.          tension(i,j)= 0.
167          guDiss(i,j) = 0.          guDiss(i,j) = 0.
168          gvDiss(i,j) = 0.          gvDiss(i,j) = 0.
169    #ifdef ALLOW_AUTODIFF_TAMC
170            vort3(i,j)   = 0. _d 0
171            strain(i,j)  = 0. _d 0
172            tension(i,j) = 0. _d 0
173    #endif
174         ENDDO         ENDDO
175        ENDDO        ENDDO
176    
# Line 193  C     o V momentum equation Line 199  C     o V momentum equation
199          ArDvdrFac  = 0.          ArDvdrFac  = 0.
200        ENDIF        ENDIF
201    
202    C note: using standard stencil (no mask) results in under-estimating
203    C       vorticity at a no-slip boundary by a factor of 2 = sideDragFactor
204          IF ( no_slip_sides ) THEN
205            sideMaskFac = sideDragFactor
206          ELSE
207            sideMaskFac = 0. _d 0
208          ENDIF
209    
210        IF (     no_slip_bottom        IF (     no_slip_bottom
211       &    .OR. bottomDragQuadratic.NE.0.       &    .OR. bottomDragQuadratic.NE.0.
212       &    .OR. bottomDragLinear.NE.0.) THEN       &    .OR. bottomDragLinear.NE.0.) THEN
# Line 232  C     Calculate velocity field "volume t Line 246  C     Calculate velocity field "volume t
246        ENDDO        ENDDO
247    
248        CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)        CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)
249        CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)        IF ( momViscosity) THEN
250        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)          CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
251        CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)          CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
252        CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)          CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
253            CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
254            DO j=1-Oly,sNy+Oly
255             DO i=1-Olx,sNx+Olx
256               IF ( hFacZ(i,j).EQ.0. ) THEN
257                 vort3(i,j)  = sideMaskFac*vort3(i,j)
258                 strain(i,j) = sideMaskFac*strain(i,j)
259               ENDIF
260             ENDDO
261            ENDDO
262    #ifdef ALLOW_DIAGNOSTICS
263            IF ( useDiagnostics ) THEN
264              CALL DIAGNOSTICS_FILL(hDiv,   'momHDiv ',k,1,2,bi,bj,myThid)
265              CALL DIAGNOSTICS_FILL(vort3,  'momVort3',k,1,2,bi,bj,myThid)
266              CALL DIAGNOSTICS_FILL(tension,'Tension ',k,1,2,bi,bj,myThid)
267              CALL DIAGNOSTICS_FILL(strain, 'Strain  ',k,1,2,bi,bj,myThid)
268            ENDIF
269    #endif
270          ENDIF
271    
272  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)
273        IF (momAdvection.AND.k.EQ.1) THEN        IF (momAdvection.AND.k.EQ.1) THEN
# Line 361  C     Bi-harmonic term del^2 U -> v4F Line 393  C     Bi-harmonic term del^2 U -> v4F
393    
394  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
395          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,
396       I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)       I    viscAh_D,viscA4_D,myThid)
397    
398  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
399          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,
400       I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)       I    viscAh_Z,viscA4_Z,myThid)
401    
402  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
403         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 403  C--   Tendency is minus divergence of th Line 435  C--   Tendency is minus divergence of th
435  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
436          IF (no_slip_sides) THEN          IF (no_slip_sides) THEN
437  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
438           CALL MOM_U_SIDEDRAG(bi,bj,k,uFld,v4F,hFacZ,vF,myThid)           CALL MOM_U_SIDEDRAG(
439         I        bi,bj,k,
440         I        uFld, v4f, hFacZ,
441         I        viscAh_Z,viscA4_Z,
442         I        harmonic,biharmonic,useVariableViscosity,
443         O        vF,
444         I        myThid)
445           DO j=jMin,jMax           DO j=jMin,jMax
446            DO i=iMin,iMax            DO i=iMin,iMax
447             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
# Line 542  C     Bi-harmonic term del^2 V -> v4F Line 580  C     Bi-harmonic term del^2 V -> v4F
580    
581  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
582          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,
583       I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)       I    viscAh_Z,viscA4_Z,myThid)
584    
585  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
586          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,
587       I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)       I    viscAh_D,viscA4_D,myThid)
588    
589  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
590         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 584  C--   Tendency is minus divergence of th Line 622  C--   Tendency is minus divergence of th
622  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
623        IF (no_slip_sides) THEN        IF (no_slip_sides) THEN
624  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
625           CALL MOM_V_SIDEDRAG(bi,bj,k,vFld,v4F,hFacZ,vF,myThid)           CALL MOM_V_SIDEDRAG(
626         I        bi,bj,k,
627         I        vFld, v4f, hFacZ,
628         I        viscAh_Z,viscA4_Z,
629         I        harmonic,biharmonic,useVariableViscosity,
630         O        vF,
631         I        myThid)
632           DO j=jMin,jMax           DO j=jMin,jMax
633            DO i=iMin,iMax            DO i=iMin,iMax
634             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
# Line 688  C--   Set du/dt & dv/dt on boundaries to Line 732  C--   Set du/dt & dv/dt on boundaries to
732    
733  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
734        IF ( useDiagnostics ) THEN        IF ( useDiagnostics ) THEN
735         IF (bottomDragTerms)          CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)
      &  CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)  
736          CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),          CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),
737       &                               'Um_Advec',k,1,2,bi,bj,myThid)       &                               'Um_Advec',k,1,2,bi,bj,myThid)
738          CALL DIAGNOSTICS_FILL(gV(1-Olx,1-Oly,k,bi,bj),          CALL DIAGNOSTICS_FILL(gV(1-Olx,1-Oly,k,bi,bj),

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.22