172 & LBi, UBi, LBj, UBj, &
173 & IminS, ImaxS, JminS, JmaxS, &
179 & pmask, rmask, umask, vmask, &
182 & pmask_wet, pmask_full, &
183 & rmask_wet, rmask_full, &
184 & umask_wet, umask_full, &
185 & vmask_wet, vmask_full, &
190#if (defined UV_COR && !defined SOLVE3D) || defined step2d_coriolis
194 & om_u, om_v, on_u, on_v, omn, pm, pn, &
195#if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
198#if defined UV_VIS2 && !defined SOLVE3D
199 & pmon_r, pnom_r, pmon_p, pnom_p, &
200 & om_r, on_r, om_p, on_p, &
201 & visc2_p, visc2_r, &
203#if defined SEDIMENT && defined SED_MORPH
206#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
210 & sustr, svstr, bustr, bvstr, &
218 & du_avg1, du_avg2, &
219 & dv_avg1, dv_avg2, &
222 & rufrc_bak, rvfrc_bak, &
225 & diau2wrk, diav2wrk, &
226 & diarubar, diarvbar, &
228 & diau2int, diav2int, &
229 & diarufrc, diarvfrc, &
232#if defined NESTING && !defined SOLVE3D
233 & du_flux, dv_flux, &
240 integer,
intent(in ) :: ng, tile
241 integer,
intent(in ) :: LBi, UBi, LBj, UBj
242 integer,
intent(in ) :: IminS, ImaxS, JminS, JmaxS
243 integer,
intent(in ) :: kstp, knew
245 integer,
intent(in ) :: nstp, nnew
250 real(r8),
intent(in ) :: pmask(LBi:,LBj:)
251 real(r8),
intent(in ) :: rmask(LBi:,LBj:)
252 real(r8),
intent(in ) :: umask(LBi:,LBj:)
253 real(r8),
intent(in ) :: vmask(LBi:,LBj:)
255# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
256 real(r8),
intent(in ) :: fomn(LBi:,LBj:)
258# if defined SEDIMENT && defined SED_MORPH
259 real(r8),
intent(inout) :: h(LBi:,LBj:)
261 real(r8),
intent(in ) :: h(LBi:,LBj:)
263 real(r8),
intent(in ) :: om_u(LBi:,LBj:)
264 real(r8),
intent(in ) :: om_v(LBi:,LBj:)
265 real(r8),
intent(in ) :: on_u(LBi:,LBj:)
266 real(r8),
intent(in ) :: on_v(LBi:,LBj:)
267 real(r8),
intent(in ) :: omn(LBi:,LBj:)
268 real(r8),
intent(in ) :: pm(LBi:,LBj:)
269 real(r8),
intent(in ) :: pn(LBi:,LBj:)
270# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
271 real(r8),
intent(in ) :: dndx(LBi:,LBj:)
272 real(r8),
intent(in ) :: dmde(LBi:,LBj:)
274# if defined UV_VIS2 && !defined SOLVE3D
275 real(r8),
intent(in ) :: pmon_r(LBi:,LBj:)
276 real(r8),
intent(in ) :: pnom_r(LBi:,LBj:)
277 real(r8),
intent(in ) :: pmon_p(LBi:,LBj:)
278 real(r8),
intent(in ) :: pnom_p(LBi:,LBj:)
279 real(r8),
intent(in ) :: om_r(LBi:,LBj:)
280 real(r8),
intent(in ) :: on_r(LBi:,LBj:)
281 real(r8),
intent(in ) :: om_p(LBi:,LBj:)
282 real(r8),
intent(in ) :: on_p(LBi:,LBj:)
283 real(r8),
intent(in ) :: visc2_p(LBi:,LBj:)
284 real(r8),
intent(in ) :: visc2_r(LBi:,LBj:)
286# if defined SEDIMENT && defined SED_MORPH
287 real(r8),
intent(in ) :: bed_thick(LBi:,LBj:,:)
289# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
290 real(r8),
intent(in ) :: eq_tide(LBi:,LBj:)
293 real(r8),
intent(in ) :: sustr(LBi:,LBj:)
294 real(r8),
intent(in ) :: svstr(LBi:,LBj:)
295 real(r8),
intent(in ) :: bustr(LBi:,LBj:)
296 real(r8),
intent(in ) :: bvstr(LBi:,LBj:)
298 real(r8),
intent(in ) :: Pair(LBi:,LBj:)
302 real(r8),
intent(in ) :: rhoA(LBi:,LBj:)
303 real(r8),
intent(in ) :: rhoS(LBi:,LBj:)
305 real(r8),
intent(inout) :: DU_avg1(LBi:,LBj:)
306 real(r8),
intent(inout) :: DU_avg2(LBi:,LBj:)
307 real(r8),
intent(inout) :: DV_avg1(LBi:,LBj:)
308 real(r8),
intent(inout) :: DV_avg2(LBi:,LBj:)
309 real(r8),
intent(inout) :: Zt_avg1(LBi:,LBj:)
310 real(r8),
intent(inout) :: rufrc(LBi:,LBj:)
311 real(r8),
intent(inout) :: rvfrc(LBi:,LBj:)
312 real(r8),
intent(inout) :: rufrc_bak(LBi:,LBj:,:)
313 real(r8),
intent(inout) :: rvfrc_bak(LBi:,LBj:,:)
316 real(r8),
intent(inout) :: pmask_full(LBi:,LBj:)
317 real(r8),
intent(inout) :: rmask_full(LBi:,LBj:)
318 real(r8),
intent(inout) :: umask_full(LBi:,LBj:)
319 real(r8),
intent(inout) :: vmask_full(LBi:,LBj:)
321 real(r8),
intent(inout) :: pmask_wet(LBi:,LBj:)
322 real(r8),
intent(inout) :: rmask_wet(LBi:,LBj:)
323 real(r8),
intent(inout) :: umask_wet(LBi:,LBj:)
324 real(r8),
intent(inout) :: vmask_wet(LBi:,LBj:)
326 real(r8),
intent(inout) :: rmask_wet_avg(LBi:,LBj:)
329# ifdef DIAGNOSTICS_UV
330 real(r8),
intent(inout) :: DiaU2wrk(LBi:,LBj:,:)
331 real(r8),
intent(inout) :: DiaV2wrk(LBi:,LBj:,:)
332 real(r8),
intent(inout) :: DiaRUbar(LBi:,LBj:,:,:)
333 real(r8),
intent(inout) :: DiaRVbar(LBi:,LBj:,:,:)
335 real(r8),
intent(inout) :: DiaU2int(LBi:,LBj:,:)
336 real(r8),
intent(inout) :: DiaV2int(LBi:,LBj:,:)
337 real(r8),
intent(inout) :: DiaRUfrc(LBi:,LBj:,:,:)
338 real(r8),
intent(inout) :: DiaRVfrc(LBi:,LBj:,:,:)
341 real(r8),
intent(inout) :: ubar(LBi:,LBj:,:)
342 real(r8),
intent(inout) :: vbar(LBi:,LBj:,:)
343 real(r8),
intent(inout) :: zeta(LBi:,LBj:,:)
344# if defined NESTING && !defined SOLVE3D
345 real(r8),
intent(out ) :: DU_flux(LBi:,LBj:)
346 real(r8),
intent(out ) :: DV_flux(LBi:,LBj:)
352 real(r8),
intent(in ) :: pmask(LBi:UBi,LBj:UBj)
353 real(r8),
intent(in ) :: rmask(LBi:UBi,LBj:UBj)
354 real(r8),
intent(in ) :: umask(LBi:UBi,LBj:UBj)
355 real(r8),
intent(in ) :: vmask(LBi:UBi,LBj:UBj)
357# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
358 real(r8),
intent(in ) :: fomn(LBi:UBi,LBj:UBj)
360# if defined SEDIMENT && defined SED_MORPH
361 real(r8),
intent(inout) :: h(LBi:UBi,LBj:UBj)
363 real(r8),
intent(in ) :: h(LBi:UBi,LBj:UBj)
365 real(r8),
intent(in ) :: om_u(LBi:UBi,LBj:UBj)
366 real(r8),
intent(in ) :: om_v(LBi:UBi,LBj:UBj)
367 real(r8),
intent(in ) :: on_u(LBi:UBi,LBj:UBj)
368 real(r8),
intent(in ) :: on_v(LBi:UBi,LBj:UBj)
369 real(r8),
intent(in ) :: omn(LBi:UBi,LBj:UBj)
370 real(r8),
intent(in ) :: pm(LBi:UBi,LBj:UBj)
371 real(r8),
intent(in ) :: pn(LBi:UBi,LBj:UBj)
372# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
373 real(r8),
intent(in ) :: dndx(LBi:UBi,LBj:UBj)
374 real(r8),
intent(in ) :: dmde(LBi:UBi,LBj:UBj)
376# if defined UV_VIS2 && !defined SOLVE3D
377 real(r8),
intent(in ) :: pmon_r(LBi:UBi,LBj:UBj)
378 real(r8),
intent(in ) :: pnom_r(LBi:UBi,LBj:UBj)
379 real(r8),
intent(in ) :: pmon_p(LBi:UBi,LBj:UBj)
380 real(r8),
intent(in ) :: pnom_p(LBi:UBi,LBj:UBj)
381 real(r8),
intent(in ) :: om_r(LBi:UBi,LBj:UBj)
382 real(r8),
intent(in ) :: on_r(LBi:UBi,LBj:UBj)
383 real(r8),
intent(in ) :: om_p(LBi:UBi,LBj:UBj)
384 real(r8),
intent(in ) :: on_p(LBi:UBi,LBj:UBj)
385 real(r8),
intent(in ) :: visc2_p(LBi:UBi,LBj:UBj)
386 real(r8),
intent(in ) :: visc2_r(LBi:UBi,LBj:UBj)
388# if defined SEDIMENT && defined SED_MORPH
389 real(r8),
intent(in ) :: bed_thick(LBi:UBi,LBj:UBj,1:3)
391# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
392 real(r8),
intent(in ) :: eq_tide(LBi:UBi,LBj:UBj)
395 real(r8),
intent(in ) :: sustr(LBi:UBi,LBj:UBj)
396 real(r8),
intent(in ) :: svstr(LBi:UBi,LBj:UBj)
397 real(r8),
intent(in ) :: bustr(LBi:UBi,LBj:UBj)
398 real(r8),
intent(in ) :: bvstr(LBi:UBi,LBj:UBj)
400 real(r8),
intent(in ) :: Pair(LBi:UBi,LBj:UBj)
404 real(r8),
intent(in ) :: rhoA(LBi:UBi,LBj:UBj)
405 real(r8),
intent(in ) :: rhoS(LBi:UBi,LBj:UBj)
407 real(r8),
intent(inout) :: DU_avg1(LBi:UBi,LBj:UBj)
408 real(r8),
intent(inout) :: DU_avg2(LBi:UBi,LBj:UBj)
409 real(r8),
intent(inout) :: DV_avg1(LBi:UBi,LBj:UBj)
410 real(r8),
intent(inout) :: DV_avg2(LBi:UBi,LBj:UBj)
411 real(r8),
intent(inout) :: Zt_avg1(LBi:UBi,LBj:UBj)
412 real(r8),
intent(inout) :: rufrc(LBi:UBi,LBj:UBj)
413 real(r8),
intent(inout) :: rvfrc(LBi:UBi,LBj:UBj)
414 real(r8),
intent(inout) :: rufrc_bak(LBi:UBi,LBj:UBj,2)
415 real(r8),
intent(inout) :: rvfrc_bak(LBi:UBi,LBj:UBj,2)
418 real(r8),
intent(inout) :: pmask_full(LBi:UBi,LBj:UBj)
419 real(r8),
intent(inout) :: rmask_full(LBi:UBi,LBj:UBj)
420 real(r8),
intent(inout) :: umask_full(LBi:UBi,LBj:UBj)
421 real(r8),
intent(inout) :: vmask_full(LBi:UBi,LBj:UBj)
423 real(r8),
intent(inout) :: pmask_wet(LBi:UBi,LBj:UBj)
424 real(r8),
intent(inout) :: rmask_wet(LBi:UBi,LBj:UBj)
425 real(r8),
intent(inout) :: umask_wet(LBi:UBi,LBj:UBj)
426 real(r8),
intent(inout) :: vmask_wet(LBi:UBi,LBj:UBj)
428 real(r8),
intent(inout) :: rmask_wet_avg(LBi:UBi,LBj:UBj)
431# ifdef DIAGNOSTICS_UV
432 real(r8),
intent(inout) :: DiaU2wrk(LBi:UBi,LBj:UBj,NDM2d)
433 real(r8),
intent(inout) :: DiaV2wrk(LBi:UBi,LBj:UBj,NDM2d)
434 real(r8),
intent(inout) :: DiaRUbar(LBi:UBi,LBj:UBj,2,NDM2d-1)
435 real(r8),
intent(inout) :: DiaRVbar(LBi:UBi,LBj:UBj,2,NDM2d-1)
437 real(r8),
intent(inout) :: DiaU2int(LBi:UBi,LBj:UBj,NDM2d)
438 real(r8),
intent(inout) :: DiaV2int(LBi:UBi,LBj:UBj,NDM2d)
439 real(r8),
intent(inout) :: DiaRUfrc(LBi:UBi,LBj:UBj,3,NDM2d-1)
440 real(r8),
intent(inout) :: DiaRVfrc(LBi:UBi,LBj:UBj,3,NDM2d-1)
443 real(r8),
intent(inout) :: ubar(LBi:UBi,LBj:UBj,:)
444 real(r8),
intent(inout) :: vbar(LBi:UBi,LBj:UBj,:)
445 real(r8),
intent(inout) :: zeta(LBi:UBi,LBj:UBj,:)
446# if defined NESTING && !defined SOLVE3D
447 real(r8),
intent(out ) :: DU_flux(LBi:UBi,LBj:UBj)
448 real(r8),
intent(out ) :: DV_flux(LBi:UBi,LBj:UBj)
455 integer :: krhs, kbak
460 real(r8) :: cff, cff1, cff2, cff3, cff4
462 real(r8) :: cff5, cff6, cff7
464 real(r8) :: fac, fac1, fac2
466#if defined UV_C4ADVECTION && !defined SOLVE3D
467 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dgrad
469 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dnew
470 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs
471#if defined UV_VIS2 && !defined SOLVE3D
472 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs_p
474 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dstp
475 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUon
476 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVom
477#if defined STEP2D_CORIOLIS || !defined SOLVE3D
478 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
479 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
482 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
483 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
485#if defined UV_C4ADVECTION && !defined SOLVE3D
486 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
488 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rubar
489 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rvbar
490 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta
491 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta2
492#if defined VAR_RHO_2D && defined SOLVE3D
493 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzetaSA
495 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: urhs
496 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: vrhs
497 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zwrk
499 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Uwrk
500 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Vwrk
501 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,NDM2d-1) :: DiaU2rhs
502 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,NDM2d-1) :: DiaV2rhs
505 real(r8),
allocatable :: zeta_new(:,:)
522 real(r8),
parameter :: gamma=0.0_r8, &
523 & beta =0.14_r8, epsil=0.74_r8
525#include "set_bounds.h"
540 IF (first_2d_step)
THEN
555#if defined DISTRIBUTE && !defined NESTING
556# define IR_RANGE IstrUm2-1,Iendp2
557# define JR_RANGE JstrVm2-1,Jendp2
558# define IU_RANGE IstrUm1-1,Iendp2
559# define JU_RANGE Jstrm1-1,Jendp2
560# define IV_RANGE Istrm1-1,Iendp2
561# define JV_RANGE JstrVm1-1,Jendp2
563# define IR_RANGE IstrUm2-1,Iendp2
564# define JR_RANGE JstrVm2-1,Jendp2
565# define IU_RANGE IstrUm2,Iendp2
566# define JU_RANGE JstrVm2-1,Jendp2
567# define IV_RANGE IstrUm2-1,Iendp2
568# define JV_RANGE JstrVm2,Jendp2
573 drhs(i,j)=zeta(i,j,krhs)+h(i,j)
579 cff1=cff*(drhs(i,j)+drhs(i-1,j))
580 duon(i,j)=ubar(i,j,krhs)*cff1
586 cff1=cff*(drhs(i,j)+drhs(i,j-1))
587 dvom(i,j)=vbar(i,j,krhs)*cff1
598#if defined DISTRIBUTE && \
599 defined uv_adv && defined uv_c4advection &&
610 & imins, imaxs, jmins, jmaxs, &
613 & imins, imaxs, jmins, jmaxs, &
617 & imins, imaxs, jmins, jmaxs, &
628 & lbi, ubi, lbj, ubj, &
629 & imins, imaxs, jmins, jmaxs, &
659 IF (first_2d_step)
THEN
673 zt_avg1(i,j)=zt_avg1(i,j)+cff*zeta(i,j,krhs)
675 du_avg1(i,j)=du_avg1(i,j)+cff*duon(i,j)
678 dv_avg1(i,j)=dv_avg1(i,j)+cff*dvom(i,j)
688 du_avg2(i,j)=du_avg2(i,j)+cff*duon(i,j)
691 dv_avg2(i,j)=dv_avg2(i,j)+cff*dvom(i,j)
705 allocate ( zeta_new(imins:imaxs,jmins:jmaxs) )
723 IF (first_2d_step)
THEN
729 cff1=0.333333333333_r8
730 cff2=0.666666666667_r8
736 cff2=1.0_r8-2.0_r8*beta
742 fac=cff*pm(i,j)*pn(i,j)
743 zeta_new(i,j)=zeta(i,j,kbak)+ &
744 & fac*(duon(i,j)-duon(i+1,j)+ &
745 & dvom(i,j)-dvom(i,j+1))
747 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
749 zeta_new(i,j)=zeta_new(i,j)+ &
750 & (
dcrit(ng)-h(i,j))*(1.0_r8-rmask(i,j))
753 dnew(i,j)=zeta_new(i,j)+h(i,j)
755 zwrk(i,j)=cff1*zeta_new(i,j)+ &
756 & cff2*zeta(i,j,kstp)+ &
757 & cff3*zeta(i,j,kbak)
758#if defined VAR_RHO_2D && defined SOLVE3D
759 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
760 rzeta2(i,j)=rzeta(i,j)*zwrk(i,j)
761 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
764 rzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
769 IF (first_2d_step)
THEN
770 cff =0.333333333333_r8
771 cff1=0.333333333333_r8
772 cff2=0.333333333333_r8
776 cff1=(0.5_r8-gamma)*epsil
777 cff2=(0.5_r8+2.0_r8*gamma)*epsil
783 fac=
dtfast(ng)*pm(i,j)*pn(i,j)
784 zeta_new(i,j)=zeta(i,j,kstp)+ &
785 & fac*(duon(i,j)-duon(i+1,j)+ &
786 & dvom(i,j)-dvom(i,j+1))
788 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
790 dnew(i,j)=zeta_new(i,j)+h(i,j)
792 zwrk(i,j)=cff *zeta(i,j,krhs)+ &
793 & cff1*zeta_new(i,j)+ &
794 & cff2*zeta(i,j,kstp)+ &
795 & cff3*zeta(i,j,kbak)
796#if defined VAR_RHO_2D && defined SOLVE3D
797 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
798 rzeta2(i,j)=rzeta(i,j)*zwrk(i,j)
799 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
802 rzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
814 IF (int(
sources(ng)%Dsrc(is)).eq.2)
THEN
817 IF (((istrr.le.i).and.(i.le.iendr)).and. &
818 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
819 zeta_new(i,j)=zeta_new(i,j)+ &
821 & pm(i,j)*pn(i,j)*
dtfast(ng)
839 CALL zetabc_local (ng, tile, &
840 & lbi, ubi, lbj, ubj, &
841 & imins, imaxs, jmins, jmaxs, &
847 IF (first_2d_step)
THEN
853 cff2=0.5_r8+2.0_r8*gamma
858 zeta(i,j,knew)=cff1*zeta_new(i,j)+ &
859 & cff2*zeta(i,j,kstp)+ &
860 & cff3*zeta(i,j,kbak)
866 zeta(i,j,knew)=zeta_new(i,j)
883# ifdef STEP2D_CORIOLIS
901 cff2=0.333333333333_r8
902#if !defined SOLVE3D && defined ATM_PRESS
903 fac=0.5_r8*100.0_r8/
rho0
908 rubar(i,j)=cff1*on_u(i,j)* &
913#if defined VAR_RHO_2D && defined SOLVE3D
918 & cff2*(rhoa(i-1,j)- &
925#if defined ATM_PRESS && !defined SOLVE3D
926 rubar(i,j)=rubar(i,j)- &
928 & (h(i-1,j)+h(i,j)+ &
929 & rzeta(i-1,j)+rzeta(i,j))* &
930 & (pair(i,j)-pair(i-1,j))
932#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
933 rubar(i,j)=rubar(i,j)- &
935 & (h(i-1,j)+h(i,j)+ &
936 & rzeta(i-1,j)+rzeta(i,j))* &
937 & (eq_tide(i,j)-eq_tide(i-1,j))
940 diau2rhs(i,j,
m2pgrd)=rubar(i,j)
945 rvbar(i,j)=cff1*om_v(i,j)* &
950#if defined VAR_RHO_2D && defined SOLVE3D
955 & cff2*(rhoa(i,j-1)- &
962#if defined ATM_PRESS && !defined SOLVE3D
963 rvbar(i,j)=rvbar(i,j)- &
965 & (h(i,j-1)+h(i,j)+ &
966 & rzeta(i,j-1)+rzeta(i,j))* &
967 & (pair(i,j)-pair(i,j-1))
969#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
970 rvbar(i,j)=rvbar(i,j)- &
972 & (h(i,j-1)+h(i,j)+ &
973 & rzeta(i,j-1)+rzeta(i,j))* &
974 & (eq_tide(i,j)-eq_tide(i,j-1))
977 diav2rhs(i,j,
m2pgrd)=rvbar(i,j)
983#if defined UV_ADV && !defined SOLVE3D
989# ifdef UV_C2ADVECTION
996 & (duon(i,j)+duon(i+1,j))* &
997 & (ubar(i ,j,krhs)+ &
1005 & (dvom(i,j)+dvom(i-1,j))* &
1006 & (ubar(i,j ,krhs)+ &
1014 & (duon(i,j)+duon(i,j-1))* &
1015 & (vbar(i ,j,krhs)+ &
1023 & (dvom(i,j)+dvom(i,j+1))* &
1024 & (vbar(i,j ,krhs)+ &
1029# elif defined UV_C4ADVECTION
1035 grad(i,j)=ubar(i-1,j,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1037 dgrad(i,j)=duon(i-1,j)-2.0_r8*duon(i,j)+duon(i+1,j)
1041 IF (
domain(ng)%Western_Edge(tile))
THEN
1043 grad(istr,j)=grad(istr+1,j)
1044 dgrad(istr,j)=dgrad(istr+1,j)
1049 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1051 grad(iend+1,j)=grad(iend,j)
1052 dgrad(iend+1,j)=dgrad(iend,j)
1060 ufx(i,j)=0.25_r8*(ubar(i ,j,krhs)+ &
1061 & ubar(i+1,j,krhs)- &
1062 & cff*(grad(i,j)+grad(i+1,j)))* &
1063 & (duon(i,j)+duon(i+1,j)- &
1064 & cff*(dgrad(i,j)+dgrad(i+1,j)))
1070 grad(i,j)=ubar(i,j-1,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1076 IF (
domain(ng)%Southern_Edge(tile))
THEN
1078 grad(i,jstr-1)=grad(i,jstr)
1083 IF (
domain(ng)%Northern_Edge(tile))
THEN
1085 grad(i,jend+1)=grad(i,jend)
1091 dgrad(i,j)=dvom(i-1,j)-2.0_r8*dvom(i,j)+dvom(i+1,j)
1098 ufe(i,j)=0.25_r8*(ubar(i,j ,krhs)+ &
1099 & ubar(i,j-1,krhs)- &
1100 & cff*(grad(i,j)+grad(i,j-1)))* &
1101 & (dvom(i,j)+dvom(i-1,j)- &
1102 & cff*(dgrad(i,j)+dgrad(i-1,j)))
1110 grad(i,j)=vbar(i-1,j,krhs)-2.0_r8*vbar(i,j,krhs)+ &
1116 IF (
domain(ng)%Western_Edge(tile))
THEN
1118 grad(istr-1,j)=grad(istr,j)
1123 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1125 grad(iend+1,j)=grad(iend,j)
1131 dgrad(i,j)=duon(i,j-1)-2.0_r8*duon(i,j)+duon(i,j+1)
1138 vfx(i,j)=0.25_r8*(vbar(i ,j,krhs)+ &
1139 & vbar(i-1,j,krhs)- &
1140 & cff*(grad(i,j)+grad(i-1,j)))* &
1141 & (duon(i,j)+duon(i,j-1)- &
1142 & cff*(dgrad(i,j)+dgrad(i,j-1)))
1148 grad(i,j)=vbar(i,j-1,krhs)-2.0_r8*vbar(i,j,krhs)+ &
1150 dgrad(i,j)=dvom(i,j-1)-2.0_r8*dvom(i,j)+dvom(i,j+1)
1154 IF (
domain(ng)%Southern_Edge(tile))
THEN
1156 grad(i,jstr)=grad(i,jstr+1)
1157 dgrad(i,jstr)=dgrad(i,jstr+1)
1162 IF (
domain(ng)%Northern_Edge(tile))
THEN
1164 grad(i,jend+1)=grad(i,jend)
1165 dgrad(i,jend+1)=dgrad(i,jend)
1173 vfe(i,j)=0.25_r8*(vbar(i,j ,krhs)+ &
1174 & vbar(i,j+1,krhs)- &
1175 & cff*(grad(i,j)+grad(i,j+1)))* &
1176 & (dvom(i,j)+dvom(i,j+1)- &
1177 & cff*(dgrad(i,j)+dgrad(i,j+1)))
1186 IF (i.ge.istru)
THEN
1187 cff1=ufx(i,j)-ufx(i-1,j)
1188 cff2=ufe(i,j+1)-ufe(i,j)
1190 rubar(i,j)=rubar(i,j)-fac
1191# if defined DIAGNOSTICS_UV
1192 diau2rhs(i,j,
m2xadv)=-cff1
1193 diau2rhs(i,j,
m2yadv)=-cff2
1194 diau2rhs(i,j,
m2hadv)=-fac
1198 IF (j.ge.jstrv)
THEN
1199 cff1=vfx(i+1,j)-vfx(i,j)
1200 cff2=vfe(i,j)-vfe(i,j-1)
1202 rvbar(i,j)=rvbar(i,j)-fac
1203# if defined DIAGNOSTICS_UV
1204 diav2rhs(i,j,
m2xadv)=-cff1
1205 diav2rhs(i,j,
m2yadv)=-cff2
1206 diav2rhs(i,j,
m2hadv)=-fac
1213#if (defined UV_COR & !defined SOLVE3D) || defined STEP2D_CORIOLIS
1221 cff=0.5_r8*drhs(i,j)*fomn(i,j)
1222 ufx(i,j)=cff*(vbar(i,j ,krhs)+ &
1224 vfe(i,j)=cff*(ubar(i ,j,krhs)+ &
1231 IF (i.ge.istru)
THEN
1232 fac1=0.5_r8*(ufx(i,j)+ufx(i-1,j))
1233 rubar(i,j)=rubar(i,j)+fac1
1234# if defined DIAGNOSTICS_UV
1235 diau2rhs(i,j,
m2fcor)=fac1
1239 IF (j.ge.jstrv)
THEN
1240 fac2=0.5_r8*(vfe(i,j)+vfe(i,j-1))
1241 rvbar(i,j)=rvbar(i,j)-fac2
1242# if defined DIAGNOSTICS_UV
1243 diav2rhs(i,j,
m2fcor)=-fac2
1250#if (defined CURVGRID && defined UV_ADV) && !defined SOLVE3D
1258 cff1=0.5_r8*(vbar(i,j ,krhs)+ &
1260 cff2=0.5_r8*(ubar(i ,j,krhs)+ &
1264 cff=drhs(i,j)*(cff3-cff4)
1267# if defined DIAGNOSTICS_UV
1277 IF (i.ge.istru)
THEN
1278 fac1=0.5_r8*(ufx(i,j)+ufx(i-1,j))
1279 rubar(i,j)=rubar(i,j)+fac1
1280# if defined DIAGNOSTICS_UV
1281 fac2=0.5_r8*(uwrk(i,j)+uwrk(i-1,j))
1288 IF (j.ge.jstrv)
THEN
1289 fac1=0.5_r8*(vfe(i,j)+vfe(i,j-1))
1290 rvbar(i,j)=rvbar(i,j)-fac1
1291# if defined DIAGNOSTICS_UV
1292 fac2=0.5_r8*(vwrk(i,j)+vwrk(i,j-1))
1302#if defined UV_VIS2 && !defined SOLVE3D
1312 drhs_p(i,j)=0.25_r8*(drhs(i,j )+drhs(i-1,j )+ &
1313 & drhs(i,j-1)+drhs(i-1,j-1))
1322 cff=visc2_r(i,j)*drhs(i,j)*0.5_r8* &
1324 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,krhs)- &
1325 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,krhs))- &
1327 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,krhs)- &
1328 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,krhs)))
1329 ufx(i,j)=on_r(i,j)*on_r(i,j)*cff
1330 vfe(i,j)=om_r(i,j)*om_r(i,j)*cff
1336 cff=visc2_p(i,j)*drhs_p(i,j)*0.5_r8* &
1338 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,krhs)- &
1339 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,krhs))+ &
1341 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,krhs)- &
1342 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,krhs)))
1347 cff=cff*pmask_wet(i,j)
1349 ufe(i,j)=om_p(i,j)*om_p(i,j)*cff
1350 vfx(i,j)=on_p(i,j)*on_p(i,j)*cff
1358 IF (i.ge.istru)
THEN
1359 cff1=0.5_r8*(pn(i-1,j)+pn(i,j))*(ufx(i,j )-ufx(i-1,j))
1360 cff2=0.5_r8*(pm(i-1,j)+pm(i,j))*(ufe(i,j+1)-ufe(i ,j))
1362 rubar(i,j)=rubar(i,j)+fac
1363# if defined DIAGNOSTICS_UV
1365 diau2rhs(i,j,
m2xvis)=cff1
1366 diau2rhs(i,j,
m2yvis)=cff2
1370 IF (j.ge.jstrv)
THEN
1371 cff1=0.5_r8*(pn(i,j-1)+pn(i,j))*(vfx(i+1,j)-vfx(i,j ))
1372 cff2=0.5_r8*(pm(i,j-1)+pm(i,j))*(vfe(i ,j)-vfe(i,j-1))
1374 rvbar(i,j)=rvbar(i,j)+fac
1375# if defined DIAGNOSTICS_UV
1377 diav2rhs(i,j,
m2xvis)= cff1
1378 diav2rhs(i,j,
m2yvis)=-cff2
1393 fac=bustr(i,j)*om_u(i,j)*on_u(i,j)
1394 rubar(i,j)=rubar(i,j)-fac
1395# ifdef DIAGNOSTICS_UV
1396 diau2rhs(i,j,
m2bstr)=-fac
1402 fac=bvstr(i,j)*om_v(i,j)*on_v(i,j)
1403 rvbar(i,j)=rvbar(i,j)-fac
1404# ifdef DIAGNOSTICS_UV
1405 diav2rhs(i,j,
m2bstr)=-fac
1410# ifdef DIAGNOSTICS_UV
1416 diau2rhs(i,j,
m2bstr)=0.0_r8
1421 diav2rhs(i,j,
m2bstr)=0.0_r8
1456 IF (first_time_step)
THEN
1460 ELSE IF (first_time_step+1)
THEN
1466 cff2=-0.5_r8-2.0_r8*cff3
1472 cff=rufrc(i,j)-rubar(i,j)
1473 rufrc(i,j)=cff1*cff+ &
1474 & cff2*rufrc_bak(i,j,3-nstp)+ &
1475 & cff3*rufrc_bak(i,j,nstp )
1476 rufrc_bak(i,j,nstp)=cff
1481 cff=rvfrc(i,j)-rvbar(i,j)
1482 rvfrc(i,j)=cff1*cff+ &
1483 & cff2*rvfrc_bak(i,j,3-nstp)+ &
1484 & cff3*rvfrc_bak(i,j,nstp )
1485 rvfrc_bak(i,j,nstp)=cff
1495 cff2=0.333333333333_r8
1496 cff3=1.666666666666_r8
1500 zwrk(i,j)=cff2*(zeta_new(i,j)-zeta(i,j,kstp))
1501# if defined VAR_RHO_2D && defined SOLVE3D
1502 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
1503 rzeta2(i,j)=rzeta(i,j)* &
1504 & (cff2*zeta_new(i,j)+ &
1505 & cff3*zeta(i,j,kstp))
1506 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1508 rzeta(i,j)=zwrk(i,j)
1509 rzeta2(i,j)=zwrk(i,j)* &
1510 & (cff2*zeta_new(i,j)+ &
1511 & cff3*zeta(i,j,kstp))
1518 IF (i.ge.istru)
THEN
1519 rubar(i,j)=rubar(i,j)+ &
1525# if defined VAR_RHO_2D && defined SOLVE3D
1528 & (rzetasa(i-1,j)+ &
1530 & cff2*(rhoa(i-1,j)- &
1537# ifdef DIAGNOSTICS_UV
1543 IF (j.ge.jstrv)
THEN
1544 rvbar(i,j)=rvbar(i,j)+ &
1550# if defined VAR_RHO_2D && defined SOLVE3D
1553 & (rzetasa(i,j-1)+ &
1555 & cff2*(rhoa(i,j-1)- &
1562# ifdef DIAGNOSTICS_UV
1581 dstp(i,j)=h(i,j)+zeta(i,j,kstp)
1587 dstp(i,j)=h(i,j)+zeta(i,j,kbak)
1598 IF (first_2d_step)
THEN
1606 cff3=0.5_r8+2.0_r8*gamma
1612 cff=cff1*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
1613 fac1=1.0_r8/(dnew(i,j)+dnew(i-1,j))
1614 ubar(i,j,knew)=fac1* &
1615 & (ubar(i,j,kbak)* &
1616 & (dstp(i,j)+dstp(i-1,j))+ &
1618 & cff*(rubar(i,j)+rufrc(i,j)))
1620 & cff*rubar(i,j)+4.0_r8*cff1*sustr(i,j))
1623 ubar(i,j,knew)=ubar(i,j,knew)*umask(i,j)
1625 ubar(i,j,knew)=cff2*ubar(i,j,knew)+ &
1626 & cff3*ubar(i,j,kstp)+ &
1627 & cff4*ubar(i,j,kbak)
1629 cff5=abs(abs(umask_wet(i,j))-1.0_r8)
1630 cff6=0.5_r8+dsign(0.5_r8,ubar(i,j,knew))*umask_wet(i,j)
1631 cff7=0.5_r8*umask_wet(i,j)*cff5+cff6*(1.0_r8-cff5)
1632 ubar(i,j,knew)=ubar(i,j,knew)*cff7
1634#if defined NESTING && !defined SOLVE3D
1635 du_flux(i,j)=0.5_r8*on_u(i,j)* &
1636 & (dnew(i,j)+dnew(i-1,j))*ubar(i,j,knew)
1643 cff=cff1*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
1644 fac2=1.0_r8/(dnew(i,j)+dnew(i,j-1))
1645 vbar(i,j,knew)=fac2* &
1646 & (vbar(i,j,kbak)* &
1647 & (dstp(i,j)+dstp(i,j-1))+ &
1649 & cff*(rvbar(i,j)+rvfrc(i,j)))
1651 & cff*rvbar(i,j)+4.0_r8*cff1*svstr(i,j))
1654 vbar(i,j,knew)=vbar(i,j,knew)*vmask(i,j)
1656 vbar(i,j,knew)=cff2*vbar(i,j,knew)+ &
1657 & cff3*vbar(i,j,kstp)+ &
1658 & cff4*vbar(i,j,kbak)
1660 cff5=abs(abs(vmask_wet(i,j))-1.0_r8)
1661 cff6=0.5_r8+dsign(0.5_r8,vbar(i,j,knew))*vmask_wet(i,j)
1662 cff7=0.5_r8*vmask_wet(i,j)*cff5+cff6*(1.0_r8-cff5)
1663 vbar(i,j,knew)=vbar(i,j,knew)*cff7
1665#if defined NESTING && !defined SOLVE3D
1666 dv_flux(i,j)=0.5_r8*om_v(i,j)* &
1667 & (dnew(i,j)+dnew(i,j-1))*vbar(i,j,knew)
1677 cff=cff1*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
1678 fac1=1.0_r8/(dnew(i,j)+dnew(i-1,j))
1679 ubar(i,j,knew)=fac1* &
1680 & (ubar(i,j,kstp)* &
1681 & (dstp(i,j)+dstp(i-1,j))+ &
1683 & cff*(rubar(i,j)+rufrc(i,j)))
1685 & cff*rubar(i,j)+4.0_r8*cff1*sustr(i,j))
1688 ubar(i,j,knew)=ubar(i,j,knew)*umask(i,j)
1691 cff5=abs(abs(umask_wet(i,j))-1.0_r8)
1692 cff6=0.5_r8+dsign(0.5_r8,ubar(i,j,knew))*umask_wet(i,j)
1693 cff7=0.5_r8*umask_wet(i,j)*cff5+cff6*(1.0_r8-cff5)
1694 ubar(i,j,knew)=ubar(i,j,knew)*cff7
1696#if defined NESTING && !defined SOLVE3D
1697 du_flux(i,j)=0.5_r8*on_u(i,j)* &
1698 & (dnew(i,j)+dnew(i-1,j))*ubar(i,j,knew)
1705 cff=cff1*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
1706 fac2=1.0_r8/(dnew(i,j)+dnew(i,j-1))
1707 vbar(i,j,knew)=fac2* &
1708 & (vbar(i,j,kstp)* &
1709 & (dstp(i,j)+dstp(i,j-1))+ &
1711 & cff*(rvbar(i,j)+rvfrc(i,j)))
1713 & cff*rvbar(i,j)+4.0_r8*cff1*svstr(i,j))
1716 vbar(i,j,knew)=vbar(i,j,knew)*vmask(i,j)
1719 cff5=abs(abs(vmask_wet(i,j))-1.0_r8)
1720 cff6=0.5_r8+dsign(0.5_r8,vbar(i,j,knew))*vmask_wet(i,j)
1721 cff7=0.5_r8*vmask_wet(i,j)*cff5+cff6*(1.0_r8-cff5)
1722 vbar(i,j,knew)=vbar(i,j,knew)*cff7
1724#if defined NESTING && !defined SOLVE3D
1725 dv_flux(i,j)=0.5_r8*om_v(i,j)* &
1726 & (dnew(i,j)+dnew(i,j-1))*vbar(i,j,knew)
1735 & lbi, ubi, lbj, ubj, &
1736 & imins, imaxs, jmins, jmaxs, &
1737 & krhs, kstp, knew, &
1740 & lbi, ubi, lbj, ubj, &
1741 & imins, imaxs, jmins, jmaxs, &
1742 & krhs, kstp, knew, &
1750 & lbi, ubi, lbj, ubj, &
1751 & imins, imaxs, jmins, jmaxs, &
1760#if defined NESTING && !defined SOLVE3D
1765 IF (
domain(ng)%Western_Edge(tile))
THEN
1767 dnew(istr-1,j)=h(istr-1,j)+zeta_new(istr-1,j)
1772 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1774 dnew(iend+1,j)=h(iend+1,j)+zeta_new(iend+1,j)
1779 IF (
domain(ng)%Southern_Edge(tile))
THEN
1781 dnew(i,jstr-1)=h(i,jstr-1)+zeta_new(i,jstr-1)
1786 IF (
domain(ng)%Northern_Edge(tile))
THEN
1788 dnew(i,jend+1)=h(i,jend+1)+zeta_new(i,jend+1)
1794 IF (
domain(ng)%Western_Edge(tile))
THEN
1796 du_flux(istru-1,j)=0.5_r8*on_u(istru-1,j)* &
1797 & (dnew(istru-1,j)+dnew(istru-2,j))* &
1798 & ubar(istru-1,j,knew)
1801 dv_flux(istr-1,j)=0.5_r8*om_v(istr-1,j)* &
1802 & (dnew(istr-1,j)+dnew(istr-1,j-1))* &
1803 & vbar(istr-1,j,knew)
1808 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1810 du_flux(iend+1,j)=0.5_r8*on_u(iend+1,j)* &
1811 & (dnew(iend+1,j)+dnew(iend,j))* &
1812 & ubar(iend+1,j,knew)
1815 dv_flux(iend+1,j)=0.5_r8*om_v(iend+1,j)* &
1816 & (dnew(iend+1,j)+dnew(iend+1,j-1))* &
1817 & vbar(iend+1,j,knew)
1822 IF (
domain(ng)%Southern_Edge(tile))
THEN
1824 du_flux(i,jstr-1)=0.5_r8*on_u(i,jstr-1)* &
1825 & (dnew(i,jstr-1)+dnew(i-1,jstr-1))* &
1826 & ubar(i,jstr-1,knew)
1829 dv_flux(i,jstrv-1)=0.5_r8*om_v(i,jstrv-1)* &
1830 & (dnew(i,jstrv-1)+dnew(i,jstrv-2))* &
1831 & vbar(i,jstrv-1,knew)
1836 IF (
domain(ng)%Northern_Edge(tile))
THEN
1838 du_flux(i,jend+1)=0.5_r8*on_u(i,jend+1)* &
1839 & (dnew(i,jend+1)+dnew(i-1,jend+1))* &
1840 & ubar(i,jend+1,knew)
1843 dv_flux(i,jend+1)=0.5_r8*om_v(i,jend+1)* &
1844 & (dnew(i,jend+1)+dnew(i,jend))* &
1845 & vbar(i,jend+1,knew)
1860 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1861 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1862 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
1863 cff=1.0_r8/(on_u(i,j)* &
1864 & 0.5_r8*(dnew(i-1,j)+dnew(i,j)))
1865 ubar(i,j,knew)=
sources(ng)%Qbar(is)*cff
1867 du_avg1(i,j)=
sources(ng)%Qbar(is)
1869#if defined NESTING && !defined SOLVE3D
1870 du_flux(i,j)=
sources(ng)%Qbar(is)
1872 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
1873 cff=1.0_r8/(om_v(i,j)* &
1874 & 0.5_r8*(dnew(i,j-1)+dnew(i,j)))
1875 vbar(i,j,knew)=
sources(ng)%Qbar(is)*cff
1877 dv_avg1(i,j)=
sources(ng)%Qbar(is)
1879#if defined NESTING && !defined SOLVE3D
1880 dv_flux(i,j)=
sources(ng)%Qbar(is)
1901 IF ((
iif(ng).eq.
nfast(ng)).and.(knew.lt.3))
THEN
1903 IF (
domain(ng)%Western_Edge(tile))
THEN
1905 dnew(istr-1,j)=h(istr-1,j)+zeta_new(istr-1,j)
1910 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1912 dnew(iend+1,j)=h(iend+1,j)+zeta_new(iend+1,j)
1917 IF (
domain(ng)%Southern_Edge(tile))
THEN
1919 dnew(i,jstr-1)=h(i,jstr-1)+zeta_new(i,jstr-1)
1924 IF (
domain(ng)%Northern_Edge(tile))
THEN
1926 dnew(i,jend+1)=h(i,jend+1)+zeta_new(i,jend+1)
1940 zt_avg1(i,j)=zt_avg1(i,j)+ &
1941 & cff*zeta(i,j,knew)
1943 du_avg1(i,j)=du_avg1(i,j)+ &
1945 & (dnew(i,j)+dnew(i-1,j))*ubar(i,j,knew)
1948 dv_avg1(i,j)=dv_avg1(i,j)+ &
1950 & (dnew(i,j)+dnew(i,j-1))*vbar(i,j,knew)
1952 zeta(i,j,knew)=zt_avg1(i,j)
1969 & lbi, ubi, lbj, ubj, &
1972 & lbi, ubi, lbj, ubj, &
1975 & lbi, ubi, lbj, ubj, &
1978 & lbi, ubi, lbj, ubj, &
1981 & lbi, ubi, lbj, ubj, &
1987 & lbi, ubi, lbj, ubj, &
1990 & zt_avg1, du_avg1, dv_avg1)
1992 & lbi, ubi, lbj, ubj, &
2000#if defined NESTING && !defined SOLVE3D
2009 & lbi, ubi, lbj, ubj, &
2012 & lbi, ubi, lbj, ubj, &
2019 & lbi, ubi, lbj, ubj, &
2028 deallocate ( zeta_new )
2037 & lbi, ubi, lbj, ubj, &
2038 & imins, imaxs, jmins, jmaxs, &
2040 & pmask, rmask, umask, vmask, &
2042 & h, zeta(:,:,knew), &
2044 & du_avg1, dv_avg1, &
2047 & pmask_wet, pmask_full, &
2048 & rmask_wet, rmask_full, &
2049 & umask_wet, umask_full, &
2050 & vmask_wet, vmask_full)
2059 & lbi, ubi, lbj, ubj, &
2062 & lbi, ubi, lbj, ubj, &
2065 & lbi, ubi, lbj, ubj, &
2072 & lbi, ubi, lbj, ubj, &