67 |
C near which d(phi)/dx is small. |
C near which d(phi)/dx is small. |
68 |
C |
C |
69 |
C JBG 3/24/03: Fixed phase speed at western boundary (as suggested by |
C JBG 3/24/03: Fixed phase speed at western boundary (as suggested by |
70 |
C Dale Durran's MWR paper). Fixed value (in m/s) is |
C Dale Durran's MWR paper). Fixed value (in m/s) is |
71 |
C passed in as variable CFIX in data.obcs. |
C passed in as variable CFIX in data.obcs. |
72 |
C |
C |
73 |
C JBG 4/10/03: allow choice of Orlanski or fixed wavespeed (by means of new |
C JBG 4/10/03: allow choice of Orlanski or fixed wavespeed (by means of new |
121 |
CL=CMAX |
CL=CMAX |
122 |
ENDIF |
ENDIF |
123 |
IF (useFixedCWest) THEN |
IF (useFixedCWest) THEN |
124 |
C Fixed phase speed (ignoring all of that painstakingly |
C Fixed phase speed (ignoring all of that painstakingly |
125 |
C saved data...) |
C saved data...) |
126 |
CVEL_UW(J,K,bi,bj) = CFIX |
CVEL_UW(J,K,bi,bj) = CFIX |
127 |
ELSE |
ELSE |
128 |
CVEL_UW(J,K,bi,bj) = f1*(CL*dxF(I_obc+2,J,bi,bj)/deltaT |
CVEL_UW(J,K,bi,bj) = f1*(CL*dxF(I_obc+2,J,bi,bj)/deltaT |
147 |
CL=CMAX |
CL=CMAX |
148 |
ENDIF |
ENDIF |
149 |
IF (useFixedCWest) THEN |
IF (useFixedCWest) THEN |
150 |
C Fixed phase speed (ignoring all of that painstakingly |
C Fixed phase speed (ignoring all of that painstakingly |
151 |
C saved data...) |
C saved data...) |
152 |
CVEL_VW(J,K,bi,bj) = CFIX |
CVEL_VW(J,K,bi,bj) = CFIX |
153 |
ELSE |
ELSE |
154 |
CVEL_VW(J,K,bi,bj) = f1*(CL*dxV(I_obc+2,J,bi,bj)/deltaT |
CVEL_VW(J,K,bi,bj) = f1*(CL*dxV(I_obc+2,J,bi,bj)/deltaT |
173 |
CL=CMAX |
CL=CMAX |
174 |
ENDIF |
ENDIF |
175 |
IF (useFixedCWest) THEN |
IF (useFixedCWest) THEN |
176 |
C Fixed phase speed (ignoring all of that painstakingly |
C Fixed phase speed (ignoring all of that painstakingly |
177 |
C saved data...) |
C saved data...) |
178 |
CVEL_TW(J,K,bi,bj) = CFIX |
CVEL_TW(J,K,bi,bj) = CFIX |
179 |
ELSE |
ELSE |
180 |
CVEL_TW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT |
CVEL_TW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT |
199 |
CL=CMAX |
CL=CMAX |
200 |
ENDIF |
ENDIF |
201 |
IF (useFixedCWest) THEN |
IF (useFixedCWest) THEN |
202 |
C Fixed phase speed (ignoring all of that painstakingly |
C Fixed phase speed (ignoring all of that painstakingly |
203 |
C saved data...) |
C saved data...) |
204 |
CVEL_SW(J,K,bi,bj) = CFIX |
CVEL_SW(J,K,bi,bj) = CFIX |
205 |
ELSE |
ELSE |
206 |
CVEL_SW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT |
CVEL_SW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT |
211 |
& CVEL_SW(J,K,bi,bj)*(deltaT*recip_dxC(I_obc+1,J,bi,bj))* |
& CVEL_SW(J,K,bi,bj)*(deltaT*recip_dxC(I_obc+1,J,bi,bj))* |
212 |
& (ab1*(salt(I_obc+1,J,K,bi,bj)-salt(I_obc,J,K,bi,bj))+ |
& (ab1*(salt(I_obc+1,J,K,bi,bj)-salt(I_obc,J,K,bi,bj))+ |
213 |
& ab2*(SW_STORE_1(J,K,bi,bj)-SW_STORE_4(J,K,bi,bj))) |
& ab2*(SW_STORE_1(J,K,bi,bj)-SW_STORE_4(J,K,bi,bj))) |
|
C wVel |
|
214 |
#ifdef ALLOW_NONHYDROSTATIC |
#ifdef ALLOW_NONHYDROSTATIC |
215 |
IF ((WW_STORE_2(J,K,bi,bj).eq.0.).and. |
IF ( nonHydrostatic ) THEN |
216 |
& (WW_STORE_3(J,K,bi,bj).eq.0.)) THEN |
C wVel |
217 |
CL=0. |
IF ((WW_STORE_2(J,K,bi,bj).eq.0.).and. |
218 |
ELSE |
& (WW_STORE_3(J,K,bi,bj).eq.0.)) THEN |
219 |
CL=(wVel(I_obc+1,J,K,bi,bj)-WW_STORE_1(J,K,bi,bj))/ |
CL=0. |
220 |
& (ab1*WW_STORE_2(J,K,bi,bj)+ab2*WW_STORE_3(J,K,bi,bj)) |
ELSE |
221 |
ENDIF |
CL=(wVel(I_obc+1,J,K,bi,bj)-WW_STORE_1(J,K,bi,bj))/ |
222 |
IF (CL.lt.0.) THEN |
& (ab1*WW_STORE_2(J,K,bi,bj)+ab2*WW_STORE_3(J,K,bi,bj)) |
223 |
CL=0. |
ENDIF |
224 |
ELSEIF (CL.gt.CMAX) THEN |
IF (CL.lt.0.) THEN |
225 |
CL=CMAX |
CL=0. |
226 |
ENDIF |
ELSEIF (CL.gt.CMAX) THEN |
227 |
|
CL=CMAX |
228 |
|
ENDIF |
229 |
IF (useFixedCWest) THEN |
IF (useFixedCWest) THEN |
230 |
C Fixed phase speed (ignoring all of that painstakingly |
C Fixed phase speed (ignoring all of that painstakingly |
231 |
C saved data...) |
C saved data...) |
232 |
CVEL_WW(J,K,bi,bj) = CFIX |
CVEL_WW(J,K,bi,bj) = CFIX |
233 |
ELSE |
ELSE |
234 |
CVEL_WW(J,K,bi,bj)=f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT) |
CVEL_WW(J,K,bi,bj)=f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT) |
235 |
& + f2*CVEL_WW(J,K,bi,bj) |
& + f2*CVEL_WW(J,K,bi,bj) |
236 |
ENDIF |
ENDIF |
237 |
C update OBC to next timestep |
C update OBC to next timestep |
238 |
OBWw(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj)+ |
OBWw(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj)+ |
239 |
& CVEL_WW(J,K,bi,bj)*(deltaT*recip_dxC(I_obc+1,J,bi,bj))* |
& CVEL_WW(J,K,bi,bj)*(deltaT*recip_dxC(I_obc+1,J,bi,bj))* |
240 |
& (ab1*(wVel(I_obc+1,J,K,bi,bj)-wVel(I_obc,J,K,bi,bj))+ |
& (ab1*(wVel(I_obc+1,J,K,bi,bj)-wVel(I_obc,J,K,bi,bj))+ |
241 |
& ab2*(WW_STORE_1(J,K,bi,bj)-WW_STORE_4(J,K,bi,bj))) |
& ab2*(WW_STORE_1(J,K,bi,bj)-WW_STORE_4(J,K,bi,bj))) |
242 |
#endif |
ENDIF |
243 |
|
#endif /* ALLOW_NONHYDROSTATIC */ |
244 |
C update/save storage arrays |
C update/save storage arrays |
245 |
C uVel |
C uVel |
246 |
C copy t-1 to t-2 array |
C copy t-1 to t-2 array |
268 |
TW_STORE_4(J,K,bi,bj)=theta(I_obc,J,K,bi,bj) |
TW_STORE_4(J,K,bi,bj)=theta(I_obc,J,K,bi,bj) |
269 |
c Salinity |
c Salinity |
270 |
C copy t-1 to t-2 array |
C copy t-1 to t-2 array |
271 |
SW_STORE_3(J,K,bi,bj)=SW_STORE_2(J,K,bi,bj) |
SW_STORE_3(J,K,bi,bj)=SW_STORE_2(J,K,bi,bj) |
272 |
C copy (current time) t to t-1 arrays |
C copy (current time) t to t-1 arrays |
273 |
SW_STORE_2(J,K,bi,bj)=salt(I_obc+2,J,K,bi,bj) - |
SW_STORE_2(J,K,bi,bj)=salt(I_obc+2,J,K,bi,bj) - |
274 |
& salt(I_obc+1,J,K,bi,bj) |
& salt(I_obc+1,J,K,bi,bj) |
275 |
SW_STORE_1(J,K,bi,bj)=salt(I_obc+1,J,K,bi,bj) |
SW_STORE_1(J,K,bi,bj)=salt(I_obc+1,J,K,bi,bj) |
276 |
SW_STORE_4(J,K,bi,bj)=salt(I_obc,J,K,bi,bj) |
SW_STORE_4(J,K,bi,bj)=salt(I_obc,J,K,bi,bj) |
|
C wVel |
|
277 |
#ifdef ALLOW_NONHYDROSTATIC |
#ifdef ALLOW_NONHYDROSTATIC |
278 |
|
IF ( nonHydrostatic ) THEN |
279 |
|
C wVel |
280 |
C copy t-1 to t-2 array |
C copy t-1 to t-2 array |
281 |
WW_STORE_3(J,K,bi,bj)=WW_STORE_2(J,K,bi,bj) |
WW_STORE_3(J,K,bi,bj)=WW_STORE_2(J,K,bi,bj) |
282 |
C copy (current time) t to t-1 arrays |
C copy (current time) t to t-1 arrays |
284 |
& wVel(I_obc+1,J,K,bi,bj) |
& wVel(I_obc+1,J,K,bi,bj) |
285 |
WW_STORE_1(J,K,bi,bj)=wVel(I_obc+1,J,K,bi,bj) |
WW_STORE_1(J,K,bi,bj)=wVel(I_obc+1,J,K,bi,bj) |
286 |
WW_STORE_4(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj) |
WW_STORE_4(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj) |
287 |
#endif |
ENDIF |
288 |
|
#endif /* ALLOW_NONHYDROSTATIC */ |
289 |
ENDIF |
ENDIF |
290 |
ENDDO |
ENDDO |
291 |
ENDDO |
ENDDO |