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

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

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


Revision 1.7 - (show annotations) (download)
Thu Sep 29 02:31:55 2005 UTC (18 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.6: +3 -3 lines
use the right area (rAs)

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_v_sidedrag.F,v 1.6 2005/09/27 00:13:37 jmc Exp $
2 C $Name: $
3
4 #include "MOM_COMMON_OPTIONS.h"
5 #define SIDEDRAG_OLD_VERSION
6
7 CBOP
8 C !ROUTINE: MOM_V_SIDEDRAG
9
10 C !INTERFACE: ==========================================================
11 SUBROUTINE MOM_V_SIDEDRAG(
12 I bi,bj,k,
13 I vFld, del2v, hFacZ,
14 I viscAh_Z,viscA4_Z,
15 I harmonic,biharmonic,useVariableViscosity,
16 O vDragTerms,
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^v_{drag} = - \frac{2}{\Delta x_v} (A_h v - A_4 \nabla^2 v)
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 uvld :: meridional flow
36 C del2v :: Laplacian of meridional flow
37 C hFacZ :: fractional open water at vorticity points
38 C myThid :: thread number
39 INTEGER bi,bj,k
40 _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41 _RL del2v(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 vDragTerms :: drag term
50 _RL vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51
52 C !LOCAL VARIABLES: ====================================================
53 C i,j :: loop indices
54 C hFacZClosedE :: fractional open water to east
55 C hFacZClosedW :: fractional open water to west
56 INTEGER I,J
57 _RS hFacZClosedE,hFacZClosedW
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 hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
67 hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
68 Ahtmp=min(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,
69 & viscAhMax)
70 A4tmp=min(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,
71 & viscA4Max)
72 IF (viscA4GridMax.GT.0.) THEN
73 A4tmp=min(A4tmp,viscA4GridMax*(rAs(i,j,bi,bj)**2)/deltaTmom)
74 ENDIF
75 A4tmp=max(A4tmp,viscA4GridMin*(rAs(i,j,bi,bj)**2)/deltaTmom)
76 vDragTerms(i,j) =
77 & -_recip_hFacS(i,j,k,bi,bj)
78 & *recip_drF(k)*recip_rAs(i,j,bi,bj)
79 & *( hFacZClosedW*_dyU( i ,j,bi,bj)
80 & *_recip_dxV( i ,j,bi,bj)
81 & +hFacZClosedE*_dyU(i+1,j,bi,bj)
82 & *_recip_dxV(i+1,j,bi,bj) )
83 & *drF(k)*2.*(
84 & Ahtmp*vFld(i,j)*cosFacV(J,bi,bj)
85 & -A4tmp*del2v(i,j)*cosFacV(J,bi,bj)
86 #ifdef COSINEMETH_III
87 & -viscA4*del2v(i,j)*sqcosFacV(J,bi,bj)
88 #else
89 & -viscA4*del2v(i,j)*cosFacV(J,bi,bj)
90 #endif
91 & )
92 ENDDO
93 ENDDO
94
95 #else /* SIDEDRAG_OLD_VERSION */
96
97 C - Laplacian and bi-harmonic terms
98 DO j=1-Oly,sNy+Oly-1
99 DO i=1-Olx,sNx+Olx-1
100 hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
101 hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
102 vDragTerms(i,j) =
103 & -_recip_hFacS(i,j,k,bi,bj)
104 & *recip_drF(k)*recip_rAs(i,j,bi,bj)
105 & *( hFacZClosedW*_dyU( i ,j,bi,bj)*_recip_dxV( i ,j,bi,bj)
106 #ifdef ISOTROPIC_COS_SCALING
107 & *(viscAh_Z(i ,j)*vFld(i,j)*cosFacV(J,bi,bj)
108 #ifdef COSINEMETH_III
109 & -viscA4_Z(i ,j)*del2v(i,j)*sqcosFacV(J,bi,bj))
110 #else
111 & -viscA4_Z(i ,j)*del2v(i,j)*cosFacV(J,bi,bj))
112 #endif
113 #else
114 & *(viscAh_Z(i ,j)*vFld(i,j)
115 & -viscA4_Z(i ,j)*del2v(i,j))
116 #endif
117 & +hFacZClosedE*_dyU(i+1,j,bi,bj)*_recip_dxV(i+1,j,bi,bj)
118 #ifdef ISOTROPIC_COS_SCALING
119 & *(viscAh_Z(i+1,j)*vFld(i,j)*cosFacV(J,bi,bj)
120 #ifdef COSINEMETH_III
121 & -viscA4_Z(i+1,j)*del2v(i,j)*sqcosFacV(J,bi,bj))
122 #else
123 & -viscA4_Z(i+1,j)*del2v(i,j)*cosFacV(J,bi,bj))
124 #endif
125 #else
126 & *(viscAh_Z(i+1,j)*vFld(i,j)
127 & -viscA4_Z(i+1,j)*del2v(i,j))
128 #endif
129 & )
130 & *drF(k)*2.
131 ENDDO
132 ENDDO
133
134 #endif /* (not) SIDEDRAG_OLD_VERSION */
135
136 RETURN
137 END

  ViewVC Help
Powered by ViewVC 1.1.22