210 & LBi, UBi, LBj, UBj, UBk, &
211 & IminS, ImaxS, JminS, JmaxS, &
212 & krhs, kstp, knew, &
217 & pmask, rmask, umask, vmask, &
219#ifdef WET_DRY_NOT_YET
220 & pmask_wet, pmask_full, &
221 & rmask_wet, rmask_full, &
222 & umask_wet, umask_full, &
223 & vmask_wet, vmask_full, &
228#if (defined UV_COR && !defined SOLVE3D) || defined step2d_coriolis
232 & om_u, om_v, on_u, on_v, pm, pn, &
233#if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
237#if defined UV_QDRAG && !defined SOLVE3D
240#if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
241 & pmon_r, pnom_r, pmon_p, pnom_p, &
242 & om_r, on_r, om_p, on_p, &
244 & visc2_p, visc2_r, &
247 & visc4_p, visc4_r, &
250#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
254 & tl_rustr2d, tl_rvstr2d, &
255 & tl_rulag2d, tl_rvlag2d, &
256 & ubar_stokes, tl_ubar_stokes, &
257 & vbar_stokes, tl_vbar_stokes, &
259#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
260 & eq_tide, tl_eq_tide, &
273 & tl_du_avg1, tl_du_avg2, &
274 & tl_dv_avg1, tl_dv_avg2, &
278 & tl_rufrc_bak, tl_rvfrc_bak, &
280#if defined NESTING && !defined SOLVE3D
281 & tl_du_flux, tl_dv_flux, &
298 integer,
intent(in ) :: ng, tile
299 integer,
intent(in ) :: LBi, UBi, LBj, UBj, UBk
300 integer,
intent(in ) :: IminS, ImaxS, JminS, JmaxS
301 integer,
intent(in ) :: krhs, kstp, knew
303 integer,
intent(in ) :: nstp, nnew
308 real(r8),
intent(in ) :: pmask(LBi:,LBj:)
309 real(r8),
intent(in ) :: rmask(LBi:,LBj:)
310 real(r8),
intent(in ) :: umask(LBi:,LBj:)
311 real(r8),
intent(in ) :: vmask(LBi:,LBj:)
313# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
314 real(r8),
intent(in ) :: fomn(LBi:,LBj:)
316 real(r8),
intent(in ) :: h(LBi:,LBj:)
317 real(r8),
intent(in ) :: om_u(LBi:,LBj:)
318 real(r8),
intent(in ) :: om_v(LBi:,LBj:)
319 real(r8),
intent(in ) :: on_u(LBi:,LBj:)
320 real(r8),
intent(in ) :: on_v(LBi:,LBj:)
321 real(r8),
intent(in ) :: pm(LBi:,LBj:)
322 real(r8),
intent(in ) :: pn(LBi:,LBj:)
323# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
324 real(r8),
intent(in ) :: dndx(LBi:,LBj:)
325 real(r8),
intent(in ) :: dmde(LBi:,LBj:)
327 real(r8),
intent(in ) :: rdrag(LBi:,LBj:)
328# if defined UV_QDRAG && !defined SOLVE3D
329 real(r8),
intent(in ) :: rdrag2(LBi:,LBj:)
331# if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
332 real(r8),
intent(in ) :: pmon_r(LBi:,LBj:)
333 real(r8),
intent(in ) :: pnom_r(LBi:,LBj:)
334 real(r8),
intent(in ) :: pmon_p(LBi:,LBj:)
335 real(r8),
intent(in ) :: pnom_p(LBi:,LBj:)
336 real(r8),
intent(in ) :: om_r(LBi:,LBj:)
337 real(r8),
intent(in ) :: on_r(LBi:,LBj:)
338 real(r8),
intent(in ) :: om_p(LBi:,LBj:)
339 real(r8),
intent(in ) :: on_p(LBi:,LBj:)
341 real(r8),
intent(in ) :: visc2_p(LBi:,LBj:)
342 real(r8),
intent(in ) :: visc2_r(LBi:,LBj:)
345 real(r8),
intent(in ) :: visc4_p(LBi:,LBj:)
346 real(r8),
intent(in ) :: visc4_r(LBi:,LBj:)
349# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
350 real(r8),
intent(in ) :: tl_bed_thick(LBi:,LBj:,:)
353 real(r8),
intent(in ) :: ubar_stokes(LBi:,LBj:)
354 real(r8),
intent(in ) :: vbar_stokes(LBi:,LBj:)
356# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
357 real(r8),
intent(in ) :: eq_tide(LBi:,LBj:)
358 real(r8),
intent(in ) :: tl_eq_tide(LBi:,LBj:)
360 real(r8),
intent(in ) :: ubar(LBi:,LBj:,:)
361 real(r8),
intent(in ) :: vbar(LBi:,LBj:,:)
362 real(r8),
intent(in ) :: zeta(LBi:,LBj:,:)
363# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
364 real(r8),
intent(inout) :: tl_h(LBi:,LBj:)
366 real(r8),
intent(in ) :: tl_h(LBi:,LBj:)
369 real(r8),
intent(in ) :: tl_sustr(LBi:,LBj:)
370 real(r8),
intent(in ) :: tl_svstr(LBi:,LBj:)
372 real(r8),
intent(in ) :: Pair(LBi:,LBj:)
376 real(r8),
intent(in ) :: rhoA(LBi:,LBj:)
377 real(r8),
intent(in ) :: rhoS(LBi:,LBj:)
378 real(r8),
intent(in ) :: tl_rhoA(LBi:,LBj:)
379 real(r8),
intent(in ) :: tl_rhoS(LBi:,LBj:)
381 real(r8),
intent(in ) :: rufrc(LBi:,LBj:)
382 real(r8),
intent(in ) :: rvfrc(LBi:,LBj:)
384 real(r8),
intent(inout) :: tl_DU_avg1(LBi:,LBj:)
385 real(r8),
intent(inout) :: tl_DU_avg2(LBi:,LBj:)
386 real(r8),
intent(inout) :: tl_DV_avg1(LBi:,LBj:)
387 real(r8),
intent(inout) :: tl_DV_avg2(LBi:,LBj:)
388 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:,LBj:)
389 real(r8),
intent(inout) :: tl_rufrc(LBi:,LBj:)
390 real(r8),
intent(inout) :: tl_rvfrc(LBi:,LBj:)
391 real(r8),
intent(inout) :: tl_rufrc_bak(LBi:,LBj:,:)
392 real(r8),
intent(inout) :: tl_rvfrc_bak(LBi:,LBj:,:)
395 real(r8),
intent(inout) :: tl_rustr2d(LBi:,LBj:)
396 real(r8),
intent(inout) :: tl_rvstr2d(LBi:,LBj:)
397 real(r8),
intent(inout) :: tl_rulag2d(LBi:,LBj:)
398 real(r8),
intent(inout) :: tl_rvlag2d(LBi:,LBj:)
399 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:,LBj:)
400 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:,LBj:)
402# ifdef WET_DRY_NOT_YET
403 real(r8),
intent(inout) :: pmask_full(LBi:,LBj:)
404 real(r8),
intent(inout) :: rmask_full(LBi:,LBj:)
405 real(r8),
intent(inout) :: umask_full(LBi:,LBj:)
406 real(r8),
intent(inout) :: vmask_full(LBi:,LBj:)
408 real(r8),
intent(inout) :: pmask_wet(LBi:,LBj:)
409 real(r8),
intent(inout) :: rmask_wet(LBi:,LBj:)
410 real(r8),
intent(inout) :: umask_wet(LBi:,LBj:)
411 real(r8),
intent(inout) :: vmask_wet(LBi:,LBj:)
413 real(r8),
intent(inout) :: rmask_wet_avg(LBi:,LBj:)
416# ifdef DIAGNOSTICS_UV
428 real(r8),
intent(inout) :: tl_ubar(LBi:,LBj:,:)
429 real(r8),
intent(inout) :: tl_vbar(LBi:,LBj:,:)
430 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
431# if defined NESTING && !defined SOLVE3D
432 real(r8),
intent(out ) :: tl_DU_flux(LBi:,LBj:)
433 real(r8),
intent(out ) :: tl_DV_flux(LBi:,LBj:)
439 real(r8),
intent(in ) :: pmask(LBi:UBi,LBj:UBj)
440 real(r8),
intent(in ) :: rmask(LBi:UBi,LBj:UBj)
441 real(r8),
intent(in ) :: umask(LBi:UBi,LBj:UBj)
442 real(r8),
intent(in ) :: vmask(LBi:UBi,LBj:UBj)
444# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
445 real(r8),
intent(in ) :: fomn(LBi:UBi,LBj:UBj)
447 real(r8),
intent(in ) :: h(LBi:UBi,LBj:UBj)
448 real(r8),
intent(in ) :: om_u(LBi:UBi,LBj:UBj)
449 real(r8),
intent(in ) :: om_v(LBi:UBi,LBj:UBj)
450 real(r8),
intent(in ) :: on_u(LBi:UBi,LBj:UBj)
451 real(r8),
intent(in ) :: on_v(LBi:UBi,LBj:UBj)
452 real(r8),
intent(in ) :: pm(LBi:UBi,LBj:UBj)
453 real(r8),
intent(in ) :: pn(LBi:UBi,LBj:UBj)
454# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
455 real(r8),
intent(in ) :: dndx(LBi:UBi,LBj:UBj)
456 real(r8),
intent(in ) :: dmde(LBi:UBi,LBj:UBj)
458 real(r8),
intent(in ) :: rdrag(LBi:UBi,LBj:UBj)
459# if defined UV_QDRAG && !defined SOLVE3D
460 real(r8),
intent(in ) :: rdrag2(LBi:UBi,LBj:UBj)
462# if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
463 real(r8),
intent(in ) :: pmon_r(LBi:UBi,LBj:UBj)
464 real(r8),
intent(in ) :: pnom_r(LBi:UBi,LBj:UBj)
465 real(r8),
intent(in ) :: pmon_p(LBi:UBi,LBj:UBj)
466 real(r8),
intent(in ) :: pnom_p(LBi:UBi,LBj:UBj)
467 real(r8),
intent(in ) :: om_r(LBi:UBi,LBj:UBj)
468 real(r8),
intent(in ) :: on_r(LBi:UBi,LBj:UBj)
469 real(r8),
intent(in ) :: om_p(LBi:UBi,LBj:UBj)
470 real(r8),
intent(in ) :: on_p(LBi:UBi,LBj:UBj)
472 real(r8),
intent(in ) :: visc2_p(LBi:UBi,LBj:UBj)
473 real(r8),
intent(in ) :: visc2_r(LBi:UBi,LBj:UBj)
476 real(r8),
intent(in ) :: visc4_p(LBi:UBi,LBj:UBj)
477 real(r8),
intent(in ) :: visc4_r(LBi:UBi,LBj:UBj)
480# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
481 real(r8),
intent(in ) :: tl_bed_thick(LBi:UBi,LBj:UBj,3)
484 real(r8),
intent(in ) :: ubar_stokes(LBi:UBi,LBj:UBj)
485 real(r8),
intent(in ) :: vbar_stokes(LBi:UBi,LBj:UBj)
487# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
488 real(r8),
intent(in ) :: eq_tide(LBi:UBi,LBj:UBj)
489 real(r8),
intent(in ) :: tl_eq_tide(LBi:UBi,LBj:UBj)
491 real(r8),
intent(in ) :: ubar(LBi:UBi,LBj:UBj,:)
492 real(r8),
intent(in ) :: vbar(LBi:UBi,LBj:UBj,:)
493 real(r8),
intent(in ) :: zeta(LBi:UBi,LBj:UBj,:)
494# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
495 real(r8),
intent(inout) :: tl_h(LBi:UBi,LBj:UBj)
497 real(r8),
intent(in ) :: tl_h(LBi:UBi,LBj:UBj)
500 real(r8),
intent(in ) :: tl_sustr(LBi:UBi,LBj:UBj)
501 real(r8),
intent(in ) :: tl_svstr(LBi:UBi,LBj:UBj)
503 real(r8),
intent(in ) :: Pair(LBi:UBi,LBj:UBj)
507 real(r8),
intent(in ) :: rhoA(LBi:UBi,LBj:UBj)
508 real(r8),
intent(in ) :: rhoS(LBi:UBi,LBj:UBj)
509 real(r8),
intent(in ) :: tl_rhoA(LBi:UBi,LBj:UBj)
510 real(r8),
intent(in ) :: tl_rhoS(LBi:UBi,LBj:UBj)
512 real(r8),
intent(in ) :: rufrc(LBi:UBi,LBj:UBj)
513 real(r8),
intent(in ) :: rvfrc(LBi:UBi,LBj:UBj)
515 real(r8),
intent(inout) :: tl_DU_avg1(LBi:UBi,LBj:UBj)
516 real(r8),
intent(inout) :: tl_DU_avg2(LBi:UBi,LBj:UBj)
517 real(r8),
intent(inout) :: tl_DV_avg1(LBi:UBi,LBj:UBj)
518 real(r8),
intent(inout) :: tl_DV_avg2(LBi:UBi,LBj:UBj)
519 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:UBi,LBj:UBj)
520 real(r8),
intent(inout) :: tl_rufrc(LBi:UBi,LBj:UBj)
521 real(r8),
intent(inout) :: tl_rvfrc(LBi:UBi,LBj:UBj)
522 real(r8),
intent(inout) :: tl_rufrc_bak(LBi:UBi,LBj:UBj,2)
523 real(r8),
intent(inout) :: tl_rvfrc_bak(LBi:UBi,LBj:UBj,2)
526 real(r8),
intent(inout) :: tl_rustr2d(LBi:UBi,LBj:UBj)
527 real(r8),
intent(inout) :: tl_rvstr2d(LBi:UBi,LBj:UBj)
528 real(r8),
intent(inout) :: tl_rulag2d(LBi:UBi,LBj:UBj)
529 real(r8),
intent(inout) :: tl_rvlag2d(LBi:UBi,LBj:UBj)
530 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:UBi,LBj:UBj)
531 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:UBi,LBj:UBj)
533# ifdef WET_DRY_NOT_YET
534 real(r8),
intent(inout) :: pmask_full(LBi:UBi,LBj:UBj)
535 real(r8),
intent(inout) :: rmask_full(LBi:UBi,LBj:UBj)
536 real(r8),
intent(inout) :: umask_full(LBi:UBi,LBj:UBj)
537 real(r8),
intent(inout) :: vmask_full(LBi:UBi,LBj:UBj)
539 real(r8),
intent(inout) :: pmask_wet(LBi:UBi,LBj:UBj)
540 real(r8),
intent(inout) :: rmask_wet(LBi:UBi,LBj:UBj)
541 real(r8),
intent(inout) :: umask_wet(LBi:UBi,LBj:UBj)
542 real(r8),
intent(inout) :: vmask_wet(LBi:UBi,LBj:UBj)
544 real(r8),
intent(inout) :: rmask_wet_avg(LBi:UBi,LBj:UBj)
547# ifdef DIAGNOSTICS_UV
559 real(r8),
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
560 real(r8),
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
561 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
562# if defined NESTING && !defined SOLVE3D
563 real(r8),
intent(out ) :: tl_DU_flux(LBi:UBi,LBj:UBj)
564 real(r8),
intent(out ) :: tl_DV_flux(LBi:UBi,LBj:UBj)
571 integer :: kbak, kold
576 real(r8) :: bkw0, bkw1, bkw2, bkw_new
577 real(r8) :: fwd0, fwd1, fwd2
579 real(r8) :: cfwd0, cfwd1, cfwd2
581 real(r8) :: cff, cff1, cff2, cff3, cff4
582#ifdef WET_DRY_NOT_YET
583 real(r8) :: cff5, cff6, cff7
585 real(r8) :: fac, fac1, fac2
586 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3, tl_cff4
587#ifdef WET_DRY_NOT_YET
588 real(r8) :: tl_cff5, tl_cff6, tl_cff7
590 real(r8) :: tl_fac, tl_fac1, tl_fac2
592 real(r8),
parameter :: IniVal = 0.0_r8
595#if defined UV_C4ADVECTION && !defined SOLVE3D
596 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dgrad
598 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dnew
599 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dnew_rd
600 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs
601#if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
602 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs_p
604 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dstp
605 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUon
606 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVom
608 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUSon
609 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVSom
611#if defined STEP2D_CORIOLIS || !defined SOLVE3D
612 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
613 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
616 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
617 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
619#if defined UV_C4ADVECTION && !defined SOLVE3D
620 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
622 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta2
623#if defined VAR_RHO_2D && defined SOLVE3D
624 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzetaSA
626 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rubar
627 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rvbar
628 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta
629 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: urhs
630 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: vrhs
631 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zeta_new
632 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zwrk
633#ifdef WET_DRY_NOT_YET
634 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: wetdry
643#if defined UV_C4ADVECTION && !defined SOLVE3D
644 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dgrad
646 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dnew
647 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dnew_rd
648 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs
649#if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
650 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs_p
652 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dstp
653 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUon
654 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVom
656 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUSon
657 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVSom
659#if defined STEP2D_CORIOLIS || !defined SOLVE3D
660 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFx
661 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFe
664 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFe
665 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFx
667#if defined UV_C4ADVECTION && !defined SOLVE3D
668 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
670 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzeta2
671#if defined VAR_RHO_2D && defined SOLVE3D
672 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzetaSA
674 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzeta
675 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rubar
676 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rvbar
677 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_urhs
678 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_vrhs
679 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_zwrk
681 real(r8),
allocatable :: tl_zeta_new(:,:)
683#include "set_bounds.h"
691# if defined UV_C4ADVECTION && !defined SOLVE3D
697# if (defined UV_VIS2 || defined UV_VIS4) && !defined SOLVE3D
703# if defined STEP2D_CORIOLIS || !defined SOLVE3D
711# if defined UV_C4ADVECTION && !defined SOLVE3D
715# if defined VAR_RHO_2D && defined SOLVE3D
724# ifdef WET_DRY_NOT_YET
727# ifdef DIAGNOSTICS_UV
757 IF (first_2d_step)
THEN
772 ELSE IF (first_2d_step+1)
THEN
774 IF (kbak.lt.1) kbak=4
779 bkw_new=1.0833333333333_r8
780 bkw0=-0.1666666666666_r8
781 bkw1= 0.0833333333333_r8
785 IF (kbak.lt.1) kbak=4
787 IF (kold.lt.1) kold=4
800 WRITE (20,10)
iic(ng),
iif(ng), kold, kbak, kstp, knew
801 10
FORMAT (
' iic = ',i5.5,
' iif = ',i3.3, &
802 &
' kold = ',i1,
' kbak = ',i1,
' kstp = ',i1,
' knew = ',i1)
815#if defined DISTRIBUTE && !defined NESTING
816# define IR_RANGE IstrUm2-1,Iendp2
817# define JR_RANGE JstrVm2-1,Jendp2
818# define IU_RANGE IstrUm1-1,Iendp2
819# define JU_RANGE Jstrm1-1,Jendp2
820# define IV_RANGE Istrm1-1,Iendp2
821# define JV_RANGE JstrVm1-1,Jendp2
823# define IR_RANGE IstrUm2-1,Iendp2
824# define JR_RANGE JstrVm2-1,Jendp2
825# define IU_RANGE IstrUm2,Iendp2
826# define JU_RANGE JstrVm2-1,Jendp2
827# define IV_RANGE IstrUm2-1,Iendp2
828# define JV_RANGE JstrVm2,Jendp2
837 drhs(i,j)=h(i,j)+zeta(i,j,kstp)
838 tl_drhs(i,j)=tl_h(i,j)+fwd0*tl_zeta(i,j,kstp)+ &
839 & fwd1*tl_zeta(i,j,kbak)+ &
840 & fwd2*tl_zeta(i,j,kold)
847 cff1=cff*(drhs(i,j)+drhs(i-1,j))
848 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i-1,j))
853 urhs(i,j)=ubar(i,j,kstp)
854 tl_urhs(i,j)=fwd0*tl_ubar(i,j,kstp)+ &
855 & fwd1*tl_ubar(i,j,kbak)+ &
856 & fwd2*tl_ubar(i,j,kold)
857 duon(i,j)=urhs(i,j)*cff1
858 tl_duon(i,j)=tl_urhs(i,j)*cff1+ &
866 cff1=cff*(drhs(i,j)+drhs(i,j-1))
867 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i,j-1))
872 vrhs(i,j)=vbar(i,j,kstp)
873 tl_vrhs(i,j)=fwd0*tl_vbar(i,j,kstp)+ &
874 & fwd1*tl_vbar(i,j,kbak)+ &
875 & fwd2*tl_vbar(i,j,kold)
876 dvom(i,j)=vrhs(i,j)*cff1
877 tl_dvom(i,j)=tl_vrhs(i,j)*cff1+ &
887#if defined DISTRIBUTE && \
888 defined uv_adv && defined uv_c4advection &&
899 & imins, imaxs, jmins, jmaxs, &
902 & imins, imaxs, jmins, jmaxs, &
905 & imins, imaxs, jmins, jmaxs, &
908 & imins, imaxs, jmins, jmaxs, &
912 & imins, imaxs, jmins, jmaxs, &
925 & lbi, ubi, lbj, ubj, &
926 & imins, imaxs, jmins, jmaxs, &
935 & lbi, ubi, lbj, ubj, &
936 & imins, imaxs, jmins, jmaxs, &
941 & h, tl_h, om_v, on_u, &
942 & ubar, vbar, zeta, &
943 & tl_ubar, tl_vbar, tl_zeta)
949 & lbi, ubi, lbj, ubj, &
950 & imins, imaxs, jmins, jmaxs, &
959 & lbi, ubi, lbj, ubj, &
960 & imins, imaxs, jmins, jmaxs, &
967 & tl_ubar, tl_vbar, &
968 & drhs, duon, dvom, &
969 & tl_drhs, tl_duon, tl_dvom)
980 allocate ( tl_zeta_new(imins:imaxs,jmins:jmaxs) )
988 zeta_new(i,j)=zeta(i,j,knew)
990 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
991# ifdef WET_DRY_NOT_YET
996 dnew(i,j)=h(i,j)+zeta_new(i,j)
997 dnew_rd(i,j)=dnew(i,j)
998 dstp(i,j)=h(i,j)+zeta(i,j,kstp)
1014 fac=
dtfast(ng)*pm(i,j)*pn(i,j)
1019 tl_zeta_new(i,j)=tl_zeta(i,j,kstp)+ &
1020 & fac*(tl_duon(i,j)-tl_duon(i+1,j)+ &
1021 & tl_dvom(i,j)-tl_dvom(i,j+1))
1025 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
1026# ifdef WET_DRY_NOT_YET
1031 zwrk(i,j)=bkw_new*zeta_new(i,j)+ &
1032 & bkw0*zeta(i,j,kstp)+ &
1033 & bkw1*zeta(i,j,kbak)+ &
1034 & bkw2*zeta(i,j,kold)
1035 tl_zwrk(i,j)=bkw_new*tl_zeta_new(i,j)+ &
1036 & bkw0*tl_zeta(i,j,kstp)+ &
1037 & bkw1*tl_zeta(i,j,kbak)+ &
1038 & bkw2*tl_zeta(i,j,kold)
1040#if defined VAR_RHO_2D && defined SOLVE3D
1041 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
1042 tl_rzeta(i,j)=(1.0_r8+rhos(i,j))*tl_zwrk(i,j)+ &
1043 & tl_rhos(i,j)*zwrk(i,j)
1044 rzeta2(i,j)=rzeta(i,j)*zwrk(i,j)
1045 tl_rzeta2(i,j)=tl_rzeta(i,j)*zwrk(i,j)+ &
1046 & rzeta(i,j)*tl_zwrk(i,j)
1047 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1048 tl_rzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
1049 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))
1051 rzeta(i,j)=zwrk(i,j)
1052 tl_rzeta(i,j)=tl_zwrk(i,j)
1053 rzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
1054 tl_rzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)
1065 IF (int(
sources(ng)%Dsrc(is)).eq.2)
THEN
1068 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1069 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1096 CALL tl_zetabc_local (ng, tile, &
1097 & lbi, ubi, lbj, ubj, &
1098 & imins, imaxs, jmins, jmaxs, &
1101 & zeta_new, tl_zeta_new)
1109 tl_zeta(i,j,knew)=tl_zeta_new(i,j)
1127 IF (first_2d_step)
THEN
1132 tl_zt_avg1(i,j)=cff1*tl_zeta(i,j,knew)
1136 tl_du_avg1(i,j)=0.0_r8
1139 tl_du_avg2(i,j)=cff2*tl_duon(i,j)
1144 tl_dv_avg1(i,j)=0.0_r8
1147 tl_dv_avg2(i,j)=cff2*tl_dvom(i,j)
1156 tl_zt_avg1(i,j)=tl_zt_avg1(i,j)+cff1*tl_zeta(i,j,knew)
1160 tl_du_avg2(i,j)=tl_du_avg2(i,j)+cff2*tl_duon(i,j)
1165 tl_dv_avg2(i,j)=tl_dv_avg2(i,j)+cff2*tl_dvom(i,j)
1184# ifdef STEP2D_CORIOLIS
1197#if defined VAR_RHO_2D && defined SOLVE3D
1198 cff2=0.333333333333_r8
1200#if defined ATM_PRESS && !defined SOLVE3D
1201 cff3=0.5_r8*100.0_r8/
rho0
1205 IF (i.ge.istru)
THEN
1211#if defined VAR_RHO_2D && defined SOLVE3D
1224 tl_rubar(i,j)=cff1*on_u(i,j)* &
1231 & (tl_rzeta(i-1,j)- &
1232 & tl_rzeta(i ,j))+ &
1233#if defined VAR_RHO_2D && defined SOLVE3D
1236 & (rzetasa(i-1,j)+ &
1238 & cff2*(rhoa(i-1,j)- &
1244 & (tl_rzetasa(i-1,j)+ &
1245 & tl_rzetasa(i ,j)+ &
1246 & cff2*((tl_rhoa(i-1,j)- &
1252 & (tl_zwrk(i-1,j)- &
1253 & tl_zwrk(i ,j))))+ &
1255 & (tl_rzeta2(i-1,j)- &
1257#if defined ATM_PRESS && !defined SOLVE3D
1264 tl_rubar(i,j)=tl_rubar(i,j)- &
1266 & (tl_h(i-1,j)+tl_h(i,j)+ &
1267 & tl_rzeta(i-1,j)+tl_rzeta(i,j))* &
1268 & (pair(i,j)-pair(i-1,j))
1270#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1277 tl_rubar(i,j)=tl_rubar(i,j)- &
1279 & ((tl_h(i-1,j)+tl_h(i,j)+ &
1280 & tl_rzeta(i-1,j)+tl_rzeta(i,j))* &
1281 & (eq_tide(i,j)-eq_tide(i-1,j))+ &
1282 & (h(i-1,j)+h(i,j)+ &
1283 & rzeta(i-1,j)+rzeta(i,j))* &
1284 & (tl_eq_tide(i,j)-tl_eq_tide(i-1,j)))
1286#ifdef DIAGNOSTICS_UV
1291 IF (j.ge.jstrv)
THEN
1297#if defined VAR_RHO_2D && defined SOLVE3D
1310 tl_rvbar(i,j)=cff1*om_v(i,j)* &
1317 & (tl_rzeta(i,j-1)- &
1318 & tl_rzeta(i,j ))+ &
1319#if defined VAR_RHO_2D && defined SOLVE3D
1322 & (rzetasa(i,j-1)+ &
1324 & cff2*(rhoa(i,j-1)- &
1330 & (tl_rzetasa(i,j-1)+ &
1331 & tl_rzetasa(i,j )+ &
1332 & cff2*((tl_rhoa(i,j-1)- &
1338 & (tl_zwrk(i,j-1)- &
1339 & tl_zwrk(i,j ))))+ &
1341 & (tl_rzeta2(i,j-1)- &
1343#if defined ATM_PRESS && !defined SOLVE3D
1350 tl_rvbar(i,j)=tl_rvbar(i,j)- &
1352 & (tl_h(i,j-1)+tl_h(i,j)+ &
1353 & tl_rzeta(i,j-1)+tl_rzeta(i,j))* &
1354 & (pair(i,j)-pair(i,j-1))
1356#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1363 tl_rvbar(i,j)=tl_rvbar(i,j)- &
1365 & ((tl_h(i,j-1)+tl_h(i,j)+ &
1366 & tl_rzeta(i,j-1)+tl_rzeta(i,j))* &
1367 & (eq_tide(i,j)-eq_tide(i,j-1))+ &
1368 & (h(i,j-1)+h(i,j)+ &
1369 & rzeta(i,j-1)+rzeta(i,j))* &
1370 & (tl_eq_tide(i,j)-tl_eq_tide(i,j-1)))
1372#ifdef DIAGNOSTICS_UV
1379#if defined UV_ADV && !defined SOLVE3D
1385# ifdef UV_C2ADVECTION
1391 IF (i.ge.istru-1)
THEN
1401 tl_ufx(i,j)=0.25_r8* &
1402 & ((tl_duon(i,j)+tl_duon(i+1,j))* &
1405 & ubar_stokes(i ,j)+ &
1406 & ubar_stokes(i+1,j)+ &
1409 & (duon(i,j)+duon(i+1,j))* &
1412 & tl_ubar_stokes(i ,j)+ &
1413 & tl_ubar_stokes(i+1,j)+ &
1430 tl_vfx(i+1,j)=0.25_r8* &
1434 & ((tl_duon(i+1,j)+tl_duon(i+1,j-1))* &
1437 & vbar_stokes(i ,j)+ &
1438 & vbar_stokes(i-1,j)+ &
1441 & (duon(i+1,j)+duon(i+1,j-1))* &
1442 & (tl_vrhs(i+1,j)+ &
1444 & tl_vbar_stokes(i ,j)+ &
1445 & tl_vbar_stokes(i-1,j)+ &
1453 IF (j.ge.jstrv-1)
THEN
1463 tl_vfe(i,j)=0.25_r8* &
1464 & ((tl_dvom(i,j)+tl_dvom(i,j+1))* &
1467 & vbar_stokes(i,j )+ &
1468 & vbar_stokes(i,j+1)+ &
1471 & (dvom(i,j)+dvom(i,j+1))* &
1474 & tl_vbar_stokes(i,j )+ &
1475 & tl_vbar_stokes(i,j+1)+ &
1492 tl_ufe(i,j+1)=0.25_r8* &
1496 & ((tl_dvom(i,j+1)+tl_dvom(i-1,j+1))* &
1499 & ubar_stokes(i,j+1)+ &
1500 & ubar_stokes(i,j )+ &
1503 & (dvom(i,j+1)+dvom(i-1,j+1))* &
1504 & (tl_urhs(i,j+1)+ &
1506 & tl_ubar_stokes(i,j+1)+ &
1507 & tl_ubar_stokes(i,j )+ &
1513# elif defined UV_C4ADVECTION
1519 grad(i,j)=urhs(i-1,j)-2.0_r8*urhs(i,j)+ &
1521 & ubar_stokes(i-1,j)-2.0_r8*ubar_stokes(i,j)+ &
1522 & ubar_stokes(i+1,j)+ &
1525 tl_grad(i,j)=tl_urhs(i-1,j)-2.0_r8*tl_urhs(i,j)+ &
1527 & tl_ubar_stokes(i-1,j)-2.0_r8*tl_ubar_stokes(i,j)+&
1528 & tl_ubar_stokes(i+1,j)+ &
1531 dgrad(i,j)=duon(i-1,j)-2.0_r8*duon(i,j)+duon(i+1,j)
1532 tl_dgrad(i,j)=tl_duon(i-1,j)-2.0_r8*tl_duon(i,j)+ &
1537 IF (
domain(ng)%Western_Edge(tile))
THEN
1539 grad(istr,j)=grad(istr+1,j)
1540 tl_grad(istr,j)=tl_grad(istr+1,j)
1541 dgrad(istr,j)=dgrad(istr+1,j)
1542 tl_dgrad(istr,j)=tl_dgrad(istr+1,j)
1547 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1549 grad(iend+1,j)=grad(iend,j)
1550 tl_grad(iend+1,j)=tl_grad(iend,j)
1551 dgrad(iend+1,j)=dgrad(iend,j)
1552 tl_dgrad(iend+1,j)=tl_dgrad(iend,j)
1570 tl_ufx(i,j)=0.25_r8* &
1573 & ubar_stokes(i ,j)+ &
1574 & ubar_stokes(i+1,j)+ &
1577 & cff*(grad(i,j)+grad(i+1,j)))* &
1578 & (tl_duon(i,j)+tl_duon(i+1,j)- &
1579 & cff*(tl_dgrad(i,j)+tl_dgrad(i+1,j)))+ &
1582 & tl_ubar_stokes(i ,j)+ &
1583 & tl_ubar_stokes(i+1,j)+ &
1586 & cff*(tl_grad(i,j)+tl_grad(i+1,j)))* &
1587 & (duon(i,j)+duon(i+1,j)- &
1588 & cff*(dgrad(i,j)+dgrad(i+1,j))))
1594 grad(i,j)=urhs(i,j-1)-2.0_r8*urhs(i,j)+ &
1596 & ubar_stokes(i,j-1)-2.0_r8*ubar_stokes(i,j)+ &
1597 & ubar_stokes(i,j+1)+ &
1600 tl_grad(i,j)=tl_urhs(i,j-1)-2.0_r8*tl_urhs(i,j)+ &
1602 & tl_ubar_stokes(i,j-1)-2.0_r8*tl_ubar_stokes(i,j)+&
1603 & tl_ubar_stokes(i,j+1)+ &
1609 IF (
domain(ng)%Southern_Edge(tile))
THEN
1611 grad(i,jstr-1)=grad(i,jstr)
1612 tl_grad(i,jstr-1)=tl_grad(i,jstr)
1617 IF (
domain(ng)%Northern_Edge(tile))
THEN
1619 grad(i,jend+1)=grad(i,jend)
1620 tl_grad(i,jend+1)=tl_grad(i,jend)
1626 dgrad(i,j)=dvom(i-1,j)-2.0_r8*dvom(i,j)+dvom(i+1,j)
1627 tl_dgrad(i,j)=tl_dvom(i-1,j)-2.0_r8*tl_dvom(i,j)+ &
1645 tl_ufe(i,j)=0.25_r8* &
1646 & ((tl_urhs(i,j )+ &
1648 & tl_ubar_stokes(i,j )+ &
1649 & tl_ubar_stokes(i,j-1)+ &
1652 & cff*(tl_grad(i,j)+tl_grad(i,j-1)))* &
1653 & (dvom(i,j)+dvom(i-1,j)- &
1654 & cff*(dgrad(i,j)+dgrad(i-1,j)))+ &
1657 & ubar_stokes(i,j )+ &
1658 & ubar_stokes(i,j-1)+ &
1661 & cff*(grad(i,j)+grad(i,j-1)))* &
1662 & (tl_dvom(i,j)+tl_dvom(i-1,j)- &
1663 & cff*(tl_dgrad(i,j)+tl_dgrad(i-1,j))))
1671 grad(i,j)=vrhs(i-1,j)-2.0_r8*vrhs(i,j)+ &
1673 & vbar_stokes(i-1,j)-2.0_r8*vbar_stokes(i,j)+ &
1674 & vbar_stokes(i+1,j)+ &
1677 tl_grad(i,j)=tl_vrhs(i-1,j)-2.0_r8*tl_vrhs(i,j)+ &
1679 & tl_vbar_stokes(i-1,j)-2.0_r8*tl_vbar_stokes(i,j)+&
1680 & tl_vbar_stokes(i+1,j)+ &
1686 IF (
domain(ng)%Western_Edge(tile))
THEN
1688 grad(istr-1,j)=grad(istr,j)
1689 tl_grad(istr-1,j)=tl_grad(istr,j)
1694 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1696 grad(iend+1,j)=grad(iend,j)
1697 tl_grad(iend+1,j)=tl_grad(iend,j)
1703 dgrad(i,j)=duon(i,j-1)-2.0_r8*duon(i,j)+duon(i,j+1)
1704 tl_dgrad(i,j)=tl_duon(i,j-1)-2.0_r8*tl_duon(i,j)+ &
1722 tl_vfx(i,j)=0.25_r8* &
1723 & ((tl_vrhs(i ,j)+ &
1725 & tl_vbar_stokes(i ,j)+ &
1726 & tl_vbar_stokes(i-1,j)+ &
1729 & cff*(tl_grad(i,j)+tl_grad(i-1,j)))* &
1730 & (duon(i,j)+duon(i,j-1)- &
1731 & cff*(dgrad(i,j)+dgrad(i,j-1)))+ &
1734 & vbar_stokes(i ,j)+ &
1735 & vbar_stokes(i-1,j)+ &
1738 & cff*(grad(i,j)+grad(i-1,j)))* &
1739 & (tl_duon(i,j)+tl_duon(i,j-1)- &
1740 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j-1))))
1746 grad(i,j)=vrhs(i,j-1)-2.0_r8*vrhs(i,j)+ &
1748 & vbar_stokes(i,j-1)-2.0_r8*vbar_stokes(i,j)+ &
1749 & vbar_stokes(i,j+1)+ &
1752 tl_grad(i,j)=tl_vrhs(i,j-1)-2.0_r8*tl_vrhs(i,j)+ &
1754 & tl_vbar_stokes(i,j-1)-2.0_r8*tl_vbar_stokes(i,j)+&
1755 & tl_vbar_stokes(i,j+1)+ &
1758 dgrad(i,j)=dvom(i,j-1)-2.0_r8*dvom(i,j)+dvom(i,j+1)
1759 tl_dgrad(i,j)=tl_dvom(i,j-1)-2.0_r8*tl_dvom(i,j)+ &
1764 IF (
domain(ng)%Southern_Edge(tile))
THEN
1766 grad(i,jstr)=grad(i,jstr+1)
1767 tl_grad(i,jstr)=tl_grad(i,jstr+1)
1768 dgrad(i,jstr)=dgrad(i,jstr+1)
1769 tl_dgrad(i,jstr)=tl_dgrad(i,jstr+1)
1774 IF (
domain(ng)%Northern_Edge(tile))
THEN
1776 grad(i,jend+1)=grad(i,jend)
1777 tl_grad(i,jend+1)=tl_grad(i,jend)
1778 dgrad(i,jend+1)=dgrad(i,jend)
1779 tl_dgrad(i,jend+1)=tl_dgrad(i,jend)
1797 tl_vfe(i,j)=0.25_r8* &
1798 & ((tl_vrhs(i,j )+ &
1800 & tl_vbar_stokes(i,j )+ &
1801 & tl_vbar_stokes(i,j+1)+ &
1804 & cff*(tl_grad(i,j)+tl_grad(i,j+1)))* &
1805 & (dvom(i,j)+dvom(i,j+1)- &
1806 & cff*(dgrad(i,j)+dgrad(i,j+1)))+ &
1809 & vbar_stokes(i,j )+ &
1810 & vbar_stokes(i,j+1)+ &
1813 & cff*(grad(i,j)+grad(i,j+1)))* &
1814 & (tl_dvom(i,j)+tl_dvom(i,j+1)- &
1815 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j+1))))
1824 IF (i.ge.istru)
THEN
1827 tl_cff1=tl_ufx(i,j)-tl_ufx(i-1,j)
1830 tl_cff2=tl_ufe(i,j+1)-tl_ufe(i,j)
1833 tl_fac1=tl_cff1+tl_cff2
1836 tl_rubar(i,j)=tl_rubar(i,j)-tl_fac1
1837# if defined DIAGNOSTICS_UV
1844 IF (j.ge.jstrv)
THEN
1847 tl_cff3=tl_vfx(i+1,j)-tl_vfx(i,j)
1850 tl_cff4=tl_vfe(i,j)-tl_vfe(i,j-1)
1853 tl_fac2=tl_cff3+tl_cff4
1856 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac2
1857# if defined DIAGNOSTICS_UV
1867#if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
1875 cff=0.5_r8*drhs(i,j)*fomn(i,j)
1876 tl_cff=0.5_r8*tl_drhs(i,j)*fomn(i,j)
1884 tl_ufx(i,j)=tl_cff*(vrhs(i,j )+ &
1886 & vbar_stokes(i,j )+ &
1887 & vbar_stokes(i,j+1)+ &
1890 & cff*(tl_vrhs(i,j )+ &
1892 & tl_vbar_stokes(i,j )+ &
1893 & tl_vbar_stokes(i,j+1)+ &
1904 tl_vfe(i,j)=tl_cff*(urhs(i ,j)+ &
1906 & ubar_stokes(i ,j)+ &
1907 & ubar_stokes(i+1,j)+ &
1910 & cff*(tl_urhs(i ,j)+ &
1912 & tl_ubar_stokes(i ,j)+ &
1913 & tl_ubar_stokes(i+1,j)+ &
1921 IF (i.ge.istru)
THEN
1924 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
1927 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac1
1928# if defined DIAGNOSTICS_UV
1933 IF (j.ge.jstrv)
THEN
1936 tl_fac2=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
1939 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac2
1940# if defined DIAGNOSTICS_UV
1948#if (defined CURVGRID && defined UV_ADV) && !defined SOLVE3D
1956 cff1=0.5_r8*(vrhs(i,j )+ &
1958 & vbar_stokes(i,j )+ &
1959 & vbar_stokes(i,j+1)+ &
1962 tl_cff1=0.5_r8*(tl_vrhs(i,j )+ &
1964 & tl_vbar_stokes(i,j )+ &
1965 & tl_vbar_stokes(i,j+1)+ &
1969 cff2=0.5_r8*(urhs(i ,j)+
1971 & ubar_stokes(i ,j)+ &
1972 & ubar_stokes(i+1,j)+ &
1975 tl_cff2=0.5_r8*(tl_urhs(i ,j)+ &
1977 & tl_ubar_stokes(i ,j)+ &
1978 & tl_ubar_stokes(i+1,j)+ &
1983 tl_cff3=tl_cff1*dndx(i,j)
1985 tl_cff4=tl_cff2*dmde(i,j)
1986 cff=drhs(i,j)*(cff3-cff4)
1987 tl_cff=tl_drhs(i,j)*(cff3-cff4)+ &
1988 & drhs(i,j)*(tl_cff3-tl_cff4)
1991 tl_ufx(i,j)=tl_cff*cff1+cff*tl_cff1
1994 tl_vfe(i,j)=tl_cff*cff2+cff*tl_cff2
1995# if defined DIAGNOSTICS_UV
2005 IF (i.ge.istru)
THEN
2008 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
2011 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac1
2012# if defined DIAGNOSTICS_UV
2020 IF (j.ge.jstrv)
THEN
2023 tl_fac1=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
2026 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac1
2027# if defined DIAGNOSTICS_UV
2038#if defined UV_VIS2 && !defined SOLVE3D
2048 drhs_p(i,j)=0.25_r8*(drhs(i,j )+drhs(i-1,j )+ &
2049 & drhs(i,j-1)+drhs(i-1,j-1))
2050 tl_drhs_p(i,j)=0.25_r8*(tl_drhs(i,j )+tl_drhs(i-1,j )+ &
2051 & tl_drhs(i,j-1)+tl_drhs(i-1,j-1))
2068 tl_cff=visc2_r(i,j)*0.5_r8* &
2071 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,kstp)- &
2072 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,kstp))- &
2074 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,kstp)- &
2075 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,kstp)))+ &
2078 & ((pn(i ,j)+pn(i+1,j))*tl_ubar(i+1,j,kstp)- &
2079 & (pn(i-1,j)+pn(i ,j))*tl_ubar(i ,j,kstp))- &
2081 & ((pm(i,j )+pm(i,j+1))*tl_vbar(i,j+1,kstp)- &
2082 & (pm(i,j-1)+pm(i,j ))*tl_vbar(i,j ,kstp))))
2085 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*tl_cff
2088 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*tl_cff
2102 tl_cff=visc2_p(i,j)*0.5_r8* &
2103 & (tl_drhs_p(i,j)* &
2105 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,kstp)- &
2106 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,kstp))+ &
2108 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,kstp)- &
2109 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,kstp)))+ &
2112 & ((pn(i ,j-1)+pn(i ,j))*tl_vbar(i ,j,kstp)- &
2113 & (pn(i-1,j-1)+pn(i-1,j))*tl_vbar(i-1,j,kstp))+ &
2115 & ((pm(i-1,j )+pm(i,j ))*tl_ubar(i,j ,kstp)- &
2116 & (pm(i-1,j-1)+pm(i,j-1))*tl_ubar(i,j-1,kstp))))
2120 tl_cff=tl_cff*pmask(i,j)
2122# ifdef WET_DRY_NOT_YET
2125 tl_cff=tl_cff*pmask_wet(i,j)
2129 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*tl_cff
2132 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*tl_cff
2140 IF (i.ge.istru)
THEN
2143 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2144 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2147 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2148 & (tl_ufe(i,j+1)-tl_ufe(i ,j))
2151 tl_fac1=tl_cff1+tl_cff2
2154 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac1
2155# if defined DIAGNOSTICS_UV
2162 IF (j.ge.jstrv)
THEN
2165 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2166 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2169 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2170 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2173 tl_fac1=tl_cff1-tl_cff2
2176 tl_rvbar(i,j)=tl_rvbar(i,j)+tl_fac1
2177# if defined DIAGNOSTICS_UV
2211 coupled_step :
IF (first_2d_step)
THEN
2227 cfwd1=-0.5_r8-2.0_r8*cfwd2
2243 IF (i.ge.istru)
THEN
2248 tl_rufrc(i,j)=tl_rufrc(i,j)+ &
2249 & 0.5_r8*(rdrag(i,j)+rdrag(i-1,j))* &
2250 & om_u(i,j)*on_u(i,j)*tl_ubar(i,j,kstp)
2253 IF (j.ge.jstrv)
THEN
2258 tl_rvfrc(i,j)=tl_rvfrc(i,j)+ &
2259 & 0.5_r8*(rdrag(i,j)+rdrag(i,j-1))* &
2260 & om_v(i,j)*on_v(i,j)*tl_vbar(i,j,kstp)
2265 IF (i.ge.istru)
THEN
2268 tl_cff1=tl_rufrc(i,j)-tl_rubar(i,j)
2273 tl_rufrc(i,j)=cfwd0*tl_cff1+ &
2274 & cfwd1*tl_rufrc_bak(i,j, nstp)+ &
2275 & cfwd2*tl_rufrc_bak(i,j,3-nstp)
2278 tl_rufrc_bak(i,j,3-nstp)=tl_cff1
2281 IF (j.ge.jstrv)
THEN
2284 tl_cff2=tl_rvfrc(i,j)-tl_rvbar(i,j)
2289 tl_rvfrc(i,j)=cfwd0*tl_cff2+ &
2290 & cfwd1*tl_rvfrc_bak(i,j, nstp)+ &
2291 & cfwd2*tl_rvfrc_bak(i,j,3-nstp)
2294 tl_rvfrc_bak(i,j,3-nstp)=tl_cff2
2307 tl_zwrk(i,j)=tl_zeta_new(i,j)-tl_zeta(i,j,kstp)
2308# if defined VAR_RHO_2D && defined SOLVE3D
2311 tl_rzeta(i,j)=(1.0_r8+rhos(i,j))*tl_zwrk(i,j)+ &
2312 & tl_rhos(i,j)*zwrk(i,j)
2315 tl_rzeta2(i,j)=tl_rzeta(i,j)* &
2316 & (zeta_new(i,j)+zeta(i,j,kstp))+ &
2318 & (tl_zeta_new(i,j)+tl_zeta(i,j,kstp))
2321 tl_rzetasa(i,j)=tl_zwrk(i,j)* &
2322 & (rhos(i,j)-rhoa(i,j))+ &
2324 & (tl_rhos(i,j)-tl_rhoa(i,j))
2328 tl_rzeta(i,j)=tl_zwrk(i,j)
2331 tl_rzeta2(i,j)=tl_zwrk(i,j)* &
2332 & (zeta_new(i,j)+zeta(i,j,kstp))+ &
2334 & (tl_zeta_new(i,j)+tl_zeta(i,j,kstp))
2340# if defined VAR_RHO_2D && defined SOLVE3D
2341 cff2=0.333333333333_r8
2345 IF (i.ge.istru)
THEN
2352# if defined VAR_RHO_2D && defined SOLVE3D
2365 tl_rubar(i,j)=tl_rubar(i,j)+ &
2373 & (tl_rzeta(i-1,j)- &
2374 & tl_rzeta(i ,j))+ &
2375# if defined VAR_RHO_2D && defined SOLVE3D
2378 & (rzetasa(i-1,j)+ &
2380 & cff2*(rhoa(i-1,j)- &
2386 & (tl_rzetasa(i-1,j)+ &
2387 & tl_rzetasa(i ,j)+ &
2388 & cff2*((tl_rhoa(i-1,j)- &
2394 & (tl_zwrk(i-1,j)- &
2395 & tl_zwrk(i ,j))))+ &
2397 & (tl_rzeta2(i-1,j)- &
2399# ifdef DIAGNOSTICS_UV
2405 IF (j.ge.jstrv)
THEN
2412# if defined VAR_RHO_2D && defined SOLVE3D
2425 tl_rvbar(i,j)=tl_rvbar(i,j)+ &
2433 & (tl_rzeta(i,j-1)- &
2434 & tl_rzeta(i,j ))+ &
2435# if defined VAR_RHO_2D && defined SOLVE3D
2438 & (rzetasa(i,j-1)+ &
2440 & cff2*(rhoa(i,j-1)- &
2446 & (tl_rzetasa(i,j-1)+ &
2447 & tl_rzetasa(i,j )+ &
2448 & cff2*((tl_rhoa(i,j-1)- &
2454 & (tl_zwrk(i,j-1)- &
2455 & tl_zwrk(i,j ))))+ &
2457 & (tl_rzeta2(i,j-1)- &
2459# ifdef DIAGNOSTICS_UV
2499 tl_dnew(i,j)=tl_h(i,j)+tl_zeta_new(i,j)
2502 tl_dnew_rd(i,j)=tl_dnew(i,j)
2505 tl_dstp(i,j)=tl_h(i,j)+tl_zeta(i,j,kstp)
2509#if defined UV_QDRAG && !defined SOLVE3D
2521 cff=
dtfast(ng)/sqrt(3.0_r8)
2524 cff1=ubar(i ,j,kstp)**2+ &
2525 & ubar(i+1,j,kstp)**2+ &
2526 & ubar(i ,j,kstp)*ubar(i+1,j,kstp)+ &
2527 & vbar(i,j ,kstp)**2+ &
2528 & vbar(i,j+1,kstp)**2+ &
2529 & vbar(i,j ,kstp)*vbar(i,j+1,kstp)
2530 tl_cff1=2.0_r8*ubar(i ,j,kstp)*tl_ubar(i ,j,kstp)+ &
2531 & 2.0_r8*ubar(i+1,j,kstp)*tl_ubar(i+1,j,kstp)+ &
2532 & tl_ubar(i ,j,kstp)*ubar(i+1,j,kstp)+ &
2533 & tl_ubar(i+1,j,kstp)*ubar(i ,j,kstp)+ &
2534 & 2.0_r8*vbar(i,j ,kstp)*tl_vbar(i,j ,kstp)+ &
2535 & 2.0_r8*vbar(i,j+1,kstp)*tl_ vbar(i,j+1,kstp)+ &
2536 & tl_vbar(i,j ,kstp)*vbar(i,j+1,kstp)+ &
2537 & tl_vbar(i,j+1,kstp)*vbar(i,j ,kstp)
2539 tl_cff2=0.5_r8*tl_cff1/cff2
2543 tl_dnew_rd(i,j)=tl_dnew_rd(i,j)+ &
2544 & cff*rdrag2(i,j)*tl_cff2
2559 cff3=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
2560 fac1=1.0_r8/(dnew_rd(i,j)+dnew_rd(i-1,j))
2561 tl_fac1=-fac1*fac1*(tl_dnew_rd(i,j)+tl_dnew_rd(i-1,j))
2570 tl_ubar(i,j,knew)=tl_fac1* &
2571 & ((dstp(i,j)+dstp(i-1,j))*ubar(i,j,kstp)+ &
2573 & cff3*(rubar(i,j)+rufrc(i,j)))+ &
2575 & cff3*rubar(i,j)+cff2*sustr(i,j))+ &
2578 & ((dstp(i,j)+dstp(i-1,j))* &
2579 & tl_ubar(i,j,kstp)+ &
2580 & (tl_dstp(i,j)+tl_dstp(i-1,j))* &
2583 & cff3*(tl_rubar(i,j)+tl_rufrc(i,j)))
2585 & cff3*tl_rubar(i,j)+cff2*tl_sustr(i,j))
2590 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
2592#ifdef WET_DRY_NOT_YET
2606 tl_du_avg1(i,j)=tl_du_avg1(i,j)+ &
2608 & ((dnew(i,j)+dnew(i-1,j))* &
2609 & tl_ubar(i,j,knew)+ &
2610 & (tl_dnew(i,j)+tl_dnew(i-1,j))* &
2613#if defined NESTING && !defined SOLVE3D
2617 tl_du_flux(i,j)=0.5_r8*on_u(i,j)* &
2618 & ((dnew(i,j)+dnew(i-1,j))* &
2619 & tl_ubar(i,j,knew)+ &
2620 & (tl_dnew(i,j)+tl_dnew(i-1,j))* &
2628 cff3=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
2629 fac2=1.0_r8/(dnew_rd(i,j)+dnew_rd(i,j-1))
2630 tl_fac2=-fac2*fac2*(tl_dnew_rd(i,j)+tl_dnew_rd(i,j-1))
2639 tl_vbar(i,j,knew)=tl_fac2* &
2640 & ((dstp(i,j)+dstp(i,j-1))*vbar(i,j,kstp)+ &
2642 & cff3*(rvbar(i,j)+rvfrc(i,j)))+ &
2644 & cff3*rvbar(i,j)+cff2*svstr(i,j))+ &
2647 & ((dstp(i,j)+dstp(i,j-1))* &
2648 & tl_vbar(i,j,kstp)+ &
2649 & (tl_dstp(i,j)+tl_dstp(i,j-1))* &
2652 & cff3*(tl_rvbar(i,j)+tl_rvfrc(i,j)))
2654 & cff3*tl_rvbar(i,j)+cff2*tl_svstr(i,j))
2659 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
2661#ifdef WET_DRY_NOT_YET
2675 tl_dv_avg1(i,j)=tl_dv_avg1(i,j)+ &
2677 & ((dnew(i,j)+dnew(i,j-1))* &
2678 & tl_vbar(i,j,knew)+ &
2679 & (tl_dnew(i,j)+tl_dnew(i,j-1))* &
2682#if defined NESTING && !defined SOLVE3D
2686 tl_dv_flux(i,j)=0.5_r8*om_v(i,j)* &
2687 & ((dnew(i,j)+dnew(i,j-1))* &
2688 & tl_vbar(i,j,knew)+ &
2689 & (tl_dnew(i,j)+tl_dnew(i,j-1))* &
2704 & lbi, ubi, lbj, ubj, &
2705 & imins, imaxs, jmins, jmaxs, &
2706 & krhs, kstp, knew, &
2707 & ubar, vbar, zeta, &
2708 & tl_ubar, tl_vbar, tl_zeta)
2716 & lbi, ubi, lbj, ubj, &
2717 & imins, imaxs, jmins, jmaxs, &
2718 & krhs, kstp, knew, &
2719 & ubar, vbar, zeta, &
2720 & tl_ubar, tl_vbar, tl_zeta)
2737 & lbi, ubi, lbj, ubj, &
2738 & imins, imaxs, jmins, jmaxs, &
2743 & h, tl_h, om_v, on_u, &
2744 & ubar, vbar, zeta, &
2745 & tl_ubar, tl_vbar, tl_zeta)
2748#if defined SOLVE3D || (defined NESTING && !defined SOLVE3D)
2753 IF (
domain(ng)%Western_Edge(tile))
THEN
2757 tl_dnew(istr-1,j)=tl_h(istr-1,j)+tl_zeta_new(istr-1,j)
2762 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2766 tl_dnew(iend+1,j)=tl_h(iend+1,j)+tl_zeta_new(iend+1,j)
2771 IF (
domain(ng)%Southern_Edge(tile))
THEN
2775 tl_dnew(i,jstr-1)=tl_h(i,jstr-1)+tl_zeta_new(i,jstr-1)
2780 IF (
domain(ng)%Northern_Edge(tile))
THEN
2784 tl_dnew(i,jend+1)=tl_h(i,jend+1)+tl_zeta_new(i,jend+1)
2795 IF (
domain(ng)%Western_Edge(tile))
THEN
2797# if defined NESTING && !defined SOLVE3D
2802 tl_du_flux(istru-1,j)=0.5_r8*on_u(istru-1,j)* &
2803 & ((dnew(istru-1,j)+ &
2804 & dnew(istru-2,j))* &
2805 & tl_ubar(istru-1,j,knew)+ &
2806 & (tl_dnew(istru-1,j)+ &
2807 & tl_dnew(istru-2,j))* &
2808 & ubar(istru-1,j,knew))
2815 tl_du_avg1(istru-1,j)=tl_du_avg1(istru-1,j)+ &
2816 & cff1*on_u(istru-1,j)* &
2817 & ((dnew(istru-1,j)+ &
2818 & dnew(istru-2,j))* &
2819 & tl_ubar(istru-1,j,knew)+ &
2820 & (tl_dnew(istru-1,j)+ &
2821 & tl_dnew(istru-2,j))* &
2822 & ubar(istru-1,j,knew))
2826# if defined NESTING && !defined SOLVE3D
2831 tl_dv_flux(istr-1,j)=0.5_r8*om_v(istr-1,j)* &
2832 & ((dnew(istr-1,j )+ &
2833 & dnew(istr-1,j-1))* &
2834 & tl_vbar(istr-1,j,knew)+ &
2835 & (tl_dnew(istr-1,j )+ &
2836 & tl_dnew(istr-1,j-1))* &
2837 & vbar(istr-1,j,knew))
2844 tl_dv_avg1(istr-1,j)=tl_dv_avg1(istr-1,j)+ &
2845 & cff1*om_v(istr-1,j)* &
2846 & ((dnew(istr-1,j )+ &
2847 & dnew(istr-1,j-1))* &
2848 & tl_vbar(istr-1,j,knew)+ &
2849 & (tl_dnew(istr-1,j )+ &
2850 & tl_dnew(istr-1,j-1))* &
2851 & vbar(istr-1,j,knew))
2857 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2859# if defined NESTING && !defined SOLVE3D
2864 tl_du_flux(iend+1,j)=0.5_r8*on_u(iend+1,j)* &
2865 & ((dnew(iend+1,j)+ &
2867 & tl_ubar(iend+1,j,knew)+ &
2868 & (tl_dnew(iend+1,j)+ &
2869 & tl_dnew(iend ,j))* &
2870 & ubar(iend+1,j,knew))
2877 tl_du_avg1(iend+1,j)=tl_du_avg1(iend+1,j)+ &
2878 & cff1*on_u(iend+1,j)* &
2879 & ((dnew(iend+1,j)+ &
2881 & tl_ubar(iend+1,j,knew)+ &
2882 & (tl_dnew(iend+1,j)+ &
2883 & tl_dnew(iend ,j))* &
2884 & ubar(iend+1,j,knew))
2888# if defined NESTING && !defined SOLVE3D
2893 tl_dv_flux(iend+1,j)=0.5_r8*om_v(iend+1,j)* &
2894 & ((dnew(iend+1,j )+ &
2895 & dnew(iend+1,j-1))* &
2896 & tl_vbar(iend+1,j,knew)+ &
2897 & (tl_dnew(iend+1,j )+ &
2898 & tl_dnew(iend+1,j-1))* &
2899 & vbar(iend+1,j,knew))
2906 tl_dv_avg1(iend+1,j)=tl_dv_avg1(iend+1,j)+ &
2907 & cff1*om_v(iend+1,j)* &
2908 & ((dnew(iend+1,j )+ &
2909 & dnew(iend+1,j-1))* &
2910 & tl_vbar(iend+1,j,knew)+ &
2911 & (tl_dnew(iend+1,j )+ &
2912 & tl_dnew(iend+1,j-1))* &
2913 & vbar(iend+1,j,knew))
2919 IF (
domain(ng)%Southern_Edge(tile))
THEN
2921# if defined NESTING && !defined SOLVE3D
2926 tl_du_flux(i,jstr-1)=0.5_r8*on_u(i,jstr-1)* &
2927 & ((dnew(i ,jstr-1)+ &
2928 & dnew(i-1,jstr-1))* &
2929 & tl_ubar(i,jstr-1,knew)+ &
2930 & (tl_dnew(i ,jstr-1)+ &
2931 & tl_dnew(i-1,jstr-1))* &
2932 & ubar(i,jstr-1,knew))
2939 tl_du_avg1(i,jstr-1)=tl_du_avg1(i,jstr-1)+ &
2940 & cff1*on_u(i,jstr-1)* &
2941 & ((dnew(i ,jstr-1)+ &
2942 & dnew(i-1,jstr-1))* &
2943 & tl_ubar(i,jstr-1,knew)+ &
2944 & (tl_dnew(i ,jstr-1)+ &
2945 & tl_dnew(i-1,jstr-1))* &
2946 & ubar(i,jstr-1,knew))
2950# if defined NESTING && !defined SOLVE3D
2955 tl_dv_flux(i,jstrv-1)=0.5_r8*om_v(i,jstrv-1)* &
2956 & ((dnew(i,jstrv-1)+ &
2957 & dnew(i,jstrv-2))* &
2958 & tl_vbar(i,jstrv-1,knew)+ &
2959 & (tl_dnew(i,jstrv-1)+ &
2960 & tl_dnew(i,jstrv-2))* &
2961 & vbar(i,jstrv-1,knew))
2968 tl_dv_avg1(i,jstrv-1)=tl_dv_avg1(i,jstrv-1)+ &
2969 & cff1*om_v(i,jstrv-1)* &
2970 & ((dnew(i,jstrv-1)+ &
2971 & dnew(i,jstrv-2))* &
2972 & tl_vbar(i,jstrv-1,knew)+ &
2973 & (tl_dnew(i,jstrv-1)+ &
2974 & tl_dnew(i,jstrv-2))* &
2975 & vbar(i,jstrv-1,knew))
2981 IF (
domain(ng)%Northern_Edge(tile))
THEN
2983# if defined NESTING && !defined SOLVE3D
2988 tl_du_flux(i,jend+1)=0.5_r8*on_u(i,jend+1)* &
2989 & ((dnew(i ,jend+1)+ &
2990 & dnew(i-1,jend+1))* &
2991 & tl_ubar(i,jend+1,knew)+ &
2992 & (tl_dnew(i ,jend+1)+ &
2993 & tl_dnew(i-1,jend+1))* &
2994 & ubar(i,jend+1,knew))
3001 tl_du_avg1(i,jend+1)=tl_du_avg1(i,jend+1)+ &
3002 & cff1*on_u(i,jend+1)* &
3003 & ((dnew(i ,jend+1)+ &
3004 & dnew(i-1,jend+1))* &
3005 & tl_ubar(i,jend+1,knew)+ &
3006 & (tl_dnew(i ,jend+1)+ &
3007 & tl_dnew(i-1,jend+1))* &
3008 & ubar(i,jend+1,knew))
3012# if defined NESTING && !defined SOLVE3D
3017 tl_dv_flux(i,jend+1)=0.5_r8*om_v(i,jend+1)* &
3018 & ((dnew(i,jend+1)+ &
3020 & tl_vbar(i,jend+1,knew)+ &
3021 & (tl_dnew(i,jend+1)+ &
3022 & tl_dnew(i,jend ))* &
3023 & vbar(i,jend+1,knew))
3030 tl_dv_avg1(i,jend+1)=tl_dv_avg1(i,jend+1)+ &
3031 & cff1*om_v(i,jend+1)* &
3032 & ((dnew(i,jend+1)+ &
3034 & tl_vbar(i,jend+1,knew)+ &
3035 & (tl_dnew(i,jend+1)+ &
3036 & tl_dnew(i,jend ))* &
3037 & vbar(i,jend+1,knew))
3055 IF (((istrr.le.i).and.(i.le.iendr)).and. &
3056 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
3057 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
3058 cff=1.0_r8/(on_u(i,j)* &
3059 & 0.5_r8*(dnew(i-1,j)+dnew(i,j)))
3060 tl_cff=-cff*cff*on_u(i,j)* &
3061 & 0.5_r8*(tl_dnew(i-1,j)+tl_dnew(i ,j))
3064 tl_ubar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
3069 tl_du_avg1(i,j)=
sources(ng)%tl_Qbar(is)
3071#if defined NESTING && !defined SOLVE3D
3074 tl_du_flux(i,j)=
sources(ng)%tl_Qbar(is)
3076 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
3077 cff=1.0_r8/(om_v(i,j)* &
3078 & 0.5_r8*(dnew(i,j-1)+dnew(i,j)))
3079 tl_cff=-cff*cff*om_v(i,j)* &
3080 & 0.5_r8*(tl_dnew(i,j-1)+tl_dnew(i,j))
3083 tl_vbar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
3088 tl_dv_avg1(i,j)=
sources(ng)%tl_Qbar(is)
3090#if defined NESTING && !defined SOLVE3D
3093 tl_dv_flux(i,j)=
sources(ng)%tl_Qbar(is)
3102 deallocate ( tl_zeta_new )
3104#ifdef WET_DRY_NOT_YET
3144 tl_zeta(i,j,knew)=tl_zt_avg1(i,j)
3174 & lbi, ubi, lbj, ubj, &
3181 & lbi, ubi, lbj, ubj, &
3188 & lbi, ubi, lbj, ubj, &
3195 & lbi, ubi, lbj, ubj, &
3202 & lbi, ubi, lbj, ubj, &
3215 & lbi, ubi, lbj, ubj, &
3218 & tl_zt_avg1, tl_du_avg1, tl_dv_avg1)
3226 & lbi, ubi, lbj, ubj, &
3229 & tl_du_avg2, tl_dv_avg2)
3245 & lbi, ubi, lbj, ubj, &
3252 & lbi, ubi, lbj, ubj, &
3265 & lbi, ubi, lbj, ubj, &
3268 & tl_du_flux, tl_dv_flux)
3283 & lbi, ubi, lbj, ubj, &
3284 & tl_zeta(:,:,knew))
3290 & lbi, ubi, lbj, ubj, &
3291 & tl_ubar(:,:,knew))
3297 & lbi, ubi, lbj, ubj, &
3298 & tl_vbar(:,:,knew))
3312 & lbi, ubi, lbj, ubj, &
3315 & tl_zeta(:,:,knew), &
3316 & tl_ubar(:,:,knew), &
3317 & tl_vbar(:,:,knew))