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

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

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


Revision 1.2 - (hide annotations) (download)
Thu Mar 10 03:45:11 2005 UTC (19 years, 3 months ago) by baylor
Branch: MAIN
CVS Tags: checkpoint57f_pre, checkpoint57f_post
Changes since 1.1: +74 -18 lines
Added Harmonic Smagorinsky Viscosity.  May not work with strongly anisotropic grids.

1 baylor 1.2 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_hdissip.F,v 1.1 2004/05/14 17:43:11 adcroft Exp $
2     C $Name: $
3 adcroft 1.1
4     #include "MOM_COMMON_OPTIONS.h"
5    
6     SUBROUTINE MOM_HDISSIP(
7     I bi,bj,k,
8     I tension,strain,hFacZ,viscAt,viscAs,
9     O uDissip,vDissip,
10     I myThid)
11     IMPLICIT NONE
12     C
13     C Calculate horizontal dissipation terms in terms of tension and strain
14     C
15     C Du = d/dx At Tension + d/dy As Strain
16     C Dv = d/dx As Strain - d/dy At Tension
17    
18     C == Global variables ==
19     #include "SIZE.h"
20 baylor 1.2 #include "EEPARAMS.h"
21 adcroft 1.1 #include "GRID.h"
22 baylor 1.2 #include "PARAMS.h"
23 adcroft 1.1
24     C == Routine arguments ==
25     INTEGER bi,bj,k
26     _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
27     _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
28     _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
29     _RL viscAt
30     _RL viscAs
31     _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
32     _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
33     INTEGER myThid
34    
35     C == Local variables ==
36     INTEGER I,J
37 baylor 1.2 _RL viscA_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
38     _RL viscA_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39     _RL ASmag, smagfac
40     _RL vg2Min, vg2Max, AlinMax, AlinMin
41    
42     IF (deltaTmom.NE.0.) THEN
43     vg2Min=viscAhGridMin/deltaTmom
44     vg2Max=viscAhGridMax/deltaTmom
45     ELSE
46     vg2Min=0.
47     vg2Max=0.
48     ENDIF
49    
50     C - Calculate Smagorinsky Coefficients
51     smagfac=(viscC2smag/pi)**2
52     DO j=2-Oly,sNy+Oly-1
53     DO i=2-Olx,sNx+Olx-1
54     IF (viscC2smag.NE.0.) THEN
55     Asmag=smagfac*rA(i,j,bi,bj)
56     & *sqrt(tension(i,j)**2
57     & +0.25*(strain(i+1, j )**2+strain( i ,j+1)**2
58     & +strain(i-1, j )**2+strain( i ,j-1)**2))
59     viscA_t(i,j)=min(viscAhMax,max(viscAt,Asmag))
60    
61     IF (vg2Max.GT.0.) THEN
62     AlinMax=vg2Max*(rA ( i , j ,bi,bj))
63     viscA_t(i,j)=min(AlinMax,viscA_t(i,j))
64     ENDIF
65     AlinMin=vg2Min*(rA ( i , j ,bi,bj))
66     viscA_t(i,j)=max(AlinMin,viscA_t(i,j))
67    
68     Asmag=smagfac*rAz(i,j,bi,bj)
69     & *sqrt(strain(i,j)**2
70     & +0.25*(tension( i , j )**2+tension( i ,j+1)**2
71     & +tension(i+1, j )**2+tension(i+1,j+1)**2))
72     viscA_s(i,j)=min(viscAhMax,max(viscAs,Asmag))
73    
74     IF (vg2Max.GT.0.) THEN
75     AlinMax=vg2Max*(rAz( i , j ,bi,bj))
76     viscA_s(i,j)=min(AlinMax,viscA_s(i,j))
77     ENDIF
78     AlinMin=vg2Min*(rAz( i , j ,bi,bj))
79     viscA_s(i,j)=max(AlinMin,viscA_s(i,j))
80    
81     ELSE
82     viscA_t(i,j)=viscAt
83     viscA_s(i,j)=viscAs
84     ENDIF
85     ENDDO
86     ENDDO
87 adcroft 1.1
88     C - Laplacian and bi-harmonic terms
89     DO j=2-Oly,sNy+Oly-1
90     DO i=2-Olx,sNx+Olx-1
91    
92     uDissip(i,j) =
93 baylor 1.2 & recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)
94 adcroft 1.1 & *recip_dxc(i,j,bi,bj)
95     & *(
96 baylor 1.2 & dyf( i , j ,bi,bj)*dyf( i , j ,bi,bj)
97     & *viscA_t( i , j )*tension( i , j )
98     & -dyf(i-1, j ,bi,bj)*dyf(i-1, j ,bi,bj)
99     & *viscA_t(i-1, j )*tension(i-1, j )
100 adcroft 1.1 & )
101 baylor 1.2 & +recip_dxc(i,j,bi,bj)*recip_dxc(i,j,bi,bj)
102 adcroft 1.1 & *recip_dyg(i,j,bi,bj)
103     & *(
104 baylor 1.2 & dxv( i ,j+1,bi,bj)*dxv( i ,j+1,bi,bj)
105     & *viscA_s(i,j+1)*strain( i ,j+1)
106     & -dxv( i , j ,bi,bj)*dxv( i , j ,bi,bj)
107     & *viscA_s(i, j )*strain( i , j )
108 adcroft 1.1 & )
109    
110     vDissip(i,j) =
111 baylor 1.2 & recip_dyc(i,j,bi,bj)*recip_dyc(i,j,bi,bj)
112 adcroft 1.1 & *recip_dxg(i,j,bi,bj)
113     & *(
114 baylor 1.2 & dyu(i+1, j ,bi,bj)*dyu(i+1, j ,bi,bj)
115     & *viscA_s(i+1,j)*strain(i+1,j)
116     & -dyu( i , j ,bi,bj)*dyu( i , j ,bi,bj)
117     & *viscA_s( i ,j)*strain( i ,j)
118 adcroft 1.1 & )
119 baylor 1.2 & -recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)
120 adcroft 1.1 & *recip_dyc(i,j,bi,bj)
121     & *(
122 baylor 1.2 & dxf( i , j ,bi,bj)*dxf( i , j ,bi,bj)
123     & *viscA_t(i, j )*tension(i, j )
124     & -dxf( i ,j-1,bi,bj)*dxf( i ,j-1,bi,bj)
125     & *viscA_t(i,j-1)*tension(i,j-1)
126 adcroft 1.1 & )
127    
128     ENDDO
129     ENDDO
130    
131     RETURN
132     END

  ViewVC Help
Powered by ViewVC 1.1.22