39 |
INTEGER iMin,iMax,jMin,jMax |
INTEGER iMin,iMax,jMin,jMax |
40 |
INTEGER i,j |
INTEGER i,j |
41 |
_RL gWtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL gWtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
42 |
|
_RL tmpFac, nh_Fac, igwFac |
43 |
CEOP |
CEOP |
44 |
|
|
45 |
iMin = 1 |
iMin = 1 |
47 |
jMin = 1 |
jMin = 1 |
48 |
jMax = sNy |
jMax = sNy |
49 |
|
|
50 |
|
igwFac = 0. |
51 |
|
IF ( implicitIntGravWave ) igwFac = horiVertRatio*horiVertRatio |
52 |
|
|
53 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
54 |
|
|
55 |
C tile loops : |
C tile loops : |
56 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
57 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
58 |
|
|
59 |
|
IF ( nonHydrostatic ) THEN |
60 |
|
nh_Fac = 0. |
61 |
|
IF ( nh_Am2.NE.0. ) nh_Fac = 1. _d 0 / nh_Am2 |
62 |
|
|
63 |
|
k = 1 |
64 |
|
DO j=1-Oly,sNy+Oly |
65 |
|
DO i=1-Olx,sNx+Olx |
66 |
|
gW(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
67 |
|
ENDDO |
68 |
|
ENDDO |
69 |
|
|
70 |
DO k=2,Nr |
DO k=2,Nr |
71 |
|
|
72 |
DO j=jMin,jMax |
C apply mask to gW and keep a copy of wVel in gW: |
73 |
DO i=iMin,iMax |
DO j=1-Oly,sNy+Oly |
74 |
gWtmp(i,j) = gW(i,j,k,bi,bj) |
DO i=1-Olx,sNx+Olx |
75 |
|
gWtmp(i,j) = gW(i,j,k,bi,bj) |
76 |
& *maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj) |
& *maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj) |
77 |
|
gW(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
78 |
ENDDO |
ENDDO |
79 |
ENDDO |
ENDDO |
80 |
|
C Step forward vertical velocity |
81 |
C Step forward vertical velocity (and keep a copy in gW) |
tmpFac = nh_Fac + igwFac*dBdrRef(k)*deltaTMom*dTtracerLev(k) |
82 |
|
IF (tmpFac.GT.0. ) tmpFac = 1. _d 0 / tmpFac |
83 |
DO j=jMin,jMax |
DO j=jMin,jMax |
84 |
DO i=iMin,iMax |
DO i=iMin,iMax |
|
gW(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
|
85 |
wVel(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
wVel(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
86 |
& + deltaTmom*nh_Am2*gWtmp(i,j) |
& + deltaTmom*tmpFac*gWtmp(i,j) |
87 |
ENDDO |
ENDDO |
88 |
ENDDO |
ENDDO |
89 |
|
|
103 |
ENDIF |
ENDIF |
104 |
#endif /* ALLOW_OBCS */ |
#endif /* ALLOW_OBCS */ |
105 |
|
|
106 |
|
ELSEIF ( implicitIntGravWave ) THEN |
107 |
|
C keep a copy of wVel in gW: |
108 |
|
DO k=1,Nr |
109 |
|
DO j=1-Oly,sNy+Oly |
110 |
|
DO i=1-Olx,sNx+Olx |
111 |
|
gW(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) |
112 |
|
ENDDO |
113 |
|
ENDDO |
114 |
|
ENDDO |
115 |
|
|
116 |
|
C- End if nonHydrostatic / elseif implicitIntGravWave |
117 |
|
ENDIF |
118 |
|
|
119 |
C- End of bi,bj loops |
C- End of bi,bj loops |
120 |
ENDDO |
ENDDO |
121 |
ENDDO |
ENDDO |