/[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.23 by jmc, Sat Jul 30 22:07:00 2005 UTC revision 1.26 by jmc, Fri Sep 23 15:19:38 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        LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity
149  CEOP  CEOP
150    
151  C     Initialise intermediate terms  C     Initialise intermediate terms
# Line 231  C     Calculate velocity field "volume t Line 231  C     Calculate velocity field "volume t
231         ENDDO         ENDDO
232        ENDDO        ENDDO
233    
234        IF (bottomDragTerms) THEN        CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)
235          CALL MOM_CALC_KE(bi,bj,k,3,uFld,vFld,KE,myThid)        CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
236        ENDIF        CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
237          CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
238        IF (viscAstrain.NE.0. .OR. viscAtension.NE.0.) THEN        CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
          CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,  
      O                         tension,  
      I                         myThid)  
          CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,  
      O                        strain,  
      I                        myThid)  
       ENDIF  
239    
240  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)
241        IF (momAdvection.AND.k.EQ.1) THEN        IF (momAdvection.AND.k.EQ.1) THEN
# Line 270  C---  Calculate vertical transports (at Line 263  C---  Calculate vertical transports (at
263       I                        myTime, myIter, myThid)       I                        myTime, myIter, myThid)
264        ENDIF        ENDIF
265    
266  c     IF (momViscosity) THEN        IF (momViscosity) THEN
267  c    &  CALL MOM_CALC_VISCOSITY(bi,bj,k,         CALL MOM_CALC_VISC(
268  c    I                         uFld,vFld,       I        bi,bj,k,
269  c    O                         viscAh_D,viscAh_Z,myThid)       O        viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
270         O        harmonic,biharmonic,useVariableViscosity,
271         I        hDiv,vort3,tension,strain,KE,hFacZ,
272         I        myThid)
273          ENDIF
274    
275  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
276    
# Line 314  C--   Tendency is minus divergence of th Line 311  C--   Tendency is minus divergence of th
311           ENDDO           ENDDO
312          ENDDO          ENDDO
313    
314    #ifdef ALLOW_DIAGNOSTICS
315            IF ( useDiagnostics ) THEN
316              CALL DIAGNOSTICS_FILL(fZon,'ADVx_Um ',k,1,2,bi,bj,myThid)
317              CALL DIAGNOSTICS_FILL(fMer,'ADVy_Um ',k,1,2,bi,bj,myThid)
318              CALL DIAGNOSTICS_FILL(fVerU(1-Olx,1-Oly,kUp),
319         &                               'ADVrE_Um',k,1,2,bi,bj,myThid)
320            ENDIF
321    #endif
322    
323  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
324  C-- account for 3.D divergence of the flow in rStar coordinate:  C-- account for 3.D divergence of the flow in rStar coordinate:
325          IF ( select_rStar.GT.0 ) THEN          IF ( select_rStar.GT.0 ) THEN
# Line 350  C-    endif momAdvection. Line 356  C-    endif momAdvection.
356  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.  C---  Calculate eddy fluxes (dissipation) between cells for zonal flow.
357    
358  C     Bi-harmonic term del^2 U -> v4F  C     Bi-harmonic term del^2 U -> v4F
359          IF ( viscA4.NE.0. )          IF (biharmonic)
360       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)       &  CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)
361    
362  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
363          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,myThid)          CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,
364         I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)
365    
366  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
367          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,myThid)          CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,
368         I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)
369    
370  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
371         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 383  C--   Tendency is minus divergence of th Line 391  C--   Tendency is minus divergence of th
391           ENDDO           ENDDO
392          ENDDO          ENDDO
393    
394    #ifdef ALLOW_DIAGNOSTICS
395            IF ( useDiagnostics ) THEN
396              CALL DIAGNOSTICS_FILL(fZon, 'VISCx_Um',k,1,2,bi,bj,myThid)
397              CALL DIAGNOSTICS_FILL(fMer, 'VISCy_Um',k,1,2,bi,bj,myThid)
398              IF (.NOT.implicitViscosity)
399         &    CALL DIAGNOSTICS_FILL(fVrUp,'VISrE_Um',k,1,2,bi,bj,myThid)
400            ENDIF
401    #endif
402    
403  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
404          IF (no_slip_sides) THEN          IF (no_slip_sides) THEN
405  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
# Line 473  C--   Tendency is minus divergence of th Line 490  C--   Tendency is minus divergence of th
490       &      +( fMer(i,  j)     - fMer(i,j-1) )*vDvdyFac       &      +( fMer(i,  j)     - fMer(i,j-1) )*vDvdyFac
491       &      +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac       &      +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac
492       &     )       &     )
493         ENDDO           ENDDO
494        ENDDO          ENDDO
495    
496    #ifdef ALLOW_DIAGNOSTICS
497            IF ( useDiagnostics ) THEN
498              CALL DIAGNOSTICS_FILL(fZon,'ADVx_Vm ',k,1,2,bi,bj,myThid)
499              CALL DIAGNOSTICS_FILL(fMer,'ADVy_Vm ',k,1,2,bi,bj,myThid)
500              CALL DIAGNOSTICS_FILL(fVerV(1-Olx,1-Oly,kUp),
501         &                               'ADVrE_Vm',k,1,2,bi,bj,myThid)
502            ENDIF
503    #endif
504    
505  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
506  C-- account for 3.D divergence of the flow in rStar coordinate:  C-- account for 3.D divergence of the flow in rStar coordinate:
# Line 511  C-    endif momAdvection. Line 537  C-    endif momAdvection.
537        IF (momViscosity) THEN        IF (momViscosity) THEN
538  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.  C---  Calculate eddy fluxes (dissipation) between cells for meridional flow.
539  C     Bi-harmonic term del^2 V -> v4F  C     Bi-harmonic term del^2 V -> v4F
540          IF ( viscA4.NE.0. )          IF (biharmonic)
541       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)       &  CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)
542    
543  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon  C     Laplacian and bi-harmonic terms, Zonal  Fluxes -> fZon
544          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,myThid)          CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,
545         I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)
546    
547  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer  C     Laplacian and bi-harmonic termis, Merid Fluxes -> fMer
548          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,myThid)          CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,
549         I    viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,myThid)
550    
551  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw  C     Eddy component of vertical flux (interior component only) -> fVrUp & fVrDw
552         IF (.NOT.implicitViscosity) THEN         IF (.NOT.implicitViscosity) THEN
# Line 544  C--   Tendency is minus divergence of th Line 572  C--   Tendency is minus divergence of th
572           ENDDO           ENDDO
573          ENDDO          ENDDO
574    
575    #ifdef ALLOW_DIAGNOSTICS
576            IF ( useDiagnostics ) THEN
577              CALL DIAGNOSTICS_FILL(fZon, 'VISCx_Vm',k,1,2,bi,bj,myThid)
578              CALL DIAGNOSTICS_FILL(fMer, 'VISCy_Vm',k,1,2,bi,bj,myThid)
579              IF (.NOT.implicitViscosity)
580         &    CALL DIAGNOSTICS_FILL(fVrUp,'VISrE_Vm',k,1,2,bi,bj,myThid)
581            ENDIF
582    #endif
583    
584  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
585        IF (no_slip_sides) THEN        IF (no_slip_sides) THEN
586  C-     No-slip BCs impose a drag at walls...  C-     No-slip BCs impose a drag at walls...
# Line 614  c     ELSE Line 651  c     ELSE
651            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)
652           ENDDO           ENDDO
653          ENDDO          ENDDO
654    #ifdef ALLOW_DIAGNOSTICS
655            IF ( useDiagnostics )
656         &    CALL DIAGNOSTICS_FILL(cf,'Um_Cori ',k,1,2,bi,bj,myThid)
657    #endif
658          CALL MOM_V_CORIOLIS(bi,bj,k,uFld,cf,myThid)          CALL MOM_V_CORIOLIS(bi,bj,k,uFld,cf,myThid)
659          DO j=jMin,jMax          DO j=jMin,jMax
660           DO i=iMin,iMax           DO i=iMin,iMax
661            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)
662           ENDDO           ENDDO
663          ENDDO          ENDDO
664    #ifdef ALLOW_DIAGNOSTICS
665            IF ( useDiagnostics )
666         &    CALL DIAGNOSTICS_FILL(cf,'Vm_Cori ',k,1,2,bi,bj,myThid)
667    #endif
668        ENDIF        ENDIF
669    
670        IF (nonHydrostatic.OR.quasiHydrostatic) THEN        IF (nonHydrostatic.OR.quasiHydrostatic) THEN
# Line 641  C--   Set du/dt & dv/dt on boundaries to Line 686  C--   Set du/dt & dv/dt on boundaries to
686         ENDDO         ENDDO
687        ENDDO        ENDDO
688    
689    #ifdef ALLOW_DIAGNOSTICS
690          IF ( useDiagnostics ) THEN
691           IF (bottomDragTerms)
692         &  CALL DIAGNOSTICS_FILL(KE,    'momKE   ',k,1,2,bi,bj,myThid)
693            CALL DIAGNOSTICS_FILL(gU(1-Olx,1-Oly,k,bi,bj),
694         &                               'Um_Advec',k,1,2,bi,bj,myThid)
695            CALL DIAGNOSTICS_FILL(gV(1-Olx,1-Oly,k,bi,bj),
696         &                               'Vm_Advec',k,1,2,bi,bj,myThid)
697           IF (momViscosity) THEN
698            CALL DIAGNOSTICS_FILL(guDiss,'Um_Diss ',k,1,2,bi,bj,myThid)
699            CALL DIAGNOSTICS_FILL(gvDiss,'Vm_Diss ',k,1,2,bi,bj,myThid)
700           ENDIF
701          ENDIF
702    #endif /* ALLOW_DIAGNOSTICS */
703    
704        RETURN        RETURN
705        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22