9 |
C !ROUTINE: CALC_GW |
C !ROUTINE: CALC_GW |
10 |
C !INTERFACE: |
C !INTERFACE: |
11 |
SUBROUTINE CALC_GW( |
SUBROUTINE CALC_GW( |
12 |
I myTime, myIter, myThid ) |
I KappaRU, KappaRV, |
13 |
|
I myTime, myIter, myThid ) |
14 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
15 |
C *==========================================================* |
C *==========================================================* |
16 |
C | S/R CALC_GW |
C | S/R CALC_GW |
35 |
|
|
36 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
37 |
C == Routine arguments == |
C == Routine arguments == |
38 |
|
C KappaRU:: vertical viscosity at U points |
39 |
|
C KappaRV:: vertical viscosity at V points |
40 |
C myTime :: Current time in simulation |
C myTime :: Current time in simulation |
41 |
C myIter :: Current iteration number in simulation |
C myIter :: Current iteration number in simulation |
42 |
C myThid :: Thread number for this instance of the routine. |
C myThid :: Thread number for this instance of the routine. |
43 |
|
_RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
44 |
|
_RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
45 |
_RL myTime |
_RL myTime |
46 |
INTEGER myIter |
INTEGER myIter |
47 |
INTEGER myThid |
INTEGER myThid |
74 |
_RS recip_hFacCtmp |
_RS recip_hFacCtmp |
75 |
_RL slipSideFac |
_RL slipSideFac |
76 |
_RL tmp_VbarZ, tmp_UbarZ, tmp_WbarZ |
_RL tmp_VbarZ, tmp_UbarZ, tmp_WbarZ |
77 |
|
_RL vischere |
78 |
|
_RL visc4here |
79 |
_RL Half |
_RL Half |
80 |
PARAMETER(Half=0.5D0) |
PARAMETER(Half=0.5D0) |
81 |
CEOP |
CEOP |
215 |
& +_hFacS(I,J, K ,bi,bj)*vVel( I ,J, K ,bi,bj)) |
& +_hFacS(I,J, K ,bi,bj)*vVel( I ,J, K ,bi,bj)) |
216 |
Flx_NS(I,J,bi,bj)= |
Flx_NS(I,J,bi,bj)= |
217 |
& tmp_VbarZ*Half*(wVel(I,J,K,bi,bj)+wVel(I,J-1,K,bi,bj)) |
& tmp_VbarZ*Half*(wVel(I,J,K,bi,bj)+wVel(I,J-1,K,bi,bj)) |
218 |
& -viscAhW*_recip_dyC(I,J,bi,bj) |
& -viscAh_W(I,J,K,bi,bj)*_recip_dyC(I,J,bi,bj) |
219 |
& *(hFacStmp*(wVel(I,J,K,bi,bj)-wVel(I,J-1,K,bi,bj)) |
& *(hFacStmp*(wVel(I,J,K,bi,bj)-wVel(I,J-1,K,bi,bj)) |
220 |
& +(1. _d 0 - hFacStmp)*(1. _d 0 - slipSideFac) |
& +(1. _d 0 - hFacStmp)*(1. _d 0 - slipSideFac) |
221 |
& *wVel(I,J,K,bi,bj)) |
& *wVel(I,J,K,bi,bj)) |
222 |
& +viscA4W*_recip_dyC(I,J,bi,bj)*(del2w(I,J)-del2w(I,J-1)) |
& +viscA4_W(I,J,K,bi,bj) |
223 |
|
& *_recip_dyC(I,J,bi,bj)*(del2w(I,J)-del2w(I,J-1)) |
224 |
#ifdef ISOTROPIC_COS_SCALING |
#ifdef ISOTROPIC_COS_SCALING |
225 |
#ifdef COSINEMETH_III |
#ifdef COSINEMETH_III |
226 |
& *sqCosFacV(j,bi,bj) |
& *sqCosFacV(j,bi,bj) |
248 |
& +_hFacW(I,J, K ,bi,bj)*uVel( I ,J, K ,bi,bj)) |
& +_hFacW(I,J, K ,bi,bj)*uVel( I ,J, K ,bi,bj)) |
249 |
Flx_EW(I,J,bi,bj)= |
Flx_EW(I,J,bi,bj)= |
250 |
& tmp_UbarZ*Half*(wVel(I,J,K,bi,bj)+wVel(I-1,J,K,bi,bj)) |
& tmp_UbarZ*Half*(wVel(I,J,K,bi,bj)+wVel(I-1,J,K,bi,bj)) |
251 |
& -viscAhW*_recip_dxC(I,J,bi,bj) |
& -viscAh_W(I,J,K,bi,bj)*_recip_dxC(I,J,bi,bj) |
252 |
& *(hFacWtmp*(wVel(I,J,K,bi,bj)-wVel(I-1,J,K,bi,bj)) |
& *(hFacWtmp*(wVel(I,J,K,bi,bj)-wVel(I-1,J,K,bi,bj)) |
253 |
& +(1 _d 0 - hFacWtmp)*(1 _d 0 - slipSideFac) |
& +(1 _d 0 - hFacWtmp)*(1 _d 0 - slipSideFac) |
254 |
& *wVel(I,J,K,bi,bj) ) |
& *wVel(I,J,K,bi,bj) ) |
255 |
& +viscA4W*_recip_dxC(I,J,bi,bj)*(del2w(I,J)-del2w(I-1,J)) |
& +viscA4_W(I,J,K,bi,bj) |
256 |
|
& *_recip_dxC(I,J,bi,bj)*(del2w(I,J)-del2w(I-1,J)) |
257 |
#ifdef COSINEMETH_III |
#ifdef COSINEMETH_III |
258 |
& *sqCosFacU(j,bi,bj) |
& *sqCosFacU(j,bi,bj) |
259 |
#else |
#else |
270 |
C Flux on Lower face |
C Flux on Lower face |
271 |
DO J=jMin,jMax |
DO J=jMin,jMax |
272 |
DO I=iMin,iMax |
DO I=iMin,iMax |
273 |
|
C Interpolate vert viscosity to W points |
274 |
|
vischere=0.125*(kappaRU(I,J,K) +kappaRU(I+1,J,K) |
275 |
|
& +kappaRU(I,J,Kp1)+kappaRU(I+1,J,Kp1) |
276 |
|
& +kappaRV(I,J,K) +kappaRV(I,J+1,K) |
277 |
|
& +kappaRV(I,J,Kp1)+kappaRV(I,J+1,Kp1)) |
278 |
Flx_Up(I,J,bi,bj)=Flx_Dn(I,J,bi,bj) |
Flx_Up(I,J,bi,bj)=Flx_Dn(I,J,bi,bj) |
279 |
tmp_WbarZ=Half*(wVel(I,J,K,bi,bj) |
tmp_WbarZ=Half*(wVel(I,J,K,bi,bj) |
280 |
& +wOverRide*wVel(I,J,Kp1,bi,bj)) |
& +wOverRide*wVel(I,J,Kp1,bi,bj)) |
281 |
Flx_Dn(I,J,bi,bj)= |
Flx_Dn(I,J,bi,bj)= |
282 |
& tmp_WbarZ*tmp_WbarZ |
& tmp_WbarZ*tmp_WbarZ |
283 |
& -viscAr*recip_drF(K) |
& -vischere*recip_drF(K) |
284 |
& *( wVel(I,J,K,bi,bj)-wOverRide*wVel(I,J,Kp1,bi,bj) ) |
& *( wVel(I,J,K,bi,bj)-wOverRide*wVel(I,J,Kp1,bi,bj) ) |
285 |
ENDDO |
ENDDO |
286 |
ENDDO |
ENDDO |