|
C $Header$ |
|
|
C $Name$ |
|
1 |
|
|
2 |
#include "MOM_COMMON_OPTIONS.h" |
#include "MOM_COMMON_OPTIONS.h" |
3 |
|
|
6 |
I bi,bj,k, |
I bi,bj,k, |
7 |
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D, |
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D, |
8 |
O harmonic,biharmonic,useVariableViscosity, |
O harmonic,biharmonic,useVariableViscosity, |
9 |
I hDiv,vort3,tension,strain,KE,hfacZ, |
I hDiv,vort3,tension,strain,KE,hFacZ, |
10 |
I myThid) |
I myThid) |
11 |
|
|
12 |
IMPLICIT NONE |
IMPLICIT NONE |
70 |
#include "GRID.h" |
#include "GRID.h" |
71 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
72 |
#include "PARAMS.h" |
#include "PARAMS.h" |
73 |
|
#ifdef ALLOW_EXCH2 |
74 |
|
#include "W2_EXCH2_TOPOLOGY.h" |
75 |
|
#include "W2_EXCH2_PARAMS.h" |
76 |
|
#endif /* ALLOW_EXCH2 */ |
77 |
|
|
78 |
C == Routine arguments == |
C == Routine arguments == |
79 |
INTEGER bi,bj,k |
INTEGER bi,bj,k |
94 |
INTEGER I,J |
INTEGER I,J |
95 |
_RL smag2fac, smag4fac |
_RL smag2fac, smag4fac |
96 |
_RL viscAhRe_max, viscA4Re_max |
_RL viscAhRe_max, viscA4Re_max |
97 |
_RL Alin,Alinmin,grdVrt,grdDiv |
_RL Alin,grdVrt,grdDiv |
98 |
_RL recip_dt,L2,L3,L4,L5,L2rdt,L4rdt |
_RL recip_dt,L2,L3,L4,L5,L2rdt,L4rdt |
99 |
_RL Uscl,U4scl |
_RL Uscl,U4scl |
100 |
_RL viscAh_ZMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL viscAh_ZMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
118 |
_RL viscA4_ZSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL viscA4_ZSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
119 |
_RL viscA4_DSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL viscA4_DSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
120 |
LOGICAL calcLeith,calcSmag |
LOGICAL calcLeith,calcSmag |
121 |
|
LOGICAL northWestCorner, northEastCorner, |
122 |
|
& southWestCorner, southEastCorner |
123 |
|
#ifdef ALLOW_EXCH2 |
124 |
|
INTEGER myTile |
125 |
|
#endif /* ALLOW_EXCH2 */ |
126 |
|
|
127 |
|
C Special stuff for Cubed Sphere |
128 |
|
southWestCorner = .FALSE. |
129 |
|
southEastCorner = .FALSE. |
130 |
|
northWestCorner = .FALSE. |
131 |
|
northEastCorner = .FALSE. |
132 |
|
IF (useCubedSphereExchange) THEN |
133 |
|
#ifdef ALLOW_EXCH2 |
134 |
|
myTile = W2_myTileList(bi) |
135 |
|
IF ( exch2_isWedge(myTile) .EQ. 1 .AND. |
136 |
|
& exch2_isSedge(myTile) .EQ. 1 ) THEN |
137 |
|
southWestCorner = .TRUE. |
138 |
|
ENDIF |
139 |
|
IF ( exch2_isEedge(myTile) .EQ. 1 .AND. |
140 |
|
& exch2_isSedge(myTile) .EQ. 1 ) THEN |
141 |
|
southEastCorner = .TRUE. |
142 |
|
ENDIF |
143 |
|
IF ( exch2_isEedge(myTile) .EQ. 1 .AND. |
144 |
|
& exch2_isNedge(myTile) .EQ. 1 ) THEN |
145 |
|
northEastCorner = .TRUE. |
146 |
|
ENDIF |
147 |
|
IF ( exch2_isWedge(myTile) .EQ. 1 .AND. |
148 |
|
& exch2_isNedge(myTile) .EQ. 1 ) THEN |
149 |
|
northWestCorner = .TRUE. |
150 |
|
ENDIF |
151 |
|
#else |
152 |
|
southWestCorner = .TRUE. |
153 |
|
southEastCorner = .TRUE. |
154 |
|
northWestCorner = .TRUE. |
155 |
|
northEastCorner = .TRUE. |
156 |
|
#endif /* ALLOW_EXCH2 */ |
157 |
|
ENDIF |
158 |
|
|
159 |
useVariableViscosity= |
useVariableViscosity= |
160 |
& (viscAhGrid.NE.0.) |
& (viscAhGrid.NE.0.) |
227 |
CCCCCCCCCCCCCCC Divergence Point CalculationsCCCCCCCCCCCCCCCCCCCC |
CCCCCCCCCCCCCCC Divergence Point CalculationsCCCCCCCCCCCCCCCCCCCC |
228 |
|
|
229 |
C These are (powers of) length scales |
C These are (powers of) length scales |
230 |
L2=2. _d 0/((recip_DXF(I,J,bi,bj)**2+recip_DYF(I,J,bi,bj)**2)) |
IF (useAreaViscLength) THEN |
231 |
|
L2=rA(i,j,bi,bj) |
232 |
|
ELSE |
233 |
|
L2=2. _d 0/((recip_DXF(I,J,bi,bj)**2+recip_DYF(I,J,bi,bj)**2)) |
234 |
|
ENDIF |
235 |
L3=(L2**1.5) |
L3=(L2**1.5) |
236 |
L4=(L2**2) |
L4=(L2**2) |
237 |
L5=(L2**2.5) |
L5=(L2**2.5) |
238 |
|
|
239 |
L2rdt=0.25 _d 0*recip_dt*L2 |
L2rdt=0.25 _d 0*recip_dt*L2 |
240 |
|
|
241 |
L4rdt=recip_dt/( 6. _d 0*(recip_DXF(I,J,bi,bj)**4 |
IF (useAreaViscLength) THEN |
242 |
|
L4rdt=0.125 _d 0*recip_dt*rA(i,j,bi,bj)**2 |
243 |
|
ELSE |
244 |
|
L4rdt=recip_dt/( 6. _d 0*(recip_DXF(I,J,bi,bj)**4 |
245 |
& +recip_DYF(I,J,bi,bj)**4) |
& +recip_DYF(I,J,bi,bj)**4) |
246 |
& +8. _d 0*((recip_DXF(I,J,bi,bj) |
& +8. _d 0*((recip_DXF(I,J,bi,bj) |
247 |
& *recip_DYF(I,J,bi,bj))**2) ) |
& *recip_DYF(I,J,bi,bj))**2) ) |
248 |
|
ENDIF |
249 |
|
|
250 |
C Velocity Reynolds Scale |
C Velocity Reynolds Scale |
251 |
Uscl=sqrt(KE(i,j)*L2)*viscAhRe_max |
Uscl=sqrt(KE(i,j)*L2)*viscAhRe_max |
342 |
|
|
343 |
CCCCCCCCCCCCC Vorticity Point CalculationsCCCCCCCCCCCCCCCCCC |
CCCCCCCCCCCCC Vorticity Point CalculationsCCCCCCCCCCCCCCCCCC |
344 |
C These are (powers of) length scales |
C These are (powers of) length scales |
345 |
L2=2. _d 0/((recip_DXV(I,J,bi,bj)**2+recip_DYU(I,J,bi,bj)**2)) |
IF (useAreaViscLength) THEN |
346 |
|
L2=rAz(i,j,bi,bj) |
347 |
|
ELSE |
348 |
|
L2=2. _d 0/((recip_DXV(I,J,bi,bj)**2+recip_DYU(I,J,bi,bj)**2)) |
349 |
|
ENDIF |
350 |
|
|
351 |
L3=(L2**1.5) |
L3=(L2**1.5) |
352 |
L4=(L2**2) |
L4=(L2**2) |
353 |
L5=(L2**2.5) |
L5=(L2**2.5) |
354 |
|
|
355 |
L2rdt=0.25 _d 0*recip_dt*L2 |
L2rdt=0.25 _d 0*recip_dt*L2 |
356 |
L4rdt=recip_dt/ |
IF (useAreaViscLength) THEN |
357 |
& ( 6. _d 0*(recip_DXF(I,J,bi,bj)**4+recip_DYF(I,J,bi,bj)**4) |
L4rdt=0.125 _d 0*recip_dt*RaZ(i,j,bi,bj)**2 |
358 |
& +8. _d 0*((recip_DXF(I,J,bi,bj)*recip_DYF(I,J,bi,bj))**2)) |
ELSE |
359 |
|
L4rdt=recip_dt/ |
360 |
|
& ( 6. _d 0*(recip_DXV(I,J,bi,bj)**4+recip_DYU(I,J,bi,bj)**4) |
361 |
|
& +8. _d 0*((recip_DXV(I,J,bi,bj)*recip_DYU(I,J,bi,bj))**2)) |
362 |
|
ENDIF |
363 |
|
|
364 |
C Velocity Reynolds Scale |
C Velocity Reynolds Scale |
365 |
Uscl=sqrt(0.25 _d 0*(KE(i,j)+KE(i,j+1)+KE(i+1,j)+KE(i+1,j+1)) |
Uscl=sqrt(0.25 _d 0*(KE(i,j)+KE(i,j+1)+KE(i+1,j)+KE(i+1,j+1)) |