/[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.24 by jmc, Sun Sep 4 19:29:03 2005 UTC revision 1.29 by jmc, Wed Oct 12 01:10:10 2005 UTC
# Line 121  C     uDudxFac, AhDudxFac, etc ... indiv Line 121  C     uDudxFac, AhDudxFac, etc ... indiv
121        _RL  rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
122        _RL  rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
123        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
124  c     _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
125  c     _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
126  c     _RL viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
127  c     _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
128  c     _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
129  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
130        _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
131        _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
132        _RL  uDudxFac        _RL  uDudxFac
# Line 145  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O Line 145  c     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+O
145        _RL  ArDvdrFac        _RL  ArDvdrFac
146        _RL  fvFac        _RL  fvFac
147        _RL  mtFacV        _RL  mtFacV
148        LOGICAL bottomDragTerms        _RL  sideMaskFac
149          LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity
150  CEOP  CEOP
151    
152  C     Initialise intermediate terms  C     Initialise intermediate terms
# Line 193  C     o V momentum equation Line 194  C     o V momentum equation
194          ArDvdrFac  = 0.          ArDvdrFac  = 0.
195        ENDIF        ENDIF
196    
197    C note: using standard stencil (no mask) results in under-estimating
198    C       vorticity at a no-slip boundary by a factor of 2 = sideDragFactor
199          IF ( no_slip_sides ) THEN
200            sideMaskFac = sideDragFactor
201          ELSE
202            sideMaskFac = 0. _d 0
203          ENDIF
204    
205        IF (     no_slip_bottom        IF (     no_slip_bottom
206       &    .OR. bottomDragQuadratic.NE.0.       &    .OR. bottomDragQuadratic.NE.0.
207       &    .OR. bottomDragLinear.NE.0.) THEN       &    .OR. bottomDragLinear.NE.0.) THEN
# Line 231  C     Calculate velocity field "volume t Line 240  C     Calculate velocity field "volume t
240         ENDDO         ENDDO
241        ENDDO        ENDDO
242    
243        IF (bottomDragTerms) THEN        CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)
244          CALL MOM_CALC_KE(bi,bj,k,3,uFld,vFld,KE,myThid)        IF ( momViscosity) THEN
245        ENDIF          CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
246            CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
247        IF (viscAstrain.NE.0. .OR. viscAtension.NE.0.) THEN          CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
248           CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,          CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
249       O                         tension,          DO j=1-Oly,sNy+Oly
250       I                         myThid)           DO i=1-Olx,sNx+Olx
251           CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,             IF ( hFacZ(i,j).EQ.0. ) THEN
252       O                        strain,               vort3(i,j)  = sideMaskFac*vort3(i,j)
253       I                        myThid)               strain(i,j) = sideMaskFac*strain(i,j)
254               ENDIF
255             ENDDO
256            ENDDO
257    #ifdef ALLOW_DIAGNOSTICS
258            IF ( useDiagnostics ) THEN
259              CALL DIAGNOSTICS_FILL(hDiv,   'momHDiv ',k,1,2,bi,bj,myThid)
260              CALL DIAGNOSTICS_FILL(vort3,  'momVort3',k,1,2,bi,bj,myThid)
261              CALL DIAGNOSTICS_FILL(tension,'Tension ',k,1,2,bi,bj,myThid)
262              CALL DIAGNOSTICS_FILL(strain, 'Strain  ',k,1,2,bi,bj,myThid)
263            ENDIF
264    #endif
265        ENDIF        ENDIF
266    
267  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)
# Line 270  C---  Calculate vertical transports (at Line 290  C---  Calculate vertical transports (at
290       I                        myTime, myIter, myThid)       I                        myTime, myIter, myThid)
291        ENDIF        ENDIF
292    
293  c     IF (momViscosity) THEN        IF (momViscosity) THEN
294  c    &  CALL MOM_CALC_VISCOSITY(bi,bj,k,         CALL MOM_CALC_VISC(
295  c    I                         uFld,vFld,       I        bi,bj,k,
296  c    O                         viscAh_D,viscAh_Z,myThid)       O        viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
297         O        harmonic,biharmonic,useVariableViscosity,
298         I        hDiv,vort3,tension,strain,KE,hFacZ,
299         I        myThid)
300          ENDIF
301    
302  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
303    
# Line 359  C-    endif momAdvection. Line 383  C-    endif momAdvection.
383  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.
384    
385  C     Bi-harmonic term del^2 U -> v4F  C     Bi-harmonic term del^2 U -> v4F
386          IF ( viscA4.NE.0. )          IF (biharmonic)
387       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)
388    
389  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
390          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,myThid)          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,
391         I    viscAh_D,viscA4_D,myThid)
392    
393  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
394          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,myThid)          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,
395         I    viscAh_Z,viscA4_Z,myThid)
396    
397  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
398         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 404  C--   Tendency is minus divergence of th Line 430  C--   Tendency is minus divergence of th
430  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
431          IF (no_slip_sides) THEN          IF (no_slip_sides) THEN
432  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
433           CALL MOM_U_SIDEDRAG(bi,bj,k,uFld,v4F,hFacZ,vF,myThid)           CALL MOM_U_SIDEDRAG(
434         I        bi,bj,k,
435         I        uFld, v4f, hFacZ,
436         I        viscAh_Z,viscA4_Z,
437         I        harmonic,biharmonic,useVariableViscosity,
438         O        vF,
439         I        myThid)
440           DO j=jMin,jMax           DO j=jMin,jMax
441            DO i=iMin,iMax            DO i=iMin,iMax
442             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)             gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
# Line 538  C-    endif momAdvection. Line 570  C-    endif momAdvection.
570        IF (momViscosity) THEN        IF (momViscosity) THEN
571  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.
572  C     Bi-harmonic term del^2 V -> v4F  C     Bi-harmonic term del^2 V -> v4F
573          IF ( viscA4.NE.0. )          IF (biharmonic)
574       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)
575    
576  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
577          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,myThid)          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,
578         I    viscAh_Z,viscA4_Z,myThid)
579    
580  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
581          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,myThid)          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,
582         I    viscAh_D,viscA4_D,myThid)
583    
584  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
585         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 583  C--   Tendency is minus divergence of th Line 617  C--   Tendency is minus divergence of th
617  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
618        IF (no_slip_sides) THEN        IF (no_slip_sides) THEN
619  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
620           CALL MOM_V_SIDEDRAG(bi,bj,k,vFld,v4F,hFacZ,vF,myThid)           CALL MOM_V_SIDEDRAG(
621         I        bi,bj,k,
622         I        vFld, v4f, hFacZ,
623         I        viscAh_Z,viscA4_Z,
624         I        harmonic,biharmonic,useVariableViscosity,
625         O        vF,
626         I        myThid)
627           DO j=jMin,jMax           DO j=jMin,jMax
628            DO i=iMin,iMax            DO i=iMin,iMax
629             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)             gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
# Line 687  C--   Set du/dt & dv/dt on boundaries to Line 727  C--   Set du/dt & dv/dt on boundaries to
727    
728  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
729        IF ( useDiagnostics ) THEN        IF ( useDiagnostics ) THEN
730         IF (bottomDragTerms)          CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)
      &  CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)  
731          CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),          CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),
732       &                               'Um_Advec',k,1,2,bi,bj,myThid)       &                               'Um_Advec',k,1,2,bi,bj,myThid)
733          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.24  
changed lines
  Added in v.1.29

  ViewVC Help
Powered by ViewVC 1.1.22