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

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

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


Revision 1.12 - (hide 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 heimbach 1.12 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_v_sidedrag.F,v 1.11 2005/10/12 21:07:01 jmc Exp $
2 adcroft 1.2 C $Name: $
3 adcroft 1.1
4     #include "MOM_COMMON_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: MOM_V_SIDEDRAG
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE MOM_V_SIDEDRAG(
11     I bi,bj,k,
12     I vFld, del2v, hFacZ,
13 baylor 1.5 I viscAh_Z,viscA4_Z,
14     I harmonic,biharmonic,useVariableViscosity,
15 adcroft 1.1 O vDragTerms,
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^v_{drag} = - \frac{2}{\Delta x_v} (A_h v - A_4 \nabla^2 v)
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 jmc 1.8 #include "SURFACE.h"
31 adcroft 1.1
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 baylor 1.5 _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 adcroft 1.1 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 jmc 1.11 INTEGER i,j
57 jmc 1.8 _RL hFacZClosedE,hFacZClosedW
58 adcroft 1.1 CEOP
59 jmc 1.11 _RL Ahtmp,A4tmp
60    
61 adcroft 1.1
62 jmc 1.11 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 jmc 1.6
66 jmc 1.8 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 jmc 1.6 hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
77     hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
78 jmc 1.8 #endif
79 jmc 1.6 Ahtmp=min(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,
80     & viscAhMax)
81     A4tmp=min(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,
82     & viscA4Max)
83     IF (viscA4GridMax.GT.0.) THEN
84 jmc 1.7 A4tmp=min(A4tmp,viscA4GridMax*(rAs(i,j,bi,bj)**2)/deltaTmom)
85 jmc 1.6 ENDIF
86 jmc 1.7 A4tmp=max(A4tmp,viscA4GridMin*(rAs(i,j,bi,bj)**2)/deltaTmom)
87 jmc 1.6 vDragTerms(i,j) =
88     & -_recip_hFacS(i,j,k,bi,bj)
89     & *recip_drF(k)*recip_rAs(i,j,bi,bj)
90     & *( hFacZClosedW*_dyU( i ,j,bi,bj)
91     & *_recip_dxV( i ,j,bi,bj)
92     & +hFacZClosedE*_dyU(i+1,j,bi,bj)
93     & *_recip_dxV(i+1,j,bi,bj) )
94     & *drF(k)*2.*(
95 jmc 1.11 & Ahtmp*vFld(i,j)*cosFacV(j,bi,bj)
96 jmc 1.6 #ifdef COSINEMETH_III
97 jmc 1.11 & -viscA4*del2v(i,j)*sqcosFacV(j,bi,bj)
98 jmc 1.6 #else
99 jmc 1.11 & -A4tmp*del2v(i,j)*cosFacV(j,bi,bj)
100 jmc 1.6 #endif
101     & )
102     ENDDO
103     ENDDO
104    
105 jmc 1.11 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 jmc 1.6
109 jmc 1.8 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 heimbach 1.12 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 jmc 1.8 #endif
120     hFacZClosedW = MAX( 0. _d 0, hFacZClosedW )
121     hFacZClosedE = MAX( 0. _d 0, hFacZClosedE )
122 adcroft 1.1 vDragTerms(i,j) =
123     & -_recip_hFacS(i,j,k,bi,bj)
124     & *recip_drF(k)*recip_rAs(i,j,bi,bj)
125 baylor 1.5 & *( hFacZClosedW*_dyU( i ,j,bi,bj)*_recip_dxV( i ,j,bi,bj)
126 jmc 1.11 & *( viscAh_Z(i ,j)*vFld(i,j)*cosFacV(j,bi,bj)
127 adcroft 1.1 #ifdef COSINEMETH_III
128 jmc 1.11 & -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 baylor 1.5 #endif
132 jmc 1.11 & +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 baylor 1.5 #ifdef COSINEMETH_III
135 jmc 1.11 & -viscA4_Z(i+1,j)*del2v(i,j)*sqcosFacV(j,bi,bj) )
136 adcroft 1.1 #else
137 jmc 1.11 & -viscA4_Z(i+1,j)*del2v(i,j)*cosFacV(j,bi,bj) )
138 baylor 1.5 #endif
139 jmc 1.11 & )*drF(k)*sideDragFactor
140 adcroft 1.1 ENDDO
141     ENDDO
142    
143 jmc 1.11 C-- end old-version / new-version IF blocks
144     ENDIF
145 jmc 1.6
146 jmc 1.9 #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 adcroft 1.1 RETURN
153     END

  ViewVC Help
Powered by ViewVC 1.1.22