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

Annotation of /MITgcm/pkg/mom_common/mom_u_sidedrag.F

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


Revision 1.10 - (hide annotations) (download)
Thu Sep 29 18:36:43 2005 UTC (18 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57t_post, checkpint57u_post
Changes since 1.9: +7 -1 lines
add diagnostics for side-drag & bottom-drag.

1 jmc 1.10 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_u_sidedrag.F,v 1.9 2005/09/29 03:39:59 jmc Exp $
2 adcroft 1.2 C $Name: $
3 adcroft 1.1
4     #include "MOM_COMMON_OPTIONS.h"
5 jmc 1.7 #define SIDEDRAG_OLD_VERSION
6 adcroft 1.1
7     CBOP
8     C !ROUTINE: MOM_U_SIDEDRAG
9    
10     C !INTERFACE: ==========================================================
11     SUBROUTINE MOM_U_SIDEDRAG(
12     I bi,bj,k,
13     I uFld, del2u, hFacZ,
14 baylor 1.6 I viscAh_Z,viscA4_Z,
15     I harmonic,biharmonic,useVariableViscosity,
16 adcroft 1.1 O uDragTerms,
17     I myThid)
18    
19     C !DESCRIPTION:
20     C Calculates the drag terms due to the no-slip condition on viscous stresses:
21     C \begin{equation*}
22     C G^u_{drag} = - \frac{2}{\Delta y_u} (A_h u - A_4 \nabla^2 u)
23     C \end{equation*}
24    
25     C !USES: ===============================================================
26     IMPLICIT NONE
27     #include "SIZE.h"
28     #include "EEPARAMS.h"
29     #include "PARAMS.h"
30     #include "GRID.h"
31 jmc 1.8 #include "SURFACE.h"
32 adcroft 1.1
33     C !INPUT PARAMETERS: ===================================================
34     C bi,bj :: tile indices
35     C k :: vertical level
36     C uFld :: zonal flow
37     C del2u :: Laplacian of zonal flow
38     C hFacZ :: fractional open water at vorticity points
39     C myThid :: thread number
40     INTEGER bi,bj,k
41     _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42     _RL del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
43     _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44 baylor 1.6 _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45     _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46     LOGICAL harmonic,biharmonic,useVariableViscosity
47 adcroft 1.1 INTEGER myThid
48    
49     C !OUTPUT PARAMETERS: ==================================================
50     C uDragTerms :: drag term
51     _RL uDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52    
53     C !LOCAL VARIABLES: ====================================================
54     C i,j :: loop indices
55     C hFacZClosedN :: fractional open water to north
56     C hFacZClosedS :: fractional open water to south
57     INTEGER I,J
58 jmc 1.8 _RL hFacZClosedS,hFacZClosedN
59 adcroft 1.1 CEOP
60    
61 jmc 1.7 #ifdef SIDEDRAG_OLD_VERSION
62     _RL Ahtmp,A4tmp
63    
64     C - Laplacian and bi-harmonic terms
65 jmc 1.8 DO j=2-Oly,sNy+Oly-1
66     DO i=2-Olx,sNx+Olx-1
67     #ifdef NONLIN_FRSURF
68     C- this will not give any side-drag along thin wall.
69     C (but this might just be what we want ...)
70     hFacZClosedS = h0FacW(i,j,k,bi,bj) - h0FacW(i,j-1,k,bi,bj)
71     hFacZClosedN = h0FacW(i,j,k,bi,bj) - h0FacW(i,j+1,k,bi,bj)
72     hFacZClosedS = MAX( 0. _d 0, hFacZClosedS )
73     hFacZClosedN = MAX( 0. _d 0, hFacZClosedN )
74     #else
75 jmc 1.7 hFacZClosedS = _hFacW(i,j,k,bi,bj) - hFacZ(i,j)
76     hFacZClosedN = _hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
77 jmc 1.8 #endif
78 jmc 1.7 Ahtmp=min(viscAh+viscAhGrid*rAw(i,j,bi,bj)/deltaTmom,
79     & viscAhMax)
80     A4tmp=min(viscA4+viscA4Grid*(rAw(i,j,bi,bj)**2)/deltaTmom,
81     & viscA4Max)
82     A4tmp=min(A4tmp,viscA4GridMax*(rAw(i,j,bi,bj)**2)/deltaTmom)
83     A4tmp=max(A4tmp,viscA4GridMin*(rAw(i,j,bi,bj)**2)/deltaTmom)
84     uDragTerms(i,j) =
85     & -_recip_hFacW(i,j,k,bi,bj)
86     & *recip_drF(k)*recip_rAw(i,j,bi,bj)
87     & *( hFacZClosedS*_dxV(i, j ,bi,bj)
88     & *_recip_dyU(i, j ,bi,bj)
89     & +hFacZClosedN*_dxV(i,j+1,bi,bj)
90     & *_recip_dyU(i,j+1,bi,bj) )
91     & *drF(k)*2.*(
92     #ifdef ISOTROPIC_COS_SCALING
93     & viscAh*uFld(i,j)*cosFacU(J,bi,bj)
94     #ifdef COSINEMETH_III
95     & -viscA4*del2u(i,j)*sqcosFacU(J,bi,bj)
96     #else
97     & -viscA4*del2u(i,j)*cosFacU(J,bi,bj)
98     #endif
99     #else
100     & Ahtmp*uFld(i,j)
101     & -A4tmp*del2u(i,j)
102     #endif
103     & )
104     ENDDO
105     ENDDO
106    
107     #else /* SIDEDRAG_OLD_VERSION */
108    
109 adcroft 1.1 C - Laplacian and bi-harmonic terms
110 jmc 1.8 DO j=2-Oly,sNy+Oly-1
111     DO i=2-Olx,sNx+Olx-1
112     C- this will not give any side-drag along thin wall.
113     C (but this might just be what we want ...)
114     #ifdef NONLIN_FRSURF
115     hFacZClosedS = h0FacW(i,j,k,bi,bj) - h0FacW(i,j-1,k,bi,bj)
116 jmc 1.9 hFacZClosedN = h0FacW(i,j,k,bi,bj) - h0FacW(i,j+1,k,bi,bj)
117 jmc 1.8 #else
118     hFacZClosedS = hFacW(i,j,k,bi,bj) - hFacW(i,j-1,k,bi,bj)
119     hFacZClosedN = hFacW(i,j,k,bi,bj) - hFacW(i,j+1,k,bi,bj)
120     #endif
121     hFacZClosedS = MAX( 0. _d 0, hFacZClosedS )
122     hFacZClosedN = MAX( 0. _d 0, hFacZClosedN )
123 adcroft 1.1 uDragTerms(i,j) =
124     & -_recip_hFacW(i,j,k,bi,bj)
125     & *recip_drF(k)*recip_rAw(i,j,bi,bj)
126 baylor 1.6 & *( hFacZClosedS*_dxV(i, j ,bi,bj)*_recip_dyU(i, j ,bi,bj)
127 adcroft 1.1 #ifdef ISOTROPIC_COS_SCALING
128 baylor 1.6 & *(viscAh_Z(i,j )*uFld(i,j)*cosFacU(J,bi,bj)
129 adcroft 1.1 #ifdef COSINEMETH_III
130 baylor 1.6 & -viscA4_Z(i,j )*del2u(i,j)*sqcosFacU(J,bi,bj))
131 adcroft 1.1 #else
132 baylor 1.6 & -viscA4_Z(i,j )*del2u(i,j)*cosFacU(J,bi,bj))
133 adcroft 1.1 #endif
134     #else
135 baylor 1.6 & *(viscAh_Z(i,j )*uFld(i,j)
136     & -viscA4_Z(i,j )*del2u(i,j))
137     #endif
138     & +hFacZClosedN*_dxV(i,j+1,bi,bj)*_recip_dyU(i,j+1,bi,bj)
139     #ifdef ISOTROPIC_COS_SCALING
140     & *(viscAh_Z(i,j+1)*uFld(i,j)*cosFacU(J,bi,bj)
141     #ifdef COSINEMETH_III
142     & -viscA4_Z(i,j+1)*del2u(i,j)*sqcosFacU(J,bi,bj))
143     #else
144     & -viscA4_Z(i,j+1)*del2u(i,j)*cosFacU(J,bi,bj))
145     #endif
146     #else
147     & *(viscAh_Z(i,j+1)*uFld(i,j)
148     & -viscA4_Z(i,j+1)*del2u(i,j))
149 adcroft 1.1 #endif
150     & )
151 baylor 1.6 & *drF(k)*2.
152 adcroft 1.1 ENDDO
153     ENDDO
154    
155 jmc 1.7 #endif /* (not) SIDEDRAG_OLD_VERSION */
156    
157 jmc 1.10 #ifdef ALLOW_DIAGNOSTICS
158     IF (useDiagnostics) THEN
159     CALL DIAGNOSTICS_FILL(uDragTerms,'USidDrag',k,1,2,bi,bj,myThid)
160     ENDIF
161     #endif /* ALLOW_DIAGNOSTICS */
162    
163 adcroft 1.1 RETURN
164     END

  ViewVC Help
Powered by ViewVC 1.1.22