3 |
|
|
4 |
#include "MOM_VECINV_OPTIONS.h" |
#include "MOM_VECINV_OPTIONS.h" |
5 |
|
|
6 |
SUBROUTINE MOM_VI_U_CORIOLIS( |
SUBROUTINE MOM_VI_U_CORIOLIS( |
7 |
I bi,bj,k, |
I bi,bj,k, |
8 |
I vFld,omega3,hFacZ,r_hFacZ, |
I vFld,omega3,hFacZ,r_hFacZ, |
9 |
O uCoriolisTerm, |
O uCoriolisTerm, |
36 |
_RS epsil |
_RS epsil |
37 |
PARAMETER ( use_original_hFac=.FALSE. ) |
PARAMETER ( use_original_hFac=.FALSE. ) |
38 |
|
|
39 |
epsil = 1. _d -9 |
epsil = 1. _d -9 |
40 |
|
|
41 |
DO J=1-Oly,sNy+Oly-1 |
DO J=1-Oly,sNy+Oly-1 |
42 |
DO I=2-Olx,sNx+Olx |
DO I=2-Olx,sNx+Olx |
43 |
IF ( use_original_hFac ) THEN |
IF ( use_original_hFac ) THEN |
44 |
vBarXY=0.25*( |
vBarXY=0.25*( |
45 |
& vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj) |
& (vFld( i , j )*dxG( i , j ,bi,bj)*_hFacS( i , j ,k,bi,bj) |
46 |
& +vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj) |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*_hFacS(i-1, j ,k,bi,bj)) |
47 |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj) |
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*_hFacS( i ,j+1,k,bi,bj) |
48 |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj)) |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*_hFacS(i-1,j+1,k,bi,bj))) |
49 |
IF (upwindVorticity) THEN |
IF (upwindVorticity) THEN |
50 |
IF (vBarXY.GT.0.) THEN |
IF (vBarXY.GT.0.) THEN |
51 |
vort3u=omega3(I,J)*r_hFacZ(i,j) |
vort3u=omega3(I,J)*r_hFacZ(i,j) |
58 |
ENDIF |
ENDIF |
59 |
ELSEIF ( SadournyCoriolis ) THEN |
ELSEIF ( SadournyCoriolis ) THEN |
60 |
Zm=0.5*( |
Zm=0.5*( |
61 |
& vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj) |
& vFld( i , j )*dxG( i , j ,bi,bj)*_hFacS( i , j ,k,bi,bj) |
62 |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj) ) |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*_hFacS(i-1, j ,k,bi,bj) ) |
63 |
Zp=0.5*( |
Zp=0.5*( |
64 |
& vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj) |
& vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*_hFacS( i ,j+1,k,bi,bj) |
65 |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj) ) |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*_hFacS(i-1,j+1,k,bi,bj) ) |
66 |
IF (upwindVorticity) THEN |
IF (upwindVorticity) THEN |
67 |
IF ( (Zm+Zp) .GT.0.) THEN |
IF ( (Zm+Zp) .GT.0.) THEN |
68 |
vort3u=Zm*r_hFacZ(i, j )*omega3(i, j ) |
vort3u=Zm*r_hFacZ(i, j )*omega3(i, j ) |
78 |
ELSE |
ELSE |
79 |
c-- test a different formulation (relatively to hFac) |
c-- test a different formulation (relatively to hFac) |
80 |
vBarXY=0.5*( |
vBarXY=0.5*( |
81 |
& vFld( i , j )*dxG( i , j ,bi,bj)*hFacZ(i,j) |
& (vFld( i , j )*dxG( i , j ,bi,bj)*hFacZ(i,j) |
82 |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacZ(i,j) |
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacZ(i,j) ) |
83 |
& +vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacZ(i,j+1) |
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacZ(i,j+1) |
84 |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacZ(i,j+1) |
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacZ(i,j+1)) |
85 |
& )/MAX( epsil, hFacZ(i,j)+hFacZ(i,j+1) ) |
& )/MAX( epsil, hFacZ(i,j)+hFacZ(i,j+1) ) |
86 |
IF (upwindVorticity) THEN |
IF (upwindVorticity) THEN |
87 |
IF (vBarXY.GT.0.) THEN |
IF (vBarXY.GT.0.) THEN |
88 |
vort3u=omega3(i,j) |
vort3u=omega3(i,j) |
90 |
vort3u=omega3(i,j+1) |
vort3u=omega3(i,j+1) |
91 |
ENDIF |
ENDIF |
92 |
ELSE |
ELSE |
93 |
vort3u=0.5*(omega3(i,j)+omega3(i,j+1)) |
vort3u=0.5*(omega3(i,j)+omega3(i,j+1)) |
94 |
ENDIF |
ENDIF |
95 |
ENDIF |
ENDIF |
96 |
|
|
97 |
IF (useJamartMomAdv) |
IF (useJamartMomAdv) |
98 |
& vBarXY = vBarXY * 4. _d 0 * hFacW(i,j,k,bi,bj) |
& vBarXY = vBarXY * 4. _d 0 * hFacW(i,j,k,bi,bj) |
99 |
& * MAX( epsil, hFacS( i , j ,k,bi,bj)+hFacS(i-1, j ,k,bi,bj) |
& / MAX( epsil,(_hFacS(i, j ,k,bi,bj)+_hFacS(i-1, j ,k,bi,bj)) |
100 |
& +hFacS( j ,i+1,k,bi,bj)+hFacS(i-1,j+1,k,bi,bj) ) |
& +(_hFacS(i,j+1,k,bi,bj)+_hFacS(i-1,j+1,k,bi,bj)) ) |
101 |
|
|
102 |
uCoriolisTerm(i,j)= |
uCoriolisTerm(i,j)= |
103 |
& +vort3u*vBarXY*recip_dxC(i,j,bi,bj)*_maskW(i,j,k,bi,bj) |
& +vort3u*vBarXY*recip_dxC(i,j,bi,bj)*_maskW(i,j,k,bi,bj) |
104 |
cph *note* put these comments after end of continued line |
cph *note* put these comments after end of continued line |
105 |
cph to ensure TAMC compatibility |
cph to ensure TAMC compatibility |
106 |
C high order vorticity advection term |
C high order vorticity advection term |