/[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.12 - (show annotations) (download)
Wed Jun 7 01:55:15 2006 UTC (17 years, 11 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64t, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, mitgcm_mapl_00, checkpoint58u_post, checkpoint58w_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint58r_post, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58h_post, checkpoint58q_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58i_post, checkpoint58o_post, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint58k_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58m_post
Changes since 1.11: +3 -3 lines
Modifications for bottom topography control
o replace hFacC by _hFacC at various places
o replace ALLOW_HFACC_CONTROL by ALLOW_DEPTH_CONTROL
o add non-self-adjoint cg2d_nsa
o update autodiff support routines
o re-initialise hfac after ctrl_depth_ini
o works for 5x5 box, doesnt work for global_ocean.90x40x15

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_u_sidedrag.F,v 1.11 2005/10/12 21:07:01 jmc Exp $
2 C $Name: $
3
4 #include "MOM_COMMON_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: MOM_U_SIDEDRAG
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE MOM_U_SIDEDRAG(
11 I bi,bj,k,
12 I uFld, del2u, hFacZ,
13 I viscAh_Z,viscA4_Z,
14 I harmonic,biharmonic,useVariableViscosity,
15 O uDragTerms,
16 I myThid)
17
18 C !DESCRIPTION:
19 C Calculates the drag terms due to the no-slip condition on viscous stresses:
20 C \begin{equation*}
21 C G^u_{drag} = - \frac{2}{\Delta y_u} (A_h u - A_4 \nabla^2 u)
22 C \end{equation*}
23
24 C !USES: ===============================================================
25 IMPLICIT NONE
26 #include "SIZE.h"
27 #include "EEPARAMS.h"
28 #include "PARAMS.h"
29 #include "GRID.h"
30 #include "SURFACE.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 _RL hFacZClosedS,hFacZClosedN
58 CEOP
59 _RL Ahtmp,A4tmp
60
61
62 IF ( sideDragFactor.LE.0. ) THEN
63 C-- Laplacian and bi-harmonic terms: variable-Viscosity coeff. from
64 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 hFacZClosedS = h0FacW(i,j,k,bi,bj) - h0FacW(i,j-1,k,bi,bj)
72 hFacZClosedN = h0FacW(i,j,k,bi,bj) - h0FacW(i,j+1,k,bi,bj)
73 hFacZClosedS = MAX( 0. _d 0, hFacZClosedS )
74 hFacZClosedN = MAX( 0. _d 0, hFacZClosedN )
75 #else
76 hFacZClosedS = _hFacW(i,j,k,bi,bj) - hFacZ(i,j)
77 hFacZClosedN = _hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
78 #endif
79 Ahtmp=min(viscAh+viscAhGrid*rAw(i,j,bi,bj)/deltaTmom,
80 & viscAhMax)
81 A4tmp=min(viscA4+viscA4Grid*(rAw(i,j,bi,bj)**2)/deltaTmom,
82 & viscA4Max)
83 A4tmp=min(A4tmp,viscA4GridMax*(rAw(i,j,bi,bj)**2)/deltaTmom)
84 A4tmp=max(A4tmp,viscA4GridMin*(rAw(i,j,bi,bj)**2)/deltaTmom)
85 uDragTerms(i,j) =
86 & -_recip_hFacW(i,j,k,bi,bj)
87 & *recip_drF(k)*recip_rAw(i,j,bi,bj)
88 & *( hFacZClosedS*_dxV(i, j ,bi,bj)
89 & *_recip_dyU(i, j ,bi,bj)
90 & +hFacZClosedN*_dxV(i,j+1,bi,bj)
91 & *_recip_dyU(i,j+1,bi,bj) )
92 & *drF(k)*2.*(
93 #ifdef ISOTROPIC_COS_SCALING
94 & viscAh*uFld(i,j)*cosFacU(j,bi,bj)
95 #ifdef COSINEMETH_III
96 & -viscA4*del2u(i,j)*sqcosFacU(j,bi,bj)
97 #else
98 & -viscA4*del2u(i,j)*cosFacU(j,bi,bj)
99 #endif
100 #else
101 & Ahtmp*uFld(i,j)
102 & -A4tmp*del2u(i,j)
103 #endif
104 & )
105 ENDDO
106 ENDDO
107
108 ELSE
109 C-- Laplacian and bi-harmonic terms: using variable-Viscosity coeff.
110 C from MOM_CALC_VISC, consistent with dissipation in the interior
111
112 DO j=2-Oly,sNy+Oly-1
113 DO i=2-Olx,sNx+Olx-1
114 C- this will not give any side-drag along thin wall.
115 C (but this might just be what we want ...)
116 #ifdef NONLIN_FRSURF
117 hFacZClosedS = h0FacW(i,j,k,bi,bj) - h0FacW(i,j-1,k,bi,bj)
118 hFacZClosedN = h0FacW(i,j,k,bi,bj) - h0FacW(i,j+1,k,bi,bj)
119 #else
120 hFacZClosedS = _hFacW(i,j,k,bi,bj) - _hFacW(i,j-1,k,bi,bj)
121 hFacZClosedN = _hFacW(i,j,k,bi,bj) - _hFacW(i,j+1,k,bi,bj)
122 #endif
123 hFacZClosedS = MAX( 0. _d 0, hFacZClosedS )
124 hFacZClosedN = MAX( 0. _d 0, hFacZClosedN )
125 uDragTerms(i,j) =
126 & -_recip_hFacW(i,j,k,bi,bj)
127 & *recip_drF(k)*recip_rAw(i,j,bi,bj)
128 & *( hFacZClosedS*_dxV(i, j ,bi,bj)*_recip_dyU(i, j ,bi,bj)
129 #ifdef ISOTROPIC_COS_SCALING
130 & *( viscAh_Z(i,j )*uFld(i,j)*cosFacU(j,bi,bj)
131 #ifdef COSINEMETH_III
132 & -viscA4_Z(i,j )*del2u(i,j)*sqcosFacU(j,bi,bj) )
133 #else
134 & -viscA4_Z(i,j )*del2u(i,j)*cosFacU(j,bi,bj) )
135 #endif
136 #else
137 & *( viscAh_Z(i,j )*uFld(i,j)
138 & -viscA4_Z(i,j )*del2u(i,j) )
139 #endif
140 & +hFacZClosedN*_dxV(i,j+1,bi,bj)*_recip_dyU(i,j+1,bi,bj)
141 #ifdef ISOTROPIC_COS_SCALING
142 & *( viscAh_Z(i,j+1)*uFld(i,j)*cosFacU(j,bi,bj)
143 #ifdef COSINEMETH_III
144 & -viscA4_Z(i,j+1)*del2u(i,j)*sqcosFacU(j,bi,bj) )
145 #else
146 & -viscA4_Z(i,j+1)*del2u(i,j)*cosFacU(j,bi,bj) )
147 #endif
148 #else
149 & *( viscAh_Z(i,j+1)*uFld(i,j)
150 & -viscA4_Z(i,j+1)*del2u(i,j) )
151 #endif
152 & )*drF(k)*sideDragFactor
153 ENDDO
154 ENDDO
155
156 C-- end old-version / new-version IF blocks
157 ENDIF
158
159 #ifdef ALLOW_DIAGNOSTICS
160 IF (useDiagnostics) THEN
161 CALL DIAGNOSTICS_FILL(uDragTerms,'USidDrag',k,1,2,bi,bj,myThid)
162 ENDIF
163 #endif /* ALLOW_DIAGNOSTICS */
164
165 RETURN
166 END

  ViewVC Help
Powered by ViewVC 1.1.22