/[MITgcm]/MITgcm/pkg/mom_common/mom_v_sidedrag.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_common/mom_v_sidedrag.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.3 by adcroft, Mon May 24 15:37:02 2004 UTC revision 1.11 by jmc, Wed Oct 12 21:07:01 2005 UTC
# Line 10  C !INTERFACE: ========================== Line 10  C !INTERFACE: ==========================
10        SUBROUTINE MOM_V_SIDEDRAG(        SUBROUTINE MOM_V_SIDEDRAG(
11       I        bi,bj,k,       I        bi,bj,k,
12       I        vFld, del2v, hFacZ,       I        vFld, del2v, hFacZ,
13         I        viscAh_Z,viscA4_Z,
14         I        harmonic,biharmonic,useVariableViscosity,
15       O        vDragTerms,       O        vDragTerms,
16       I        myThid)       I        myThid)
17    
# Line 25  C !USES: =============================== Line 27  C !USES: ===============================
27  #include "EEPARAMS.h"  #include "EEPARAMS.h"
28  #include "PARAMS.h"  #include "PARAMS.h"
29  #include "GRID.h"  #include "GRID.h"
30    #include "SURFACE.h"
31    
32  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
33  C  bi,bj                :: tile indices  C  bi,bj                :: tile indices
# Line 37  C  myThid               :: thread number Line 40  C  myThid               :: thread number
40        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41        _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42        _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
43          _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44          _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45          LOGICAL harmonic,biharmonic,useVariableViscosity
46        INTEGER myThid        INTEGER myThid
47    
48  C !OUTPUT PARAMETERS: ==================================================  C !OUTPUT PARAMETERS: ==================================================
# Line 47  C !LOCAL VARIABLES: ==================== Line 53  C !LOCAL VARIABLES: ====================
53  C  i,j                  :: loop indices  C  i,j                  :: loop indices
54  C  hFacZClosedE         :: fractional open water to east  C  hFacZClosedE         :: fractional open water to east
55  C  hFacZClosedW         :: fractional open water to west  C  hFacZClosedW         :: fractional open water to west
56        INTEGER I,J        INTEGER i,j
57        _RS hFacZClosedE,hFacZClosedW        _RL hFacZClosedE,hFacZClosedW
       _RL Ahtmp,A4tmp  
