1 |
C $Header$ |
C $Header$ |
2 |
C $Name$ |
C $Name$ |
3 |
|
|
4 |
#include "CPP_OPTIONS.h" |
#include "MOM_VECINV_OPTIONS.h" |
5 |
|
|
6 |
SUBROUTINE MOM_VI_V_VERTSHEAR( |
SUBROUTINE MOM_VI_V_VERTSHEAR( |
7 |
I bi,bj,K, |
I bi,bj,K, |
48 |
mask_Km1=1. |
mask_Km1=1. |
49 |
IF (K.EQ.1) mask_Km1=0. |
IF (K.EQ.1) mask_Km1=0. |
50 |
|
|
51 |
DO J=1-Oly,sNy+Oly |
DO J=2-Oly,sNy+Oly |
52 |
DO I=2-Olx,sNx+Olx |
DO I=1-Olx,sNx+Olx |
53 |
|
|
54 |
vmask_K=_maskS(i,j,k,bi,bj) |
c vmask_K=_maskS(i,j,k,bi,bj) |
55 |
|
|
56 |
C barZ( barY( W ) ) |
C barZ( barY( W ) ) |
57 |
c wBarYm=0.5*(wFld(I,J,K,bi,bj)+wFld(I,J-1,K,bi,bj)) |
c wBarYm=0.5*(wFld(I,J,K,bi,bj)+wFld(I,J-1,K,bi,bj)) |
59 |
c & *mask_Kp1 |
c & *mask_Kp1 |
60 |
|
|
61 |
C Transport at interface k |
C Transport at interface k |
62 |
wBarYm=0.5*(wFld(I,J,K,bi,bj)*rA(i,j,bi,bj) |
wBarYm=0.5*( |
63 |
& +wFld(I,J-1,K,bi,bj)*rA(i,j-1,bi,bj)) |
& wFld(I,J,K,bi,bj)*rA(i,j,bi,bj)*maskC(i,j,Km1,bi,bj) |
64 |
|
& +wFld(I,J-1,K,bi,bj)*rA(i,j-1,bi,bj)*maskC(i,j-1,Km1,bi,bj) |
65 |
C Transport at interface k+1 |
& )*mask_Km1 |
66 |
wBarYp=0.5*(wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj) |
|
67 |
& +wFld(I,J-1,Kp1,bi,bj)*rA(i,j-1,bi,bj))*mask_Kp1 |
C Transport at interface k+1 (here wFld is already masked) |
68 |
|
wBarYp=0.5*( |
69 |
|
& wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj) |
70 |
|
& +wFld(I,J-1,Kp1,bi,bj)*rA(i,j-1,bi,bj) |
71 |
|
& )*mask_Kp1 |
72 |
|
|
73 |
C delta_Z( V ) @ interface k |
C delta_Z( V ) @ interface k |
74 |
vmask_Km1=mask_Km1*vmask_K |
c vmask_Km1=mask_Km1*maskS(i,j,Km1,bi,bj) |
75 |
vZm=(mask_Km1*vFld(I,J,Km1,bi,bj)-vFld(I,J,K,bi,bj)) |
vZm=(mask_Km1*vFld(I,J,Km1,bi,bj)-vFld(I,J,K,bi,bj)) |
76 |
c2 & *recip_dRC(K) |
c2 & *recip_dRC(K) |
77 |
IF (freeslip1) vZm=vZm*vmask_Km1 |
c IF (freeslip1) vZm=vZm*vmask_Km1 |
78 |
IF (noslip1.AND.vmask_Km1.EQ.0.) vZm=vZm*2. |
c IF (noslip1.AND.vmask_Km1.EQ.0.) vZm=vZm*2. |
79 |
|
|
80 |
C delta_Z( V ) @ interface k+1 |
C delta_Z( V ) @ interface k+1 |
81 |
vmask_Kp1=mask_Kp1*vmask_K |
c vmask_Kp1=mask_Kp1*maskS(i,j,Kp1,bi,bj) |
82 |
vZp=(vFld(I,J,K,bi,bj)-mask_Kp1*vFld(I,J,Kp1,bi,bj)) |
vZp=(vFld(I,J,K,bi,bj)-mask_Kp1*vFld(I,J,Kp1,bi,bj)) |
83 |
c2 & *recip_dRC(Kp1) |
c2 & *recip_dRC(Kp1) |
84 |
IF (freeslipK) vZp=vZp*vmask_Kp1 |
c IF (freeslipK) vZp=vZp*vmask_Kp1 |
85 |
IF (noslipK.AND.vmask_Kp1.EQ.0.) vZp=vZp*2. |
c IF (noslipK.AND.vmask_Kp1.EQ.0.) vZp=vZp*2. |
86 |
|
|
87 |
c1 IF (upwindShear) THEN |
c1 IF (upwindShear) THEN |
88 |
c1 wBarYZ=0.5*( wBarXm + wBarXp ) |
c1 wBarYZ=0.5*( wBarXm + wBarXp ) |