198 & LBi, UBi, LBj, UBj, &
199 & IminS, ImaxS, JminS, JmaxS, &
205 & pmask, rmask, umask, vmask, &
207#ifdef WET_DRY_NOT_YET
208 & pmask_wet, pmask_full, &
209 & rmask_wet, rmask_full, &
210 & umask_wet, umask_full, &
211 & vmask_wet, vmask_full, &
216#if (defined UV_COR && !defined SOLVE3D) || defined step2d_coriolis
220 & om_u, om_v, on_u, on_v, omn, pm, pn, &
221#if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
224#if defined UV_VIS2 && !defined SOLVE3D
225 & pmon_r, pnom_r, pmon_p, pnom_p, &
226 & om_r, on_r, om_p, on_p, &
227 & visc2_p, visc2_r, &
229#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
233 & tl_rustr2d, tl_rvstr2d, &
234 & tl_rulag2d, tl_rvlag2d, &
235 & ubar_stokes, tl_ubar_stokes, &
236 & vbar_stokes, tl_vbar_stokes, &
238#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
239 & eq_tide, tl_eq_tide, &
254 & tl_du_avg1, tl_du_avg2, &
255 & tl_dv_avg1, tl_dv_avg2, &
259 & tl_rufrc_bak, tl_rvfrc_bak, &
261#if defined NESTING && !defined SOLVE3D
262 & tl_du_flux, tl_dv_flux, &
279 integer,
intent(in ) :: ng, tile
280 integer,
intent(in ) :: LBi, UBi, LBj, UBj
281 integer,
intent(in ) :: IminS, ImaxS, JminS, JmaxS
282 integer,
intent(in ) :: kstp, knew
284 integer,
intent(in ) :: nstp, nnew
289 real(r8),
intent(in ) :: pmask(LBi:,LBj:)
290 real(r8),
intent(in ) :: rmask(LBi:,LBj:)
291 real(r8),
intent(in ) :: umask(LBi:,LBj:)
292 real(r8),
intent(in ) :: vmask(LBi:,LBj:)
294# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
295 real(r8),
intent(in ) :: fomn(LBi:,LBj:)
297 real(r8),
intent(in ) :: h(LBi:,LBj:)
298 real(r8),
intent(in ) :: om_u(LBi:,LBj:)
299 real(r8),
intent(in ) :: om_v(LBi:,LBj:)
300 real(r8),
intent(in ) :: on_u(LBi:,LBj:)
301 real(r8),
intent(in ) :: on_v(LBi:,LBj:)
302 real(r8),
intent(in ) :: omn(LBi:,LBj:)
303 real(r8),
intent(in ) :: pm(LBi:,LBj:)
304 real(r8),
intent(in ) :: pn(LBi:,LBj:)
305# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
306 real(r8),
intent(in ) :: dndx(LBi:,LBj:)
307 real(r8),
intent(in ) :: dmde(LBi:,LBj:)
309# if defined UV_VIS2 && !defined SOLVE3D
310 real(r8),
intent(in ) :: pmon_r(LBi:,LBj:)
311 real(r8),
intent(in ) :: pnom_r(LBi:,LBj:)
312 real(r8),
intent(in ) :: pmon_p(LBi:,LBj:)
313 real(r8),
intent(in ) :: pnom_p(LBi:,LBj:)
314 real(r8),
intent(in ) :: om_r(LBi:,LBj:)
315 real(r8),
intent(in ) :: on_r(LBi:,LBj:)
316 real(r8),
intent(in ) :: om_p(LBi:,LBj:)
317 real(r8),
intent(in ) :: on_p(LBi:,LBj:)
318 real(r8),
intent(in ) :: visc2_p(LBi:,LBj:)
319 real(r8),
intent(in ) :: visc2_r(LBi:,LBj:)
321# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
322 real(r8),
intent(in ) :: tl_bed_thick(LBi:,LBj:,:)
325 real(r8),
intent(in ) :: ubar_stokes(LBi:,LBj:)
326 real(r8),
intent(in ) :: vbar_stokes(LBi:,LBj:)
328# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
329 real(r8),
intent(in ) :: eq_tide(LBi:,LBj:)
330 real(r8),
intent(in ) :: tl_eq_tide(LBi:,LBj:)
332 real(r8),
intent(in ) :: rufrc(LBi:,LBj:)
333 real(r8),
intent(in ) :: rvfrc(LBi:,LBj:)
334 real(r8),
intent(in ) :: ubar(LBi:,LBj:,:)
335 real(r8),
intent(in ) :: vbar(LBi:,LBj:,:)
336 real(r8),
intent(in ) :: zeta(LBi:,LBj:,:)
339 real(r8),
intent(in ) :: tl_sustr(LBi:,LBj:)
340 real(r8),
intent(in ) :: tl_svstr(LBi:,LBj:)
341 real(r8),
intent(in ) :: tl_bustr(LBi:,LBj:)
342 real(r8),
intent(in ) :: tl_bvstr(LBi:,LBj:)
344 real(r8),
intent(in ) :: Pair(LBi:,LBj:)
348 real(r8),
intent(in ) :: rhoA(LBi:,LBj:)
349 real(r8),
intent(in ) :: rhoS(LBi:,LBj:)
350 real(r8),
intent(in ) :: tl_rhoA(LBi:,LBj:)
351 real(r8),
intent(in ) :: tl_rhoS(LBi:,LBj:)
353 real(r8),
intent(inout) :: tl_DU_avg1(LBi:,LBj:)
354 real(r8),
intent(inout) :: tl_DU_avg2(LBi:,LBj:)
355 real(r8),
intent(inout) :: tl_DV_avg1(LBi:,LBj:)
356 real(r8),
intent(inout) :: tl_DV_avg2(LBi:,LBj:)
357 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:,LBj:)
358 real(r8),
intent(inout) :: tl_rufrc(LBi:,LBj:)
359 real(r8),
intent(inout) :: tl_rvfrc(LBi:,LBj:)
360 real(r8),
intent(inout) :: tl_rufrc_bak(LBi:,LBj:,:)
361 real(r8),
intent(inout) :: tl_rvfrc_bak(LBi:,LBj:,:)
364 real(r8),
intent(inout) :: tl_rustr2d(LBi:,LBj:)
365 real(r8),
intent(inout) :: tl_rvstr2d(LBi:,LBj:)
366 real(r8),
intent(inout) :: tl_rulag2d(LBi:,LBj:)
367 real(r8),
intent(inout) :: tl_rvlag2d(LBi:,LBj:)
368 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:,LBj:)
369 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:,LBj:)
371# ifdef WET_DRY_NOT_YET
372 real(r8),
intent(inout) :: pmask_full(LBi:,LBj:)
373 real(r8),
intent(inout) :: rmask_full(LBi:,LBj:)
374 real(r8),
intent(inout) :: umask_full(LBi:,LBj:)
375 real(r8),
intent(inout) :: vmask_full(LBi:,LBj:)
377 real(r8),
intent(inout) :: pmask_wet(LBi:,LBj:)
378 real(r8),
intent(inout) :: rmask_wet(LBi:,LBj:)
379 real(r8),
intent(inout) :: umask_wet(LBi:,LBj:)
380 real(r8),
intent(inout) :: vmask_wet(LBi:,LBj:)
382 real(r8),
intent(inout) :: rmask_wet_avg(LBi:,LBj:)
385# ifdef DIAGNOSTICS_UV
397 real(r8),
intent(inout) :: tl_ubar(LBi:,LBj:,:)
398 real(r8),
intent(inout) :: tl_vbar(LBi:,LBj:,:)
399 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
400 real(r8),
intent(inout) :: tl_h(LBi:,LBj:)
401# if defined NESTING && !defined SOLVE3D
402 real(r8),
intent(out ) :: tl_DU_flux(LBi:,LBj:)
403 real(r8),
intent(out ) :: tl_DV_flux(LBi:,LBj:)
409 real(r8),
intent(in ) :: pmask(LBi:UBi,LBj:UBj)
410 real(r8),
intent(in ) :: rmask(LBi:UBi,LBj:UBj)
411 real(r8),
intent(in ) :: umask(LBi:UBi,LBj:UBj)
412 real(r8),
intent(in ) :: vmask(LBi:UBi,LBj:UBj)
414# if (defined UV_COR && !defined SOLVE3D) || defined STEP2D_CORIOLIS
415 real(r8),
intent(in ) :: fomn(LBi:UBi,LBj:UBj)
417 real(r8),
intent(in ) :: h(LBi:UBi,LBj:UBj)
418 real(r8),
intent(in ) :: om_u(LBi:UBi,LBj:UBj)
419 real(r8),
intent(in ) :: om_v(LBi:UBi,LBj:UBj)
420 real(r8),
intent(in ) :: on_u(LBi:UBi,LBj:UBj)
421 real(r8),
intent(in ) :: on_v(LBi:UBi,LBj:UBj)
422 real(r8),
intent(in ) :: omn(LBi:UBi,LBj:UBj)
423 real(r8),
intent(in ) :: pm(LBi:UBi,LBj:UBj)
424 real(r8),
intent(in ) :: pn(LBi:UBi,LBj:UBj)
425# if defined CURVGRID && defined UV_ADV && !defined SOLVE3D
426 real(r8),
intent(in ) :: dndx(LBi:UBi,LBj:UBj)
427 real(r8),
intent(in ) :: dmde(LBi:UBi,LBj:UBj)
429# if defined UV_VIS2 && !defined SOLVE3D
430 real(r8),
intent(in ) :: pmon_r(LBi:UBi,LBj:UBj)
431 real(r8),
intent(in ) :: pnom_r(LBi:UBi,LBj:UBj)
432 real(r8),
intent(in ) :: pmon_p(LBi:UBi,LBj:UBj)
433 real(r8),
intent(in ) :: pnom_p(LBi:UBi,LBj:UBj)
434 real(r8),
intent(in ) :: om_r(LBi:UBi,LBj:UBj)
435 real(r8),
intent(in ) :: on_r(LBi:UBi,LBj:UBj)
436 real(r8),
intent(in ) :: om_p(LBi:UBi,LBj:UBj)
437 real(r8),
intent(in ) :: on_p(LBi:UBi,LBj:UBj)
438 real(r8),
intent(in ) :: visc2_p(LBi:UBi,LBj:UBj)
439 real(r8),
intent(in ) :: visc2_r(LBi:UBi,LBj:UBj)
441# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
442 real(r8),
intent(in ) :: tl_bed_thick(LBi:UBi,LBj:UBj,3)
445 real(r8),
intent(in ) :: ubar_stokes(LBi:UBi,LBj:UBj)
446 real(r8),
intent(in ) :: vbar_stokes(LBi:UBi,LBj:UBj)
448# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
449 real(r8),
intent(in ) :: eq_tide(LBi:UBi,LBj:UBj)
450 real(r8),
intent(in ) :: tl_eq_tide(LBi:UBi,LBj:UBj)
452 real(r8),
intent(in ) :: rufrc(LBi:UBi,LBj:UBj)
453 real(r8),
intent(in ) :: rvfrc(LBi:UBi,LBj:UBj)
454 real(r8),
intent(in ) :: ubar(LBi:UBi,LBj:UBj,:)
455 real(r8),
intent(in ) :: vbar(LBi:UBi,LBj:UBj,:)
456 real(r8),
intent(in ) :: zeta(LBi:UBi,LBj:UBj,:)
457 real(r8),
intent(inout) :: tl_h(LBi:UBi,LBj:UBj)
459 real(r8),
intent(in ) :: tl_sustr(LBi:UBi,LBj:UBj)
460 real(r8),
intent(in ) :: tl_svstr(LBi:UBi,LBj:UBj)
461 real(r8),
intent(in ) :: tl_bustr(LBi:UBi,LBj:UBj)
462 real(r8),
intent(in ) :: tl_bvstr(LBi:UBi,LBj:UBj)
464 real(r8),
intent(in ) :: Pair(LBi:UBi,LBj:UBj)
468 real(r8),
intent(in ) :: rhoA(LBi:UBi,LBj:UBj)
469 real(r8),
intent(in ) :: rhoS(LBi:UBi,LBj:UBj)
470 real(r8),
intent(in ) :: tl_rhoA(LBi:UBi,LBj:UBj)
471 real(r8),
intent(in ) :: tl_rhoS(LBi:UBi,LBj:UBj)
473 real(r8),
intent(inout) :: tl_DU_avg1(LBi:UBi,LBj:UBj)
474 real(r8),
intent(inout) :: tl_DU_avg2(LBi:UBi,LBj:UBj)
475 real(r8),
intent(inout) :: tl_DV_avg1(LBi:UBi,LBj:UBj)
476 real(r8),
intent(inout) :: tl_DV_avg2(LBi:UBi,LBj:UBj)
477 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:UBi,LBj:UBj)
478 real(r8),
intent(inout) :: tl_rufrc(LBi:UBi,LBj:UBj)
479 real(r8),
intent(inout) :: tl_rvfrc(LBi:UBi,LBj:UBj)
480 real(r8),
intent(inout) :: tl_rufrc_bak(LBi:UBi,LBj:UBj,2)
481 real(r8),
intent(inout) :: tl_rvfrc_bak(LBi:UBi,LBj:UBj,2)
484 real(r8),
intent(inout) :: tl_rustr2d(LBi:UBi,LBj:UBj)
485 real(r8),
intent(inout) :: tl_rvstr2d(LBi:UBi,LBj:UBj)
486 real(r8),
intent(inout) :: tl_rulag2d(LBi:UBi,LBj:UBj)
487 real(r8),
intent(inout) :: tl_rvlag2d(LBi:UBi,LBj:UBj)
488 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:UBi,LBj:UBj)
489 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:UBi,LBj:UBj)
491# ifdef WET_DRY_NOT_YET
492 real(r8),
intent(inout) :: pmask_full(LBi:UBi,LBj:UBj)
493 real(r8),
intent(inout) :: rmask_full(LBi:UBi,LBj:UBj)
494 real(r8),
intent(inout) :: umask_full(LBi:UBi,LBj:UBj)
495 real(r8),
intent(inout) :: vmask_full(LBi:UBi,LBj:UBj)
497 real(r8),
intent(inout) :: pmask_wet(LBi:UBi,LBj:UBj)
498 real(r8),
intent(inout) :: rmask_wet(LBi:UBi,LBj:UBj)
499 real(r8),
intent(inout) :: umask_wet(LBi:UBi,LBj:UBj)
500 real(r8),
intent(inout) :: vmask_wet(LBi:UBi,LBj:UBj)
502 real(r8),
intent(inout) :: rmask_wet_avg(LBi:UBi,LBj:UBj)
505# ifdef DIAGNOSTICS_UV
517 real(r8),
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
518 real(r8),
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
519 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
520# if defined NESTING && !defined SOLVE3D
521 real(r8),
intent(out ) :: tl_DU_flux(LBi:UBi,LBj:UBj)
522 real(r8),
intent(out ) :: tl_DV_flux(LBi:UBi,LBj:UBj)
529 integer :: krhs, kbak
534 real(r8) :: cff, cff1, cff2, cff3, cff4
535#ifdef WET_DRY_NOT_YET
536 real(r8) :: cff5, cff6, cff7
538 real(r8) :: fac, fac1, fac2
539 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3, tl_cff4
540#ifdef WET_DRY_NOT_YET
541 real(r8) :: tl_cff5, tl_cff6, tl_cff7
543 real(r8) :: tl_fac, tl_fac1, tl_fac2
545#if defined UV_C4ADVECTION && !defined SOLVE3D
546 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dgrad
548 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dnew
549 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs
550#if defined UV_VIS2 && !defined SOLVE3D
551 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs_p
553 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dstp
554 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUon
555 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVom
557 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUSon
558 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVSom
560#if defined STEP2D_CORIOLIS || !defined SOLVE3D
561 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
562 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
565 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
566 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
568#if defined UV_C4ADVECTION && !defined SOLVE3D
569 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
571 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rubar
572 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rvbar
573 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta
574 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzeta2
575#if defined VAR_RHO_2D && defined SOLVE3D
576 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rzetaSA
578 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zeta_new
579 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zwrk
580#ifdef WET_DRY_NOT_YET
581 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: wetdry
590#if defined UV_C4ADVECTION && !defined SOLVE3D
591 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dgrad
593 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dnew
594 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs
595#if defined UV_VIS2 && !defined SOLVE3D
596 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs_p
598 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dstp
599 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUon
600 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVom
602 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUSon
603 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVSom
605#if defined STEP2D_CORIOLIS || !defined SOLVE3D
606 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFx
607 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFe
610 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFe
611 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFx
613#if defined UV_C4ADVECTION && !defined SOLVE3D
614 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
616 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzeta2
617#if defined VAR_RHO_2D && defined SOLVE3D
618 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzetaSA
620 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rzeta
621 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rubar
622 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rvbar
623 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_zwrk
625 real(r8),
allocatable :: tl_zeta_new(:,:)
642 real(r8),
parameter :: gamma=0.0_r8, &
643 & beta =0.14_r8, epsil=0.74_r8
645#include "set_bounds.h"
660 IF (first_2d_step)
THEN
669 WRITE (20,10)
iic(ng),
iif(ng), knew.eq.3, &
670 & kbak, krhs, kstp, knew
671 10
FORMAT (
' iic = ',i5.5,
' iif = ',i3.3,
' predictor = ', l1, &
672 &
' kbak = ',i1,
' krhs = ',i1,
' kstp = ',i1,
' knew = ',i1)
685#if defined DISTRIBUTE && !defined NESTING
686# define IR_RANGE IstrUm2-1,Iendp2
687# define JR_RANGE JstrVm2-1,Jendp2
688# define IU_RANGE IstrUm1-1,Iendp2
689# define JU_RANGE Jstrm1-1,Jendp2
690# define IV_RANGE Istrm1-1,Iendp2
691# define JV_RANGE JstrVm1-1,Jendp2
693# define IR_RANGE IstrUm2-1,Iendp2
694# define JR_RANGE JstrVm2-1,Jendp2
695# define IU_RANGE IstrUm2,Iendp2
696# define JU_RANGE JstrVm2-1,Jendp2
697# define IV_RANGE IstrUm2-1,Iendp2
698# define JV_RANGE JstrVm2,Jendp2
703 drhs(i,j)=zeta(i,j,krhs)+h(i,j)
704 tl_drhs(i,j)=tl_zeta(i,j,krhs)+tl_h(i,j)
710 cff1=cff*(drhs(i,j)+drhs(i-1,j))
711 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i-1,j))
712 duon(i,j)=ubar(i,j,krhs)*cff1
713 tl_duon(i,j)=tl_ubar(i,j,krhs)*cff1+ &
714 & ubar(i,j,krhs)*tl_cff1
720 cff1=cff*(drhs(i,j)+drhs(i,j-1))
721 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i,j-1))
722 dvom(i,j)=vbar(i,j,krhs)*cff1
723 tl_dvom(i,j)=tl_vbar(i,j,krhs)*cff1+ &
724 & vbar(i,j,krhs)*tl_cff1
735#if defined DISTRIBUTE && \
736 defined uv_adv && defined uv_c4advection &&
747 & imins, imaxs, jmins, jmaxs, &
750 & imins, imaxs, jmins, jmaxs, &
753 & imins, imaxs, jmins, jmaxs, &
756 & imins, imaxs, jmins, jmaxs, &
760 & imins, imaxs, jmins, jmaxs, &
772 & lbi, ubi, lbj, ubj, &
773 & imins, imaxs, jmins, jmaxs, &
785 & lbi, ubi, lbj, ubj, &
786 & imins, imaxs, jmins, jmaxs, &
795 & lbi, ubi, lbj, ubj, &
796 & imins, imaxs, jmins, jmaxs, &
803 & tl_ubar, tl_vbar, &
804 & drhs, duon, dvom, &
805 & tl_drhs, tl_duon, tl_dvom)
828 IF (first_2d_step)
THEN
833 tl_zt_avg1(i,j)=0.0_r8
836 tl_du_avg1(i,j)=0.0_r8
839 tl_dv_avg1(i,j)=0.0_r8
842 tl_du_avg2(i,j)=0.0_r8
845 tl_dv_avg2(i,j)=0.0_r8
854 tl_zt_avg1(i,j)=tl_zt_avg1(i,j)+cff*tl_zeta(i,j,krhs)
858 tl_du_avg1(i,j)=tl_du_avg1(i,j)+cff*tl_duon(i,j)
863 tl_dv_avg1(i,j)=tl_dv_avg1(i,j)+cff*tl_dvom(i,j)
875 tl_du_avg2(i,j)=tl_du_avg2(i,j)+cff*tl_duon(i,j)
880 tl_dv_avg2(i,j)=tl_dv_avg2(i,j)+cff*tl_dvom(i,j)
894 allocate ( tl_zeta_new(imins:imaxs,jmins:jmaxs) )
902 zeta_new(i,j)=zeta(i,j,knew)
904 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
905# ifdef WET_DRY_NOT_YET
910 dnew(i,j)=h(i,j)+zeta_new(i,j)
911 dstp(i,j)=h(i,j)+zeta(i,j,kstp)
930 IF (first_2d_step)
THEN
936 cff1=0.333333333333_r8
937 cff2=0.666666666667_r8
943 cff2=1.0_r8-2.0_r8*beta
949 fac=cff*pm(i,j)*pn(i,j)
954 tl_zeta_new(i,j)=tl_zeta(i,j,kbak)+ &
955 & fac*(tl_duon(i,j)-tl_duon(i+1,j)+ &
956 & tl_dvom(i,j)-tl_dvom(i,j+1))
960 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
961# ifdef WET_DRY_NOT_YET
968 tl_dnew(i,j)=tl_zeta_new(i,j)+tl_h(i,j)
970 zwrk(i,j)=cff1*zeta_new(i,j)+ &
971 & cff2*zeta(i,j,kstp)+ &
972 & cff3*zeta(i,j,kbak)
973 tl_zwrk(i,j)=cff1*tl_zeta_new(i,j)+ &
974 & cff2*tl_zeta(i,j,kstp)+ &
975 & cff3*tl_zeta(i,j,kbak)
976#if defined VAR_RHO_2D && defined SOLVE3D
977 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
978 tl_rzeta(i,j)=(1.0_r8+rhos(i,j))*tl_zwrk(i,j)+ &
979 & tl_rhos(i,j)*zwrk(i,j)
980 rzeta2(i,j)=rzeta(i,j)*zwrk(i,j)
981 tl_rzeta2(i,j)=tl_rzeta(i,j)*zwrk(i,j)+ &
982 & rzeta(i,j)*tl_zwrk(i,j)
983 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
984 tl_rzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
985 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))
988 tl_rzeta(i,j)=tl_zwrk(i,j)
989 rzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
990 tl_rzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)
995 IF (first_2d_step)
THEN
996 cff =0.333333333333_r8
997 cff1=0.333333333333_r8
998 cff2=0.333333333333_r8
1002 cff1=(0.5_r8-gamma)*epsil
1003 cff2=(0.5_r8+2.0_r8*gamma)*epsil
1009 fac=
dtfast(ng)*pm(i,j)*pn(i,j)
1014 tl_zeta_new(i,j)=tl_zeta(i,j,kstp)+ &
1015 & fac*(tl_duon(i,j)-tl_duon(i+1,j)+ &
1016 & tl_dvom(i,j)-tl_dvom(i,j+1))
1020 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
1021# ifdef WET_DRY_NOT_YET
1028 tl_dnew(i,j)=tl_zeta_new(i,j)+tl_h(i,j)
1030 zwrk(i,j)=cff *zeta(i,j,krhs)+ &
1031 & cff1*zeta_new(i,j)+ &
1032 & cff2*zeta(i,j,kstp)+ &
1033 & cff3*zeta(i,j,kbak)
1034 tl_zwrk(i,j)=cff *tl_zeta(i,j,krhs)+ &
1035 & cff1*tl_zeta_new(i,j)+ &
1036 & cff2*tl_zeta(i,j,kstp)+ &
1037 & cff3*tl_zeta(i,j,kbak)
1038#if defined VAR_RHO_2D && defined SOLVE3D
1039 rzeta(i,j)=(1.0_r8+rhos(i,j))*zwrk(i,j)
1040 tl_rzeta(i,j)=(1.0_r8+rhos(i,j))*tl_zwrk(i,j)+ &
1041 & tl_rhos(i,j)*zwrk(i,j)
1042 rzeta2(i,j)=rzeta(i,j)*zwrk(i,j)
1043 tl_rzeta2(i,j)=tl_rzeta(i,j)*zwrk(i,j)+ &
1044 & rzeta(i,j)*tl_zwrk(i,j)
1045 rzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1046 tl_rzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
1047 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))
1049 rzeta(i,j)=zwrk(i,j)
1050 tl_rzeta(i,j)=tl_zwrk(i,j)
1051 rzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
1052 tl_rzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)
1064 IF (int(
sources(ng)%Dsrc(is)).eq.2)
THEN
1067 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1068 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1098 CALL tl_zetabc_local (ng, tile, &
1099 & lbi, ubi, lbj, ubj, &
1100 & imins, imaxs, jmins, jmaxs, &
1103 & zeta_new, tl_zeta_new)
1106 IF (first_2d_step)
THEN
1112 cff2=0.5_r8+2.0_r8*gamma
1121 tl_zeta(i,j,knew)=cff1*tl_zeta_new(i,j)+ &
1122 & cff2*tl_zeta(i,j,kstp)+ &
1123 & cff3*tl_zeta(i,j,kbak)
1131 tl_zeta(i,j,knew)=tl_zeta_new(i,j)
1148# ifdef STEP2D_CORIOLIS
1166 cff2=0.333333333333_r8
1167#if !defined SOLVE3D && defined ATM_PRESS
1168 fac=0.5_r8*100.0_r8/
rho0
1172 IF (i.ge.istru)
THEN
1178#if defined VAR_RHO_2D && defined SOLVE3D
1191 tl_rubar(i,j)=cff1*on_u(i,j)* &
1198 & (tl_rzeta(i-1,j)- &
1199 & tl_rzeta(i ,j))+ &
1200#if defined VAR_RHO_2D && defined SOLVE3D
1203 & (rzetasa(i-1,j)+ &
1205 & cff2*(rhoa(i-1,j)- &
1211 & (tl_rzetasa(i-1,j)+ &
1212 & tl_rzetasa(i ,j)+ &
1213 & cff2*((tl_rhoa(i-1,j)- &
1219 & (tl_zwrk(i-1,j)- &
1220 & tl_zwrk(i ,j))))+ &
1222 & (tl_rzeta2(i-1,j)- &
1224#if defined ATM_PRESS && !defined SOLVE3D
1231 tl_rubar(i,j)=tl_rubar(i,j)- &
1233 & (tl_h(i-1,j)+tl_h(i,j)+ &
1234 & tl_rzeta(i-1,j)+tl_rzeta(i,j))* &
1235 & (pair(i,j)-pair(i-1,j))
1237#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1244 tl_rubar(i,j)=tl_rubar(i,j)- &
1246 & ((tl_h(i-1,j)+tl_h(i,j)+ &
1247 & tl_rzeta(i-1,j)+tl_rzeta(i,j))* &
1248 & (eq_tide(i,j)-eq_tide(i-1,j))+ &
1249 & (h(i-1,j)+h(i,j)+ &
1250 & rzeta(i-1,j)+rzeta(i,j))* &
1251 & (tl_eq_tide(i,j)-tl_eq_tide(i-1,j)))
1253#ifdef DIAGNOSTICS_UV
1258 IF (j.ge.jstrv)
THEN
1264#if defined VAR_RHO_2D && defined SOLVE3D
1277 tl_rvbar(i,j)=cff1*om_v(i,j)* &
1284 & (tl_rzeta(i,j-1)- &
1285 & tl_rzeta(i,j ))+ &
1286#if defined VAR_RHO_2D && defined SOLVE3D
1289 & (rzetasa(i,j-1)+ &
1291 & cff2*(rhoa(i,j-1)- &
1297 & (tl_rzetasa(i,j-1)+ &
1298 & tl_rzetasa(i,j )+ &
1299 & cff2*((tl_rhoa(i,j-1)- &
1305 & (tl_zwrk(i,j-1)- &
1306 & tl_zwrk(i,j ))))+ &
1308 & (tl_rzeta2(i,j-1)- &
1310#if defined ATM_PRESS && !defined SOLVE3D
1317 tl_rvbar(i,j)=tl_rvbar(i,j)- &
1319 & (tl_h(i,j-1)+tl_h(i,j)+ &
1320 & tl_rzeta(i,j-1)+tl_rzeta(i,j))* &
1321 & (pair(i,j)-pair(i,j-1))
1323#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1330 tl_rvbar(i,j)=tl_rvbar(i,j)- &
1332 & ((tl_h(i,j-1)+tl_h(i,j)+ &
1333 & tl_rzeta(i,j-1)+tl_rzeta(i,j))* &
1334 & (eq_tide(i,j)-eq_tide(i,j-1))+ &
1335 & (h(i,j-1)+h(i,j)+ &
1336 & rzeta(i,j-1)+rzeta(i,j))* &
1337 & (tl_eq_tide(i,j)-tl_eq_tide(i,j-1)))
1339#ifdef DIAGNOSTICS_UV
1346#if defined UV_ADV && !defined SOLVE3D
1352# ifdef UV_C2ADVECTION
1367 tl_ufx(i,j)=0.25_r8* &
1368 & ((tl_duon(i,j)+tl_duon(i+1,j))* &
1369 & (ubar(i ,j,krhs)+ &
1371 & ubar_stokes(i ,j)+ &
1372 & ubar_stokes(i+1,j)+ &
1374 & ubar(i+1,j,krhs))+ &
1375 & (duon(i,j)+duon(i+1,j))* &
1376 & (tl_ubar(i ,j,krhs)+ &
1378 & tl_ubar_stokes(i ,j)+ &
1379 & tl_ubar_stokes(i+1,j)+ &
1381 & tl_ubar(i+1,j,krhs)))
1396 tl_ufe(i,j)=0.25_r8* &
1397 & ((tl_dvom(i,j)+tl_dvom(i-1,j))* &
1398 & (ubar(i,j ,krhs)+ &
1400 & ubar_stokes(i,j )+ &
1401 & ubar_stokes(i,j-1)+ &
1403 & ubar(i,j-1,krhs))+ &
1404 & (dvom(i,j)+dvom(i-1,j))* &
1405 & (tl_ubar(i,j ,krhs)+ &
1407 & tl_ubar_stokes(i,j )+ &
1408 & tl_ubar_stokes(i,j-1)+ &
1410 & tl_ubar(i,j-1,krhs)))
1425 tl_vfx(i,j)=0.25_r8* &
1426 & ((tl_duon(i,j)+tl_duon(i,j-1))* &
1427 & (vbar(i ,j,krhs)+ &
1429 & vbar_stokes(i ,j)+ &
1430 & vbar_stokes(i-1,j)+ &
1432 & vbar(i-1,j,krhs))+ &
1433 & (duon(i,j)+duon(i,j-1))* &
1434 & (tl_vbar(i ,j,krhs)+ &
1436 & tl_vbar_stokes(i ,j)+ &
1437 & tl_vbar_stokes(i-1,j)+ &
1439 & tl_vbar(i-1,j,krhs)))
1454 tl_vfe(i,j)=0.25_r8* &
1455 & ((tl_dvom(i,j)+tl_dvom(i,j+1))* &
1456 & (vbar(i,j ,krhs)+ &
1458 & vbar_stokes(i,j )+ &
1459 & vbar_stokes(i,j+1)+ &
1461 & vbar(i,j+1,krhs))+ &
1462 & (dvom(i,j)+dvom(i,j+1))* &
1463 & (tl_vbar(i,j ,krhs)+ &
1465 & tl_vbar_stokes(i,j )+ &
1466 & tl_vbar_stokes(i,j+1)+ &
1468 & tl_vbar(i,j+1,krhs)))
1472# elif defined UV_C4ADVECTION
1478 grad(i,j)=ubar(i-1,j,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1480 & ubar_stokes(i-1,j)-2.0_r8*ubar_stokes(i,j)+ &
1481 & ubar_stokes(i+1,j)+ &
1484 tl_grad(i,j)=tl_ubar(i-1,j,krhs)-2.0_r8*tl_ubar(i,j,krhs)+ &
1486 & tl_ubar_stokes(i-1,j)-2.0_r8*tl_ubar_stokes(i,j)+&
1487 & tl_ubar_stokes(i+1,j)+ &
1489 & tl_ubar(i+1,j,krhs)
1490 dgrad(i,j)=duon(i-1,j)-2.0_r8*duon(i,j)+duon(i+1,j)
1491 tl_dgrad(i,j)=tl_duon(i-1,j)-2.0_r8*tl_duon(i,j)+ &
1496 IF (
domain(ng)%Western_Edge(tile))
THEN
1498 grad(istr,j)=grad(istr+1,j)
1499 tl_grad(istr,j)=tl_grad(istr+1,j)
1500 dgrad(istr,j)=dgrad(istr+1,j)
1501 tl_dgrad(istr,j)=tl_dgrad(istr+1,j)
1506 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1508 grad(iend+1,j)=grad(iend,j)
1509 tl_grad(iend+1,j)=tl_grad(iend,j)
1510 dgrad(iend+1,j)=dgrad(iend,j)
1511 tl_dgrad(iend+1,j)=tl_dgrad(iend,j)
1529 tl_ufx(i,j)=0.25_r8* &
1530 & ((tl_ubar(i ,j,krhs)+ &
1532 & tl_ubar_stokes(i ,j)+ &
1533 & tl_ubar_stokes(i+1,j)+ &
1535 & tl_ubar(i+1,j,krhs)- &
1536 & cff*(tl_grad(i,j)+tl_grad(i+1,j)))* &
1537 & (duon(i,j)+duon(i+1,j)- &
1538 & cff*(dgrad(i,j)+dgrad(i+1,j)))+ &
1539 & (ubar(i ,j,krhs)+ &
1541 & ubar_stokes(i ,j)+ &
1542 & ubar_stokes(i+1,j)+ &
1544 & ubar(i+1,j,krhs)- &
1545 & cff*(grad(i,j)+grad(i+1,j)))* &
1546 & (tl_duon(i,j)+tl_duon(i+1,j)- &
1547 & cff*(tl_dgrad(i,j)+tl_dgrad(i+1,j))))
1551 grad(i,j)=ubar(i,j-1,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1553 & ubar_stokes(i,j-1)-2.0_r8*ubar_stokes(i,j)+ &
1554 & ubar_stokes(i,j+1)+ &
1557 tl_grad(i,j)=tl_ubar(i,j-1,krhs)-2.0_r8*tl_ubar(i,j,krhs)+ &
1559 & tl_ubar_stokes(i,j-1)-2.0_r8*tl_ubar_stokes(i,j)+&
1560 & tl_ubar_stokes(i,j+1)+ &
1562 & tl_ubar(i,j+1,krhs)
1567 IF (
domain(ng)%Southern_Edge(tile))
THEN
1569 grad(i,jstr-1)=grad(i,jstr)
1570 tl_grad(i,jstr-1)=tl_grad(i,jstr)
1575 IF (
domain(ng)%Northern_Edge(tile))
THEN
1577 grad(i,jend+1)=grad(i,jend)
1578 tl_grad(i,jend+1)=tl_grad(i,jend)
1584 dgrad(i,j)=dvom(i-1,j)-2.0_r8*dvom(i,j)+dvom(i+1,j)
1585 tl_dgrad(i,j)=tl_dvom(i-1,j)-2.0_r8*tl_dvom(i,j)+ &
1603 tl_ufe(i,j)=0.25_r8* &
1604 & ((tl_ubar(i,j ,krhs)+ &
1606 & tl_ubar_stokes(i,j )+ &
1607 & tl_ubar_stokes(i,j-1)+ &
1609 & tl_ubar(i,j-1,krhs)- &
1610 & cff*(tl_grad(i,j)+tl_grad(i,j-1)))* &
1611 & (dvom(i,j)+dvom(i-1,j)- &
1612 & cff*(dgrad(i,j)+dgrad(i-1,j)))+ &
1613 & (ubar(i,j ,krhs)+ &
1615 & ubar_stokes(i,j )+ &
1616 & ubar_stokes(i,j-1)+ &
1618 & ubar(i,j-1,krhs)- &
1619 & cff*(grad(i,j)+grad(i,j-1)))* &
1620 & (tl_dvom(i,j)+tl_dvom(i-1,j)- &
1621 & cff*(tl_dgrad(i,j)+tl_dgrad(i-1,j))))
1629 grad(i,j)=vbar(i-1,j,krhs)-2.0_r8*vbar(i,j,krhs)+ &
1631 & vbar_stokes(i-1,j)-2.0_r8*vbar_stokes(i,j)+ &
1632 & vbar_stokes(i+1,j)+ &
1635 tl_grad(i,j)=tl_vbar(i-1,j,krhs)-2.0_r8*tl_vbar(i,j,krhs)+ &
1637 & tl_vbar_stokes(i-1,j)-2.0_r8*tl_vbar_stokes(i,j)+&
1638 & tl_vbar_stokes(i+1,j)+ &
1640 & tl_vbar(i+1,j,krhs)
1645 IF (
domain(ng)%Western_Edge(tile))
THEN
1647 grad(istr-1,j)=grad(istr,j)
1648 tl_grad(istr-1,j)=tl_grad(istr,j)
1653 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1655 grad(iend+1,j)=grad(iend,j)
1656 tl_grad(iend+1,j)=tl_grad(iend,j)
1662 dgrad(i,j)=duon(i,j-1)-2.0_r8*duon(i,j)+duon(i,j+1)
1663 tl_dgrad(i,j)=tl_duon(i,j-1)-2.0_r8*tl_duon(i,j)+ &
1681 tl_vfx(i,j)=0.25_r8* &
1682 & ((tl_vbar(i ,j,krhs)+ &
1684 & tl_vbar_stokes(i ,j)+ &
1685 & tl_vbar_stokes(i-1,j)+ &
1687 & tl_vbar(i-1,j,krhs)- &
1688 & cff*(tl_grad(i,j)+tl_grad(i-1,j)))* &
1689 & (duon(i,j)+duon(i,j-1)- &
1690 & cff*(dgrad(i,j)+dgrad(i,j-1)))+ &
1691 & (vbar(i ,j,krhs)+ &
1693 & vbar_stokes(i ,j)+ &
1694 & vbar_stokes(i-1,j)+ &
1696 & vbar(i-1,j,krhs)- &
1697 & cff*(grad(i,j)+grad(i-1,j)))* &
1698 & (tl_duon(i,j)+tl_duon(i,j-1)- &
1699 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j-1))))
1705 grad(i,j)=vbar(i,j-1,krhs)-2.0_r8*vbar(i,j,krhs)+ &
1707 & vbar_stokes(i,j-1)-2.0_r8*vbar_stokes(i,j)+ &
1708 & vbar_stokes(i,j+1)+ &
1711 tl_grad(i,j)=tl_vbar(i,j-1,krhs)-2.0_r8*tl_vbar(i,j,krhs)+ &
1713 & tl_vbar_stokes(i,j-1)-2.0_r8*tl_vbar_stokes(i,j)+&
1714 & tl_vbar_stokes(i,j+1)+ &
1716 & tl_vbar(i,j+1,krhs)
1717 dgrad(i,j)=dvom(i,j-1)-2.0_r8*dvom(i,j)+dvom(i,j+1)
1718 tl_dgrad(i,j)=tl_dvom(i,j-1)-2.0_r8*tl_dvom(i,j)+ &
1723 IF (
domain(ng)%Southern_Edge(tile))
THEN
1725 grad(i,jstr)=grad(i,jstr+1)
1726 tl_grad(i,jstr)=tl_grad(i,jstr+1)
1727 dgrad(i,jstr)=dgrad(i,jstr+1)
1728 tl_dgrad(i,jstr)=tl_dgrad(i,jstr+1)
1733 IF (
domain(ng)%Northern_Edge(tile))
THEN
1735 grad(i,jend+1)=grad(i,jend)
1736 tl_grad(i,jend+1)=tl_grad(i,jend)
1737 dgrad(i,jend+1)=dgrad(i,jend)
1738 tl_dgrad(i,jend+1)=tl_dgrad(i,jend)
1756 tl_vfe(i,j)=0.25_r8* &
1757 & ((tl_vbar(i,j ,krhs)+ &
1759 & tl_vbar_stokes(i,j )+ &
1760 & tl_vbar_stokes(i,j+1)+ &
1762 & tl_vbar(i,j+1,krhs)- &
1763 & cff*(tl_grad(i,j)+tl_grad(i,j+1)))* &
1764 & (dvom(i,j)+dvom(i,j+1)- &
1765 & cff*(dgrad(i,j)+dgrad(i,j+1)))+ &
1766 & (vbar(i,j ,krhs)+ &
1768 & vbar_stokes(i,j )+ &
1769 & vbar_stokes(i,j+1)+ &
1771 & vbar(i,j+1,krhs)- &
1772 & cff*(grad(i,j)+grad(i,j+1)))* &
1773 & (tl_dvom(i,j)+tl_dvom(i,j+1)- &
1774 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j+1))))
1783 IF (i.ge.istru)
THEN
1786 tl_cff1=tl_ufx(i,j)-tl_ufx(i-1,j)
1789 tl_cff2=tl_ufe(i,j+1)-tl_ufe(i,j)
1792 tl_fac=tl_cff1+tl_cff2
1795 tl_rubar(i,j)=tl_rubar(i,j)-tl_fac
1796# if defined DIAGNOSTICS_UV
1803 IF (j.ge.jstrv)
THEN
1806 tl_cff1=tl_vfx(i+1,j)-tl_vfx(i,j)
1809 tl_cff2=tl_vfe(i,j)-tl_vfe(i,j-1)
1812 tl_fac=tl_cff1+tl_cff2
1815 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac
1816# if defined DIAGNOSTICS_UV
1826#if (defined UV_COR & !defined SOLVE3D) || defined STEP2D_CORIOLIS
1834 cff=0.5_r8*drhs(i,j)*fomn(i,j)
1835 tl_cff=0.5_r8*tl_drhs(i,j)*fomn(i,j)
1843 tl_ufx(i,j)=tl_cff*(vbar(i,j ,krhs)+ &
1845 & vbar_stokes(i,j )+ &
1846 & vbar_stokes(i,j+1)+ &
1848 & vbar(i,j+1,krhs))+ &
1849 & cff*(tl_vbar(i,j ,krhs)+ &
1851 & tl_vbar_stokes(i,j )+ &
1852 & tl_vbar_stokes(i,j+1)+ &
1854 & tl_vbar(i,j+1,krhs))
1862 tl_vfe(i,j)=tl_cff*(ubar(i ,j,krhs)+ &
1864 & ubar_stokes(i ,j)+ &
1865 & ubar_stokes(i+1,j)+ &
1867 & ubar(i+1,j,krhs))+ &
1868 & cff*(tl_ubar(i ,j,krhs)+ &
1870 & tl_ubar_stokes(i ,j)+ &
1871 & tl_ubar_stokes(i+1,j)+ &
1873 & tl_ubar(i+1,j,krhs))
1879 IF (i.ge.istru)
THEN
1882 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
1885 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac1
1886# if defined DIAGNOSTICS_UV
1891 IF (j.ge.jstrv)
THEN
1894 tl_fac2=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
1897 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac2
1898# if defined DIAGNOSTICS_UV
1906#if (defined CURVGRID && defined UV_ADV) && !defined SOLVE3D
1914 cff1=0.5_r8*(vbar(i,j ,krhs)+ &
1916 & vbar_stokes(i,j )+ &
1917 & vbar_stokes(i,j+1)+ &
1920 tl_cff1=0.5_r8*(tl_vbar(i,j ,krhs)+ &
1922 & tl_vbar_stokes(i,j )+ &
1923 & tl_vbar_stokes(i,j+1)+ &
1925 & tl_vbar(i,j+1,krhs))
1926 cff2=0.5_r8*(ubar(i ,j,krhs)+ &
1928 & ubar_stokes(i ,j)+ &
1929 & ubar_stokes(i+1,j)+ &
1932 tl_cff2=0.5_r8*(tl_ubar(i ,j,krhs)+ &
1934 & tl_ubar_stokes(i ,j)+ &
1935 & tl_ubar_stokes(i+1,j)+ &
1937 & tl_ubar(i+1,j,krhs))
1939 tl_cff3=tl_cff1*dndx(i,j)
1941 tl_cff4=tl_cff2*dmde(i,j)
1942 cff=drhs(i,j)*(cff3-cff4)
1943 tl_cff=tl_drhs(i,j)*(cff3-cff4)+ &
1944 & drhs(i,j)*(tl_cff3-tl_cff4)
1947 tl_ufx(i,j)=tl_cff*cff1+cff*tl_cff1
1950 tl_vfe(i,j)=tl_cff*cff2+cff*tl_cff2
1951# if defined DIAGNOSTICS_UV
1961 IF (i.ge.istru)
THEN
1964 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
1967 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac1
1968# if defined DIAGNOSTICS_UV
1976 IF (j.ge.jstrv)
THEN
1979 tl_fac1=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
1982 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac1
1983# if defined DIAGNOSTICS_UV
1994#if defined UV_VIS2 && !defined SOLVE3D
2004 drhs_p(i,j)=0.25_r8*(drhs(i,j )+drhs(i-1,j )+ &
2005 & drhs(i,j-1)+drhs(i-1,j-1))
2006 tl_drhs_p(i,j)=0.25_r8*(tl_drhs(i,j )+tl_drhs(i-1,j )+ &
2007 & tl_drhs(i,j-1)+tl_drhs(i-1,j-1))
2024 tl_cff=visc2_r(i,j)*0.5_r8* &
2027 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,krhs)- &
2028 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,krhs))- &
2030 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,krhs)- &
2031 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,krhs)))+ &
2034 & ((pn(i ,j)+pn(i+1,j))*tl_ubar(i+1,j,krhs)- &
2035 & (pn(i-1,j)+pn(i ,j))*tl_ubar(i ,j,krhs))- &
2037 & ((pm(i,j )+pm(i,j+1))*tl_vbar(i,j+1,krhs)- &
2038 & (pm(i,j-1)+pm(i,j ))*tl_vbar(i,j ,krhs))))
2041 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*tl_cff
2044 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*tl_cff
2058 tl_cff=visc2_p(i,j)*0.5_r8* &
2059 & (tl_drhs_p(i,j)* &
2061 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,krhs)- &
2062 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,krhs))+ &
2064 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,krhs)- &
2065 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,krhs)))+ &
2068 & ((pn(i ,j-1)+pn(i ,j))*tl_vbar(i ,j,krhs)- &
2069 & (pn(i-1,j-1)+pn(i-1,j))*tl_vbar(i-1,j,krhs))+ &
2071 & ((pm(i-1,j )+pm(i,j ))*tl_ubar(i,j ,krhs)- &
2072 & (pm(i-1,j-1)+pm(i,j-1))*tl_ubar(i,j-1,krhs))))
2076 tl_cff=tl_cff*pmask(i,j
2078# ifdef WET_DRY_NOT_YET
2081 tl_cff=tl_cff*pmask_wet(i,j)
2085 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*tl_cff
2088 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*tl_cff
2096 IF (i.ge.istru)
THEN
2099 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2100 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2103 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2104 & (tl_ufe(i,j+1)-tl_ufe(i ,j))
2107 tl_fac=tl_cff1+tl_cff2
2110 tl_rubar(i,j)=tl_rubar(i,j)+tl_fac
2111# if defined DIAGNOSTICS_UV
2118 IF (j.ge.jstrv)
THEN
2121 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2122 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2125 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2126 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2129 tl_fac=tl_cff1-tl_cff2
2132 tl_rvbar(i,j)=tl_rvbar(i,j)+tl_fac
2133# if defined DIAGNOSTICS_UV
2153 tl_fac=tl_bustr(i,j)*om_u(i,j)*on_u(i,j)
2156 tl_rubar(i,j)=tl_rubar(i,j)-tl_fac
2157# ifdef DIAGNOSTICS_UV
2166 tl_fac=tl_bvstr(i,j)*om_v(i,j)*on_v(i,j)
2169 tl_rvbar(i,j)=tl_rvbar(i,j)-tl_fac
2170# ifdef DIAGNOSTICS_UV
2176# ifdef DIAGNOSTICS_UV
2222 IF (first_time_step)
THEN
2226 ELSE IF (first_time_step+1)
THEN
2232 cff2=-0.5_r8-2.0_r8*cff3
2240 tl_cff=tl_rufrc(i,j)-tl_rubar(i,j)
2245 tl_rufrc(i,j)=cff1*tl_cff+ &
2246 & cff2*tl_rufrc_bak(i,j,3-nstp)+ &
2247 & cff3*tl_rufrc_bak(i,j,nstp )
2250 tl_rufrc_bak(i,j,nstp)=tl_cff
2257 tl_cff=tl_rvfrc(i,j)-tl_rvbar(i,j)
2262 tl_rvfrc(i,j)=cff1*tl_cff+ &
2263 & cff2*tl_rvfrc_bak(i,j,3-nstp)+ &
2264 & cff3*tl_rvfrc_bak(i,j,nstp )
2267 tl_rvfrc_bak(i,j,nstp)=tl_cff
2277 cff2=0.333333333333_r8
2278 cff3=1.666666666666_r8
2284 tl_zwrk(i,j)=cff2*(tl_zeta_new(i,j)-tl_zeta(i,j,kstp))
2285# if defined VAR_RHO_2D && defined SOLVE3D
2288 tl_rzeta(i,j)=(1.0_r8+rhos(i,j))*tl_zwrk(i,j)+ &
2289 & tl_rhos(i,j)*zwrk(i,j)
2294 tl_rzeta2(i,j)=tl_rzeta(i,j)* &
2295 & (cff2*zeta_new(i,j)+ &
2296 & cff3*zeta(i,j,kstp))+ &
2298 & (cff2*tl_zeta_new(i,j)+ &
2299 & cff3*tl_zeta(i,j,kstp))
2302 tl_rzetasa(i,j)=tl_zwrk(i,j)* &
2303 & (rhos(i,j)-rhoa(i,j))+ &
2305 & (tl_rhos(i,j)-tl_rhoa(i,j))
2309 tl_rzeta(i,j)=tl_zwrk(i,j)
2314 tl_rzeta2(i,j)=tl_zwrk(i,j)* &
2315 & (cff2*zeta_new(i,j)+ &
2316 & cff3*zeta(i,j,kstp))+ &
2318 & (cff2*tl_zeta_new(i,j)+ &
2319 & cff3*tl_zeta(i,j,kstp))
2326 IF (i.ge.istru)
THEN
2333# if defined VAR_RHO_2D && defined SOLVE3D
2346 tl_rubar(i,j)=tl_rubar(i,j)+ &
2354 & (tl_rzeta(i-1,j)- &
2355 & tl_rzeta(i ,j))+ &
2356# if defined VAR_RHO_2D && defined SOLVE3D
2359 & (rzetasa(i-1,j)+ &
2361 & cff2*(rhoa(i-1,j)- &
2367 & (tl_rzetasa(i-1,j)+ &
2368 & tl_rzetasa(i ,j)+ &
2369 & cff2*((tl_rhoa(i-1,j)- &
2375 & (tl_zwrk(i-1,j)- &
2376 & tl_zwrk(i ,j))))+ &
2378 & (tl_rzeta2(i-1,j)- &
2380# ifdef DIAGNOSTICS_UV
2386 IF (j.ge.jstrv)
THEN
2393# if defined VAR_RHO_2D && defined SOLVE3D
2406 tl_rvbar(i,j)=tl_rvbar(i,j)+ &
2414 & (tl_rzeta(i,j-1)- &
2415 & tl_rzeta(i,j ))+ &
2416# if defined VAR_RHO_2D && defined SOLVE3D
2419 & (rzetasa(i,j-1)+ &
2421 & cff2*(rhoa(i,j-1)- &
2427 & (tl_rzetasa(i,j-1)+ &
2428 & tl_rzetasa(i,j )+ &
2429 & cff2*((tl_rhoa(i,j-1)- &
2435 & (tl_zwrk(i,j-1)- &
2436 & tl_zwrk(i,j ))))+ &
2438 & (tl_rzeta2(i,j-1)- &
2440# ifdef DIAGNOSTICS_UV
2461 tl_dstp(i,j)=tl_h(i,j)+tl_zeta(i,j,kstp)
2469 tl_dstp(i,j)=tl_h(i,j)+tl_zeta(i,j,kbak)
2480 IF (first_2d_step)
THEN
2488 cff3=0.5_r8+2.0_r8*gamma
2494 cff=cff1*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
2495 fac1=1.0_r8/(dnew(i,j)+dnew(i-1,j))
2496 tl_fac1=-fac1*fac1*(tl_dnew(i,j)+tl_dnew(i-1,j))
2506 tl_ubar(i,j,knew)=tl_fac1* &
2507 & (ubar(i,j,kbak)* &
2508 & (dstp(i,j)+dstp(i-1,j))+ &
2510 & cff*(rubar(i,j)+rufrc(i,j)))+ &
2512 & cff*rubar(i,j)+4.0_r8*cff1*sustr(i,j))+ &
2515 & (tl_ubar(i,j,kbak)* &
2516 & (dstp(i,j)+dstp(i-1,j))+ &
2518 & (tl_dstp(i,j)+tl_dstp(i-1,j))+ &
2520 & cff*(tl_rubar(i,j)+tl_rufrc(i,j)))
2522 & cff*tl_rubar(i,j)+ &
2523 & 4.0_r8*cff1*tl_sustr(i,j))
2528 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
2534 tl_ubar(i,j,knew)=cff2*tl_ubar(i,j,knew)+ &
2535 & cff3*tl_ubar(i,j,kstp)+ &
2536 & cff4*tl_ubar(i,j,kbak)
2537#ifdef WET_DRY_NOT_YET
2546#if defined NESTING && !defined SOLVE3D
2550 tl_du_flux(i,j)=0.5_r8*on_u(i,j)* &
2551 & ((dnew(i,j)+dnew(i-1,j))* &
2552 & tl_ubar(i,j,knew)+ &
2553 & (tl_dnew(i,j)+tl_dnew(i-1,j))* &
2561 cff=cff1*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
2562 fac2=1.0_r8/(dnew(i,j)+dnew(i,j-1))
2563 tl_fac2=-fac2*fac2*(tl_dnew(i,j)+tl_dnew(i,j-1))
2573 tl_vbar(i,j,knew)=tl_fac2* &
2574 & (vbar(i,j,kbak)* &
2575 & (dstp(i,j)+dstp(i,j-1))+ &
2577 & cff*(rvbar(i,j)+rvfrc(i,j)))+ &
2579 & cff*rvbar(i,j)+4.0_r8*cff1*svstr(i,j))+ &
2582 & (tl_vbar(i,j,kbak)* &
2583 & (dstp(i,j)+dstp(i,j-1))+ &
2585 & (tl_dstp(i,j)+tl_dstp(i,j-1))+ &
2587 & cff*(tl_rvbar(i,j)+tl_rvfrc(i,j)))
2589 & cff*tl_rvbar(i,j)+ &
2590 & 4.0_r8*cff1*tl_svstr(i,j))
2595 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
2601 tl_vbar(i,j,knew)=cff2*tl_vbar(i,j,knew)+ &
2602 & cff3*tl_vbar(i,j,kstp)+ &
2603 & cff4*tl_vbar(i,j,kbak)
2604#ifdef WET_DRY_NOT_YET
2613#if defined NESTING && !defined SOLVE3D
2617 tl_dv_flux(i,j)=0.5_r8*om_v(i,j)* &
2618 & ((dnew(i,j)+dnew(i,j-1))* &
2619 & tl_vbar(i,j,knew)+ &
2620 & (tl_dnew(i,j)+tl_dnew(i,j-1))* &
2631 cff=cff1*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
2632 fac1=1.0_r8/(dnew(i,j)+dnew(i-1,j))
2633 tl_fac1=-fac1*fac1*(dnew(i,j)+dnew(i-1,j))
2643 tl_ubar(i,j,knew)=tl_fac1* &
2644 & (ubar(i,j,kstp)* &
2645 & (dstp(i,j)+dstp(i-1,j))+ &
2647 & cff*(rubar(i,j)+rufrc(i,j)))+ &
2649 & cff*rubar(i,j)+4.0_r8*cff1*sustr(i,j))+ &
2652 & (tl_ubar(i,j,kstp)* &
2653 & (dstp(i,j)+dstp(i-1,j))+ &
2655 & (tl_dstp(i,j)+tl_dstp(i-1,j))+ &
2657 & cff*(tl_rubar(i,j)+tl_rufrc(i,j)))
2659 & cff*tl_rubar(i,j)+ &
2660 & 4.0_r8*cff1*tl_sustr(i,j))
2665 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
2667#ifdef WET_DRY_NOT_YET
2676#if defined NESTING && !defined SOLVE3D
2680 tl_du_flux(i,j)=0.5_r8*on_u(i,j)* &
2681 & ((dnew(i,j)+dnew(i-1,j))* &
2682 & tl_ubar(i,j,knew)+ &
2683 & (tl_dnew(i,j)+tl_dnew(i-1,j))* &
2691 cff=cff1*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
2692 fac2=1.0_r8/(dnew(i,j)+dnew(i,j-1))
2693 tl_fac2=-fac2*fac2*(tl_dnew(i,j)+tl_dnew(i,j-1))
2703 tl_vbar(i,j,knew)=tl_fac2* &
2704 & (vbar(i,j,kstp)* &
2705 & (dstp(i,j)+dstp(i,j-1))+ &
2707 & cff*(rvbar(i,j)+rvfrc(i,j)))+ &
2709 & cff*rvbar(i,j)+4.0_r8*cff1*svstr(i,j))+ &
2712 & (tl_vbar(i,j,kstp)* &
2713 & (dstp(i,j)+dstp(i,j-1))+ &
2715 & (tl_dstp(i,j)+tl_dstp(i,j-1))+ &
2717 & cff*(tl_rvbar(i,j)+tl_rvfrc(i,j)))
2719 & cff*tl_rvbar(i,j)+ &
2720 & 4.0_r8*cff1*svstr(i,j))
2725 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
2727#ifdef WET_DRY_NOT_YET
2736#if defined NESTING && !defined SOLVE3D
2740 tl_dv_flux(i,j)=0.5_r8*om_v(i,j)* &
2741 & ((dnew(i,j)+dnew(i,j-1))* &
2742 & tl_vbar(i,j,knew)+ &
2743 & (tl_dnew(i,j)+tl_dnew(i,j-1))* &
2759 & lbi, ubi, lbj, ubj, &
2760 & imins, imaxs, jmins, jmaxs, &
2761 & krhs, kstp, knew, &
2762 & ubar, vbar, zeta, &
2763 & tl_ubar, tl_vbar, tl_zeta)
2771 & lbi, ubi, lbj, ubj, &
2772 & imins, imaxs, jmins, jmaxs, &
2773 & krhs, kstp, knew, &
2774 & ubar, vbar, zeta, &
2775 & tl_ubar, tl_vbar, tl_zeta)
2792 & lbi, ubi, lbj, ubj, &
2793 & imins, imaxs, jmins, jmaxs, &
2798 & h, tl_h, om_v, on_u, &
2799 & ubar, vbar, zeta, &
2800 & tl_ubar, tl_vbar, tl_zeta)
2803#if defined NESTING && !defined SOLVE3D
2808 IF (
domain(ng)%Western_Edge(tile))
THEN
2812 tl_dnew(istr-1,j)=tl_h(istr-1,j)+tl_zeta_new(istr-1,j)
2817 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2821 tl_dnew(iend+1,j)=tl_h(iend+1,j)+tl_zeta_new(iend+1,j)
2826 IF (
domain(ng)%Southern_Edge(tile))
THEN
2830 tl_dnew(i,jstr-1)=tl_h(i,jstr-1)+tl_zeta_new(i,jstr-1)
2835 IF (
domain(ng)%Northern_Edge(tile))
THEN
2839 tl_dnew(i,jend+1)=tl_h(i,jend+1)+tl_zeta_new(i,jend+1)
2845 IF (
domain(ng)%Western_Edge(tile))
THEN
2851 tl_du_flux(istru-1,j)=0.5_r8*on_u(istru-1,j)* &
2852 & ((dnew(istru-1,j)+ &
2853 & dnew(istru-2,j))* &
2854 & tl_ubar(istru-1,j,knew)+ &
2855 & (tl_dnew(istru-1,j)+ &
2856 & tl_dnew(istru-2,j))* &
2857 & ubar(istru-1,j,knew))
2864 tl_dv_flux(istr-1,j)=0.5_r8*om_v(istr-1,j)* &
2865 & ((dnew(istr-1,j )+ &
2866 & dnew(istr-1,j-1))* &
2867 & tl_vbar(istr-1,j,knew)+ &
2868 & (tl_dnew(istr-1,j )+ &
2869 & tl_dnew(istr-1,j-1))* &
2870 & vbar(istr-1,j,knew))
2875 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2881 tl_du_flux(iend+1,j)=0.5_r8*on_u(iend+1,j)* &
2882 & ((dnew(iend+1,j)+ &
2884 & tl_ubar(iend+1,j,knew)+ &
2885 & (tl_dnew(iend+1,j)+ &
2886 & tl_dnew(iend ,j))* &
2887 & ubar(iend+1,j,knew))
2894 tl_dv_flux(iend+1,j)=0.5_r8*om_v(iend+1,j)* &
2895 & ((dnew(iend+1,j )+ &
2896 & dnew(iend+1,j-1))* &
2897 & tl_vbar(iend+1,j,knew)+ &
2898 & (tl_dnew(iend+1,j )+ &
2899 & tl_dnew(iend+1,j-1))* &
2900 & vbar(iend+1,j,knew))
2905 IF (
domain(ng)%Southern_Edge(tile))
THEN
2911 tl_du_flux(i,jstr-1)=0.5_r8*on_u(i,jstr-1)* &
2912 & ((dnew(i ,jstr-1)+ &
2913 & dnew(i-1,jstr-1))* &
2914 & tl_ubar(i,jstr-1,knew)+ &
2915 & (tl_dnew(i ,jstr-1)+ &
2916 & tl_dnew(i-1,jstr-1))* &
2917 & ubar(i,jstr-1,knew))
2924 tl_dv_flux(i,jstrv-1)=0.5_r8*om_v(i,jstrv-1)* &
2925 & ((dnew(i,jstrv-1)+ &
2926 & dnew(i,jstrv-2))* &
2927 & tl_vbar(i,jstrv-1,knew)+ &
2928 & (tl_dnew(i,jstrv-1)+ &
2929 & tl_dnew(i,jstrv-2))* &
2930 & vbar(i,jstrv-1,knew))
2935 IF (
domain(ng)%Northern_Edge(tile))
THEN
2941 tl_du_flux(i,jend+1)=0.5_r8*on_u(i,jend+1)* &
2942 & ((dnew(i ,jend+1)+ &
2943 & dnew(i-1,jend+1))* &
2944 & tl_ubar(i,jend+1,knew)+ &
2945 & (tl_dnew(i ,jend+1)+ &
2946 & tl_dnew(i-1,jend+1))* &
2947 & ubar(i,jend+1,knew))
2954 tl_dv_flux(i,jend+1)=0.5_r8*om_v(i,jend+1)* &
2955 & ((dnew(i,jend+1)+ &
2957 & tl_vbar(i,jend+1,knew)+ &
2958 & (tl_dnew(i,jend+1)+ &
2959 & tl_dnew(i,jend ))* &
2960 & vbar(i,jend+1,knew))
2975 IF (((istrr.le.i).and.(i.le.iendr)).and. &
2976 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
2977 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
2978 cff=1.0_r8/(on_u(i,j)* &
2979 & 0.5_r8*(dnew(i-1,j)+dnew(i,j)))
2980 tl_cff=-cff*cff*on_u(i,j)* &
2981 & 0.5_r8*(tl_dnew(i-1,j)+tl_dnew(i ,j))
2984 tl_ubar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
2989 tl_du_avg1(i,j)=
sources(ng)%tl_Qbar(is)
2991#if defined NESTING && !defined SOLVE3D
2994 tl_du_flux(i,j)=
sources(ng)%tl_Qbar(is)
2996 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
2997 cff=1.0_r8/(om_v(i,j)* &
2998 & 0.5_r8*(dnew(i,j-1)+dnew(i,j)))
2999 tl_cff=-cff*cff*om_v(i,j)* &
3000 & 0.5_r8*(tl_dnew(i,j-1)+tl_dnew(i,j))
3003 tl_vbar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
3008 tl_dv_avg1(i,j)=
sources(ng)%tl_Qbar(is)
3010#if defined NESTING && !defined SOLVE3D
3013 tl_dv_flux(i,j)=
sources(ng)%tl_Qbar(is)
3034 IF ((
iif(ng).eq.
nfast(ng)).and.(knew.lt.3))
THEN
3036 IF (
domain(ng)%Western_Edge(tile))
THEN
3040 tl_dnew(istr-1,j)=tl_h(istr-1,j)+tl_zeta_new(istr-1,j)
3045 IF (
domain(ng)%Eastern_Edge(tile))
THEN
3049 tl_dnew(iend+1,j)=tl_h(iend+1,j)+tl_zeta_new(iend+1,j)
3054 IF (
domain(ng)%Southern_Edge(tile))
THEN
3058 tl_dnew(i,jstr-1)=tl_h(i,jstr-1)+tl_zeta_new(i,jstr-1)
3063 IF (
domain(ng)%Northern_Edge(tile))
THEN
3067 tl_dnew(i,jend+1)=tl_h(i,jend+1)+tl_zeta_new(i,jend+1)
3084 tl_zt_avg1(i,j)=tl_zt_avg1(i,j)+ &
3085 & cff*tl_zeta(i,j,knew)
3091 tl_du_avg1(i,j)=tl_du_avg1(i,j)+ &
3093 & ((dnew(i,j)+dnew(i-1,j))* &
3094 & tl_ubar(i,j,knew)+ &
3095 & (tl_dnew(i,j)+tl_dnew(i-1,j))* &
3103 tl_dv_avg1(i,j)=tl_dv_avg1(i,j)+ &
3105 & ((dnew(i,j)+dnew(i,j-1))* &
3106 & tl_vbar(i,j,knew)+ &
3107 & (tl_dnew(i,j)+tl_dnew(i,j-1))* &
3112 tl_zeta(i,j,knew)=tl_zt_avg1(i,j)
3135 & lbi, ubi, lbj, ubj, &
3142 & lbi, ubi, lbj, ubj, &
3149 & lbi, ubi, lbj, ubj, &
3156 & lbi, ubi, lbj, ubj, &
3163 & lbi, ubi, lbj, ubj, &
3175 & lbi, ubi, lbj, ubj, &
3178 & tl_zt_avg1, tl_du_avg1, tl_dv_avg1)
3186 & lbi, ubi, lbj, ubj, &
3189 & tl_du_avg2, tl_dv_avg2)
3194#if defined NESTING && !defined SOLVE3D
3207 & lbi, ubi, lbj, ubj, &
3214 & lbi, ubi, lbj, ubj, &
3227 & lbi, ubi, lbj, ubj, &
3230 & tl_du_flux, tl_dv_flux)
3236 deallocate ( tl_zeta_new )
3238#ifdef WET_DRY_NOT_YET
3274 & lbi, ubi, lbj, ubj, &
3275 & tl_zeta(:,:,knew))
3281 & lbi, ubi, lbj, ubj, &
3282 & tl_ubar(:,:,knew))
3288 & lbi, ubi, lbj, ubj, &
3289 & tl_vbar(:,:,knew))
3303 & lbi, ubi, lbj, ubj, &
3306 & tl_zeta(:,:,knew), &
3307 & tl_ubar(:,:,knew), &
3308 & tl_vbar(:,:,knew))