58  CEOP  CEOP
59          _RL Ahtmp,A4tmp
60    
61    
62  C     - Laplacian  and bi-harmonic terms        IF ( sideDragFactor.LE.0. ) THEN
63        DO j=1-Oly,sNy+Oly-1  C--   Laplacian and bi-harmonic terms: variable-Viscosity coeff. from
64         DO i=1-Olx,sNx+Olx-1  C     MOM_CALC_VISC are not used here (corresponds to the "old" version).
65    
66          DO j=2-Oly,sNy+Oly-1
67           DO i=2-Olx,sNx+Olx-1
68    #ifdef NONLIN_FRSURF
69    C-      this will not give any side-drag along thin wall.
70    C       (but this might just be what we want ...)
71            hFacZClosedW = h0FacS(i,j,k,bi,bj) - h0FacS(i-1,j,k,bi,bj)
72            hFacZClosedE = h0FacS(i,j,k,bi,bj) - h0FacS(i+1,j,k,bi,bj)
73            hFacZClosedW = MAX( 0. _d 0, hFacZClosedW )
74            hFacZClosedE = MAX( 0. _d 0, hFacZClosedE )
75    #else
76          hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)          hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
77          hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)          hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
78    #endif
79          Ahtmp=min(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,          Ahtmp=min(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,
80       &            viscAhMax)       &            viscAhMax)
81          A4tmp=min(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,          A4tmp=min(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,
82       &            viscA4Max)       &            viscA4Max)
83            IF (viscA4GridMax.GT.0.) THEN
84               A4tmp=min(A4tmp,viscA4GridMax*(rAs(i,j,bi,bj)**2)/deltaTmom)
85            ENDIF
86            A4tmp=max(A4tmp,viscA4GridMin*(rAs(i,j,bi,bj)**2)/deltaTmom)
87          vDragTerms(i,j) =          vDragTerms(i,j) =
88       &   -_recip_hFacS(i,j,k,bi,bj)       &   -_recip_hFacS(i,j,k,bi,bj)
89       &   *recip_drF(k)*recip_rAs(i,j,bi,bj)       &   *recip_drF(k)*recip_rAs(i,j,bi,bj)
# Line 69  C     - Laplacian  and bi-harmonic terms Line 92  C     - Laplacian  and bi-harmonic terms
92       &     +hFacZClosedE*_dyU(i+1,j,bi,bj)       &     +hFacZClosedE*_dyU(i+1,j,bi,bj)
93       &      *_recip_dxV(i+1,j,bi,bj) )       &      *_recip_dxV(i+1,j,bi,bj) )
94       &   *drF(k)*2.*(       &   *drF(k)*2.*(
95       &                Ahtmp*vFld(i,j)*cosFacV(J,bi,bj)       &                Ahtmp*vFld(i,j)*cosFacV(j,bi,bj)
      &               -A4tmp*del2v(i,j)*cosFacV(J,bi,bj)  
96  #ifdef COSINEMETH_III  #ifdef COSINEMETH_III
97       &               -viscA4*del2v(i,j)*sqcosFacV(J,bi,bj)       &               -viscA4*del2v(i,j)*sqcosFacV(j,bi,bj)
98  #else  #else
99       &               -viscA4*del2v(i,j)*cosFacV(J,bi,bj)       &               -A4tmp*del2v(i,j)*cosFacV(j,bi,bj)
100  #endif  #endif
101       &              )       &              )
102         ENDDO         ENDDO
103        ENDDO        ENDDO
104    
105          ELSE
106    C--   Laplacian and bi-harmonic terms: using variable-Viscosity coeff.
107    C     from MOM_CALC_VISC, consistent with dissipation in the interior
108    
109          DO j=2-Oly,sNy+Oly-1
110           DO i=2-Olx,sNx+Olx-1
111    C-      this will not give any side-drag along thin wall.
112    C       (but this might just be what we want ...)
113    #ifdef NONLIN_FRSURF
114            hFacZClosedW = h0FacS(i,j,k,bi,bj) - h0FacS(i-1,j,k,bi,bj)
115            hFacZClosedE = h0FacS(i,j,k,bi,bj) - h0FacS(i+1,j,k,bi,bj)
116    #else
117            hFacZClosedW = hFacS(i,j,k,bi,bj) - hFacS(i-1,j,k,bi,bj)
118            hFacZClosedE = hFacS(i,j,k,bi,bj) - hFacS(i+1,j,k,bi,bj)
119    #endif
120            hFacZClosedW = MAX( 0. _d 0, hFacZClosedW )
121            hFacZClosedE = MAX( 0. _d 0, hFacZClosedE )
122            vDragTerms(i,j) =
123         &   -_recip_hFacS(i,j,k,bi,bj)
124         &   *recip_drF(k)*recip_rAs(i,j,bi,bj)
125         &   *( hFacZClosedW*_dyU( i ,j,bi,bj)*_recip_dxV( i ,j,bi,bj)
126         &         *( viscAh_Z(i  ,j)*vFld(i,j)*cosFacV(j,bi,bj)
127    #ifdef COSINEMETH_III
128         &           -viscA4_Z(i  ,j)*del2v(i,j)*sqcosFacV(j,bi,bj) )
129    #else
130         &           -viscA4_Z(i  ,j)*del2v(i,j)*cosFacV(j,bi,bj) )
131    #endif
132         &     +hFacZClosedE*_dyU(i+1,j,bi,bj)*_recip_dxV(i+1,j,bi,bj)
133         &         *( viscAh_Z(i+1,j)*vFld(i,j)*cosFacV(j,bi,bj)
134    #ifdef COSINEMETH_III
135         &           -viscA4_Z(i+1,j)*del2v(i,j)*sqcosFacV(j,bi,bj) )
136    #else
137         &           -viscA4_Z(i+1,j)*del2v(i,j)*cosFacV(j,bi,bj) )
138    #endif
139         &    )*drF(k)*sideDragFactor
140           ENDDO
141          ENDDO
142    
143    C--   end old-version / new-version IF blocks
144          ENDIF
145    
146    #ifdef ALLOW_DIAGNOSTICS
147          IF (useDiagnostics) THEN
148            CALL DIAGNOSTICS_FILL(vDragTerms,'VSidDrag',k,1,2,bi,bj,myThid)
149          ENDIF
150    #endif /* ALLOW_DIAGNOSTICS */
151    
152        RETURN        RETURN
153        END        END

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22