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

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

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


Revision 1.7 - (show annotations) (download)
Tue Sep 27 00:13:37 2005 UTC (18 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.6: +43 -9 lines
still not clear why some output changed so much ; go back to previous
 version with #define SIDEDRAG_OLD_VERSION

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_u_sidedrag.F,v 1.6 2005/09/26 15:27:11 baylor Exp $
2 C $Name: $
3
4 #include "MOM_COMMON_OPTIONS.h"
5 #define SIDEDRAG_OLD_VERSION
6
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 I viscAh_Z,viscA4_Z,
15 I harmonic,biharmonic,useVariableViscosity,
16 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
32 C !INPUT PARAMETERS: ===================================================
33 C bi,bj :: tile indices
34 C k :: vertical level
35 C uFld :: zonal flow
36 C del2u :: Laplacian of zonal flow
37 C hFacZ :: fractional open water at vorticity points
38 C myThid :: thread number
39 INTEGER bi,bj,k
40 _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41 _RL del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42 _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
47
48 C !OUTPUT PARAMETERS: ==================================================
49 C uDragTerms :: drag term
50 _RL uDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51
52 C !LOCAL VARIABLES: ====================================================
53 C i,j :: loop indices
54 C hFacZClosedN :: fractional open water to north
55 C hFacZClosedS :: fractional open water to south
56 INTEGER I,J
57 _RS hFacZClosedS,hFacZClosedN
58 CEOP
59
60 #ifdef SIDEDRAG_OLD_VERSION
61 _RL Ahtmp,A4tmp
62
63 C - Laplacian and bi-harmonic terms
64 DO j=1-Oly,sNy+Oly-1
65 DO i=1-Olx,sNx+Olx-1
66 hFacZClosedS = _hFacW(i,j,k,bi,bj) - hFacZ(i,j)
67 hFacZClosedN = _hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
68 Ahtmp=min(viscAh+viscAhGrid*rAw(i,j,bi,bj)/deltaTmom,
69 & viscAhMax)
70 A4tmp=min(viscA4+viscA4Grid*(rAw(i,j,bi,bj)**2)/deltaTmom,
71 & viscA4Max)
72 A4tmp=min(A4tmp,viscA4GridMax*(rAw(i,j,bi,bj)**2)/deltaTmom)
73 A4tmp=max(A4tmp,viscA4GridMin*(rAw(i,j,bi,bj)**2)/deltaTmom)
74 uDragTerms(i,j) =
75 & -_recip_hFacW(i,j,k,bi,bj)
76 & *recip_drF(k)*recip_rAw(i,j,bi,bj)
77 & *( hFacZClosedS*_dxV(i, j ,bi,bj)
78 & *_recip_dyU(i, j ,bi,bj)
79 & +hFacZClosedN*_dxV(i,j+1,bi,bj)
80 & *_recip_dyU(i,j+1,bi,bj) )
81 & *drF(k)*2.*(
82 #ifdef ISOTROPIC_COS_SCALING
83 & viscAh*uFld(i,j)*cosFacU(J,bi,bj)
84 #ifdef COSINEMETH_III
85 & -viscA4*del2u(i,j)*sqcosFacU(J,bi,bj)
86 #else
87 & -viscA4*del2u(i,j)*cosFacU(J,bi,bj)
88 #endif
89 #else
90 & Ahtmp*uFld(i,j)
91 & -A4tmp*del2u(i,j)
92 #endif
93 & )
94 ENDDO
95 ENDDO
96
97 #else /* SIDEDRAG_OLD_VERSION */
98
99 C - Laplacian and bi-harmonic terms
100 DO j=1-Oly,sNy+Oly-1
101 DO i=1-Olx,sNx+Olx-1
102 hFacZClosedS = _hFacW(i,j,k,bi,bj) - hFacZ(i,j)
103 hFacZClosedN = _hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
104 uDragTerms(i,j) =
105 & -_recip_hFacW(i,j,k,bi,bj)
106 & *recip_drF(k)*recip_rAw(i,j,bi,bj)
107 & *( hFacZClosedS*_dxV(i, j ,bi,bj)*_recip_dyU(i, j ,bi,bj)
108 #ifdef ISOTROPIC_COS_SCALING
109 & *(viscAh_Z(i,j )*uFld(i,j)*cosFacU(J,bi,bj)
110 #ifdef COSINEMETH_III
111 & -viscA4_Z(i,j )*del2u(i,j)*sqcosFacU(J,bi,bj))
112 #else
113 & -viscA4_Z(i,j )*del2u(i,j)*cosFacU(J,bi,bj))
114 #endif
115 #else
116 & *(viscAh_Z(i,j )*uFld(i,j)
117 & -viscA4_Z(i,j )*del2u(i,j))
118 #endif
119 & +hFacZClosedN*_dxV(i,j+1,bi,bj)*_recip_dyU(i,j+1,bi,bj)
120 #ifdef ISOTROPIC_COS_SCALING
121 & *(viscAh_Z(i,j+1)*uFld(i,j)*cosFacU(J,bi,bj)
122 #ifdef COSINEMETH_III
123 & -viscA4_Z(i,j+1)*del2u(i,j)*sqcosFacU(J,bi,bj))
124 #else
125 & -viscA4_Z(i,j+1)*del2u(i,j)*cosFacU(J,bi,bj))
126 #endif
127 #else
128 & *(viscAh_Z(i,j+1)*uFld(i,j)
129 & -viscA4_Z(i,j+1)*del2u(i,j))
130 #endif
131 & )
132 & *drF(k)*2.
133 ENDDO
134 ENDDO
135
136 #endif /* (not) SIDEDRAG_OLD_VERSION */
137
138 RETURN
139 END

  ViewVC Help
Powered by ViewVC 1.1.22