185 & LBi, UBi, LBj, UBj, UBk, &
186 & IminS, ImaxS, JminS, JmaxS, &
187 & krhs, kstp, knew, &
192 & pmask, rmask, umask, vmask, &
194#ifdef WET_DRY_NOT_YET
195 & pmask_wet, pmask_full, &
196 & rmask_wet, rmask_full, &
197 & umask_wet, umask_full, &
198 & vmask_wet, vmask_full, &
205 & om_u, om_v, on_u, on_v, omn, pm, pn, &
206#if defined CURVGRID && defined UV_ADV
209#if defined UV_VIS2 || defined UV_VIS4 || defined RPM_RELAXATION
210 & pmon_r, pnom_r, pmon_p, pnom_p, &
211 & om_r, on_r, om_p, on_p, &
213 & visc2_p, visc2_r, &
216 & visc4_p, visc4_r, &
219#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
223 & tl_rustr2d, tl_rvstr2d, &
224 & tl_rulag2d, tl_rvlag2d, &
225 & ubar_stokes, tl_ubar_stokes, &
226 & vbar_stokes, tl_vbar_stokes, &
228#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
229 & eq_tide, tl_eq_tide, &
233 & tl_sustr, tl_svstr, &
234 & tl_bustr, tl_bvstr, &
240# ifdef VAR_RHO_2D_NOT_YET
244 & tl_DU_avg1, tl_DU_avg2, &
245 & tl_DV_avg1, tl_DV_avg2, &
246 & Zt_avg1, tl_Zt_avg1, &
247 & tl_rufrc, tl_rvfrc, &
251!! & DiaU2wrk, DiaV2wrk, &
252!! & DiaRUbar, DiaRVbar, &
254!! & DiaU2int, DiaV2int, &
255!! & DiaRUfrc, DiaRVfrc, &
268 integer,
intent(in ) :: ng, tile
269 integer,
intent(in ) :: LBi, UBi, LBj, UBj, UBk
270 integer,
intent(in ) :: IminS, ImaxS, JminS, JmaxS
271 integer,
intent(in ) :: krhs, kstp, knew
273 integer,
intent(in ) :: nstp, nnew
278 real(r8),
intent(in ) :: pmask(LBi:,LBj:)
279 real(r8),
intent(in ) :: rmask(LBi:,LBj:)
280 real(r8),
intent(in ) :: umask(LBi:,LBj:)
281 real(r8),
intent(in ) :: vmask(LBi:,LBj:)
283 real(r8),
intent(in ) :: fomn(LBi:,LBj:)
284 real(r8),
intent(in ) :: h(LBi:,LBj:)
285 real(r8),
intent(in ) :: om_u(LBi:,LBj:)
286 real(r8),
intent(in ) :: om_v(LBi:,LBj:)
287 real(r8),
intent(in ) :: on_u(LBi:,LBj:)
288 real(r8),
intent(in ) :: on_v(LBi:,LBj:)
289 real(r8),
intent(in ) :: omn(LBi:,LBj:)
290 real(r8),
intent(in ) :: pm(LBi:,LBj:)
291 real(r8),
intent(in ) :: pn(LBi:,LBj:)
292# if defined CURVGRID && defined UV_ADV
293 real(r8),
intent(in ) :: dndx(LBi:,LBj:)
294 real(r8),
intent(in ) :: dmde(LBi:,LBj:)
296# if defined UV_VIS2 || defined UV_VIS4 || defined RPM_RELAXATION
297 real(r8),
intent(in ) :: pmon_r(LBi:,LBj:)
298 real(r8),
intent(in ) :: pnom_r(LBi:,LBj:)
299 real(r8),
intent(in ) :: pmon_p(LBi:,LBj:)
300 real(r8),
intent(in ) :: pnom_p(LBi:,LBj:)
301 real(r8),
intent(in ) :: om_r(LBi:,LBj:)
302 real(r8),
intent(in ) :: on_r(LBi:,LBj:)
303 real(r8),
intent(in ) :: om_p(LBi:,LBj:)
304 real(r8),
intent(in ) :: on_p(LBi:,LBj:)
306 real(r8),
intent(in ) :: visc2_p(LBi:,LBj:)
307 real(r8),
intent(in ) :: visc2_r(LBi:,LBj:)
310 real(r8),
intent(in ) :: visc4_p(LBi:,LBj:)
311 real(r8),
intent(in ) :: visc4_r(LBi:,LBj:)
314# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
315 real(r8),
intent(in ) :: tl_bed_thick(LBi:,LBj:,:)
318 real(r8),
intent(in ) :: ubar_stokes(LBi:,LBj:)
319 real(r8),
intent(in ) :: vbar_stokes(LBi:,LBj:)
321# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
322 real(r8),
intent(in ) :: eq_tide(LBi:,LBj:)
323 real(r8),
intent(in ) :: tl_eq_tide(LBi:,LBj:)
325 real(r8),
intent(inout) :: rubar(LBi:,LBj:,:)
326 real(r8),
intent(inout) :: rvbar(LBi:,LBj:,:)
327 real(r8),
intent(inout) :: rzeta(LBi:,LBj:,:)
328 real(r8),
intent(in ) :: ubar(LBi:,LBj:,:)
329 real(r8),
intent(in ) :: vbar(LBi:,LBj:,:)
330 real(r8),
intent(in ) :: zeta(LBi:,LBj:,:)
331# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
332 real(r8),
intent(inout) :: tl_h(LBi:,LBj:)
334 real(r8),
intent(in ) :: tl_h(LBi:,LBj:)
338 real(r8),
intent(in ) :: tl_sustr(LBi:,LBj:)
339 real(r8),
intent(in ) :: tl_svstr(LBi:,LBj:)
340 real(r8),
intent(in ) :: tl_bustr(LBi:,LBj:)
341 real(r8),
intent(in ) :: tl_bvstr(LBi:,LBj:)
344 real(r8),
intent(in ) :: Pair(LBi:,LBj:)
347# ifdef VAR_RHO_2D_NOT_YET
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(in ) :: Zt_avg1(LBi:,LBj:)
355 real(r8),
intent(inout) :: tl_DU_avg1(LBi:,LBj:)
356 real(r8),
intent(inout) :: tl_DU_avg2(LBi:,LBj:)
357 real(r8),
intent(inout) :: tl_DV_avg1(LBi:,LBj:)
358 real(r8),
intent(inout) :: tl_DV_avg2(LBi:,LBj:)
359 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:,LBj:)
360 real(r8),
intent(inout) :: tl_rufrc(LBi:,LBj:)
361 real(r8),
intent(inout) :: tl_rvfrc(LBi:,LBj:)
362 real(r8),
intent(inout) :: tl_ru(LBi:,LBj:,0:,:)
363 real(r8),
intent(inout) :: tl_rv(LBi:,LBj:,0:,:)
366 real(r8),
intent(inout) :: tl_rustr2d(LBi:,LBj:)
367 real(r8),
intent(inout) :: tl_rvstr2d(LBi:,LBj:)
368 real(r8),
intent(inout) :: tl_rulag2d(LBi:,LBj:)
369 real(r8),
intent(inout) :: tl_rvlag2d(LBi:,LBj:)
370 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:,LBj:)
371 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:,LBj:)
373# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
374 real(r8),
intent(in ) :: eq_tide(LBi:UBi,LBj:UBj)
375 real(r8),
intent(in ) :: tl_eq_tide(LBi:UBi,LBj:UBj)
377# ifdef WET_DRY_NOT_YET
378 real(r8),
intent(inout) :: pmask_full(LBi:,LBj:)
379 real(r8),
intent(inout) :: rmask_full(LBi:,LBj:)
380 real(r8),
intent(inout) :: umask_full(LBi:,LBj:)
381 real(r8),
intent(inout) :: vmask_full(LBi:,LBj:)
383 real(r8),
intent(inout) :: pmask_wet(LBi:,LBj:)
384 real(r8),
intent(inout) :: rmask_wet(LBi:,LBj:)
385 real(r8),
intent(inout) :: umask_wet(LBi:,LBj:)
386 real(r8),
intent(inout) :: vmask_wet(LBi:,LBj:)
388 real(r8),
intent(inout) :: rmask_wet_avg(LBi:,LBj:)
391# ifdef DIAGNOSTICS_UV
403 real(r8),
intent(inout) :: tl_rubar(LBi:,LBj:,:)
404 real(r8),
intent(inout) :: tl_rvbar(LBi:,LBj:,:)
405 real(r8),
intent(inout) :: tl_rzeta(LBi:,LBj:,:)
406 real(r8),
intent(inout) :: tl_ubar(LBi:,LBj:,:)
407 real(r8),
intent(inout) :: tl_vbar(LBi:,LBj:,:)
408 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
413 real(r8),
intent(in ) :: pmask(LBi:UBi,LBj:UBj)
414 real(r8),
intent(in ) :: rmask(LBi:UBi,LBj:UBj)
415 real(r8),
intent(in ) :: umask(LBi:UBi,LBj:UBj)
416 real(r8),
intent(in ) :: vmask(LBi:UBi,LBj:UBj)
418 real(r8),
intent(in ) :: fomn(LBi:UBi,LBj:UBj)
419 real(r8),
intent(in ) :: h(LBi:UBi,LBj:UBj)
420 real(r8),
intent(in ) :: om_u(LBi:UBi,LBj:UBj)
421 real(r8),
intent(in ) :: om_v(LBi:UBi,LBj:UBj)
422 real(r8),
intent(in ) :: on_u(LBi:UBi,LBj:UBj)
423 real(r8),
intent(in ) :: on_v(LBi:UBi,LBj:UBj)
424 real(r8),
intent(in ) :: omn(LBi:UBi,LBj:UBj)
425 real(r8),
intent(in ) :: pm(LBi:UBi,LBj:UBj)
426 real(r8),
intent(in ) :: pn(LBi:UBi,LBj:UBj)
427# if defined CURVGRID && defined UV_ADV
428 real(r8),
intent(in ) :: dndx(LBi:UBi,LBj:UBj)
429 real(r8),
intent(in ) :: dmde(LBi:UBi,LBj:UBj)
431# if defined UV_VIS2 || defined UV_VIS4 || defined RPM_RELAXATION
432 real(r8),
intent(in ) :: pmon_r(LBi:UBi,LBj:UBj)
433 real(r8),
intent(in ) :: pnom_r(LBi:UBi,LBj:UBj)
434 real(r8),
intent(in ) :: pmon_p(LBi:UBi,LBj:UBj)
435 real(r8),
intent(in ) :: pnom_p(LBi:UBi,LBj:UBj)
436 real(r8),
intent(in ) :: om_r(LBi:UBi,LBj:UBj)
437 real(r8),
intent(in ) :: on_r(LBi:UBi,LBj:UBj)
438 real(r8),
intent(in ) :: om_p(LBi:UBi,LBj:UBj)
439 real(r8),
intent(in ) :: on_p(LBi:UBi,LBj:UBj)
441 real(r8),
intent(in ) :: visc2_p(LBi:UBi,LBj:UBj)
442 real(r8),
intent(in ) :: visc2_r(LBi:UBi,LBj:UBj)
445 real(r8),
intent(in ) :: visc4_p(LBi:UBi,LBj:UBj)
446 real(r8),
intent(in ) :: visc4_r(LBi:UBi,LBj:UBj)
449# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
450 real(r8),
intent(in ) :: tl_bed_thick(LBi:UBi,LBj:UBj,3)
453 real(r8),
intent(in ) :: ubar_stokes(LBi:UBi,LBj:UBj)
454 real(r8),
intent(in ) :: vbar_stokes(LBi:UBi,LBj:UBj)
456# if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
457 real(r8),
intent(in ) :: eq_tide(LBi:UBi,LBj:UBj)
458 real(r8),
intent(in ) :: tl_eq_tide(LBi:UBi,LBj:UBj)
460 real(r8),
intent(inout) :: rubar(LBi:UBi,LBj:UBj,2)
461 real(r8),
intent(inout) :: rvbar(LBi:UBi,LBj:UBj,2)
462 real(r8),
intent(inout) :: rzeta(LBi:UBi,LBj:UBj,2)
463 real(r8),
intent(in ) :: ubar(LBi:UBi,LBj:UBj,:)
464 real(r8),
intent(in ) :: vbar(LBi:UBi,LBj:UBj,:)
465 real(r8),
intent(in ) :: zeta(LBi:UBi,LBj:UBj,:)
466# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
467 real(r8),
intent(inout) :: tl_h(LBi:UBi,LBj:UBj)
469 real(r8),
intent(in ) :: tl_h(LBi:UBi,LBj:UBj)
473 real(r8),
intent(in ) :: tl_sustr(LBi:UBi,LBj:UBj)
474 real(r8),
intent(in ) :: tl_svstr(LBi:UBi,LBj:UBj)
475 real(r8),
intent(in ) :: tl_bustr(LBi:UBi,LBj:UBj)
476 real(r8),
intent(in ) :: tl_bvstr(LBi:UBi,LBj:UBj)
479 real(r8),
intent(in ) :: Pair(LBi:UBi,LBj:UBj)
482# ifdef VAR_RHO_2D_NOT_YET
483 real(r8),
intent(in ) :: rhoA(LBi:UBi,LBj:UBj)
484 real(r8),
intent(in ) :: rhoS(LBi:UBi,LBj:UBj)
485 real(r8),
intent(in ) :: tl_rhoA(LBi:UBi,LBj:UBj)
486 real(r8),
intent(in ) :: tl_rhoS(LBi:UBi,LBj:UBj)
488 real(r8),
intent(in ) :: Zt_avg1(LBi:UBi,LBj:UBj)
490 real(r8),
intent(inout) :: tl_DU_avg1(LBi:UBi,LBj:UBj)
491 real(r8),
intent(inout) :: tl_DU_avg2(LBi:UBi,LBj:UBj)
492 real(r8),
intent(inout) :: tl_DV_avg1(LBi:UBi,LBj:UBj)
493 real(r8),
intent(inout) :: tl_DV_avg2(LBi:UBi,LBj:UBj)
494 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:UBi,LBj:UBj)
495 real(r8),
intent(inout) :: tl_rufrc(LBi:UBi,LBj:UBj)
496 real(r8),
intent(inout) :: tl_rvfrc(LBi:UBi,LBj:UBj)
497 real(r8),
intent(inout) :: tl_ru(LBi:UBi,LBj:UBj,0:UBk,2)
498 real(r8),
intent(inout) :: tl_rv(LBi:UBi,LBj:UBj,0:UBk,2)
501 real(r8),
intent(inout) :: tl_rustr2d(LBi:UBi,LBj:UBj)
502 real(r8),
intent(inout) :: tl_rvstr2d(LBi:UBi,LBj:UBj)
503 real(r8),
intent(inout) :: tl_rulag2d(LBi:UBi,LBj:UBj)
504 real(r8),
intent(inout) :: tl_rvlag2d(LBi:UBi,LBj:UBj)
505 real(r8),
intent(inout) :: tl_ubar_stokes(LBi:UBi,LBj:UBj)
506 real(r8),
intent(inout) :: tl_vbar_stokes(LBi:UBi,LBj:UBj)
508# ifdef WET_DRY_NOT_YET
509 real(r8),
intent(inout) :: pmask_full(LBi:UBi,LBj:UBj)
510 real(r8),
intent(inout) :: rmask_full(LBi:UBi,LBj:UBj)
511 real(r8),
intent(inout) :: umask_full(LBi:UBi,LBj:UBj)
512 real(r8),
intent(inout) :: vmask_full(LBi:UBi,LBj:UBj)
514 real(r8),
intent(inout) :: pmask_wet(LBi:UBi,LBj:UBj)
515 real(r8),
intent(inout) :: rmask_wet(LBi:UBi,LBj:UBj)
516 real(r8),
intent(inout) :: umask_wet(LBi:UBi,LBj:UBj)
517 real(r8),
intent(inout) :: vmask_wet(LBi:UBi,LBj:UBj)
519 real(r8),
intent(inout) :: rmask_wet_avg(LBi:UBi,LBj:UBj)
522# ifdef DIAGNOSTICS_UV
534 real(r8),
intent(inout) :: tl_rubar(LBi:UBi,LBj:UBj,2)
535 real(r8),
intent(inout) :: tl_rvbar(LBi:UBi,LBj:UBj,2)
536 real(r8),
intent(inout) :: tl_rzeta(LBi:UBi,LBj:UBj,2)
537 real(r8),
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
538 real(r8),
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
539 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
544 logical :: CORRECTOR_2D_STEP
546 integer :: i, is, j, ptsk
551 real(r8) :: cff, cff1, cff2, cff3, cff4, cff5, cff6, cff7
552 real(r8) :: fac, fac1, fac2, fac3
553 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3, tl_cff4
554 real(r8) :: tl_fac, tl_fac1
556 real(r8),
parameter :: IniVal = 0.0_r8
558 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dgrad
559 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dnew
560 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs
561 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Drhs_p
562 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Dstp
563 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUon
564 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVom
566 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DUSon
567 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: DVSom
570 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: LapU
571 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: LapV
573 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
574 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
575 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
576 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
577 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
578 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: gzeta
579 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: gzeta2
580#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
581 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: gzetaSA
583 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rhs_ubar
584 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rhs_vbar
585 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: rhs_zeta
586 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zeta_new
587 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: zwrk
588#ifdef WET_DRY_NOT_YET
589 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: wetdry
598 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dgrad
599 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dnew
600 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs
601 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Drhs_p
602 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Dstp
603 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUon
604 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVom
606 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DUSon
607 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_DVSom
610 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_LapU
611 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_LapV
613 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFe
614 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFx
615 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFe
616 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFx
617 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
618 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_gzeta
619 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_gzeta2
620#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
621 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_gzetaSA
623 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rhs_ubar
624 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rhs_vbar
625 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_rhs_zeta
626 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_zeta_new
627 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_zwrk
628#ifdef WET_DRY_NOT_YET
629 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_wetdry
632#include "set_bounds.h"
639 & kstp, krhs, knew, ptsk
640 20
FORMAT (
' iic = ',i5.5,
' predictor = ',l1,
' kstp = ',i1, &
641 &
' krhs = ',i1,
' knew = ',i1,
' ptsk = ',i1)
644#ifdef INITIALIZE_AUTOMATIC
675# if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
687 tl_drhs_p(i,j)=inival
705 tl_gzeta2(i,j)=inival
706# if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
707 tl_gzetasa(i,j)=inival
709 tl_rhs_ubar(i,j)=inival
710 tl_rhs_vbar(i,j)=inival
711 tl_rhs_zeta(i,j)=inival
712 tl_zeta_new(i,j)=inival
722#if defined DISTRIBUTE && !defined NESTING
733 dnew(i,j)=zeta(i,j,knew)+h(i,j)
734 drhs(i,j)=zeta(i,j,krhs)+h(i,j)
735 tl_drhs(i,j)=tl_zeta(i,j,krhs)+tl_h(i,j)
741 cff1=cff*(drhs(i,j)+drhs(i-1,j))
742 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i-1,j))
743 duon(i,j)=ubar(i,j,krhs)*cff1
744 tl_duon(i,j)=tl_ubar(i,j,krhs)*cff1+ &
745 & ubar(i,j,krhs)*tl_cff1- &
750 duson(i,j)=ubar_stokes(i,j)*cff1
751 tl_duson(i,j)=tl_ubar_stokes(i,j)*cff1+ &
752 & ubar_stokes(i,j)*tl_cff1- &
756 duon(i,j)=duon(i,j)+duson(i,j)
757 tl_duon(i,j)=tl_duon(i,j)+tl_duson(i,j)
764 cff1=cff*(drhs(i,j)+drhs(i,j-1))
765 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i,j-1))
766 dvom(i,j)=vbar(i,j,krhs)*cff1
767 tl_dvom(i,j)=tl_vbar(i,j,krhs)*cff1+ &
768 & vbar(i,j,krhs)*tl_cff1- &
773 dvsom(i,j)=vbar_stokes(i,j)*cff1
774 tl_dvsom(i,j)=tl_vbar_stokes(i,j)*cff1+ &
775 & vbar_stokes(i,j)*tl_cff1- &
779 dvom(i,j)=dvom(i,j)+dvsom(i,j)
780 tl_dvom(i,j)=tl_dvom(i,j)+tl_dvsom(i,j)
787 DO j=jstrvm2-1,jendp2
788 DO i=istrum2-1,iendp2
789 dnew(i,j)=zeta(i,j,knew)+h(i,j)
790 drhs(i,j)=zeta(i,j,krhs)+h(i,j)
791 tl_drhs(i,j)=tl_zeta(i,j,krhs)+tl_h(i,j)
794 DO j=jstrvm2-1,jendp2
797 cff1=cff*(drhs(i,j)+drhs(i-1,j))
798 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i-1,j))
799 duon(i,j)=ubar(i,j,krhs)*cff1
800 tl_duon(i,j)=tl_ubar(i,j,krhs)*cff1+ &
801 & ubar(i,j,krhs)*tl_cff1- &
806 duson(i,j)=ubar_stokes(i,j)*cff1
807 tl_duson(i,j)=tl_ubar_stokes(i,j)*cff1+ &
808 & ubar_stokes(i,j)*tl_cff1- &
812 duon(i,j)=duon(i,j)+duson(i,j)
813 tl_duon(i,j)=tl_duon(i,j)+tl_duson(i,j)
818 DO i=istrum2-1,iendp2
820 cff1=cff*(drhs(i,j)+drhs(i,j-1))
821 tl_cff1=cff*(tl_drhs(i,j)+tl_drhs(i,j-1))
822 dvom(i,j)=vbar(i,j,krhs)*cff1
823 tl_dvom(i,j)=tl_vbar(i,j,krhs)*cff1+ &
824 & vbar(i,j,krhs)*tl_cff1- &
829 dvsom(i,j)=vbar_stokes(i,j)*cff1
830 tl_dvsom(i,j)=tl_vbar_stokes(i,j)*cff1+ &
831 & vbar_stokes(i,j)*tl_cff1- &
835 dvom(i,j)=dvom(i,j)+dvsom(i,j)
836 tl_dvom(i,j)=tl_dvom(i,j)+tl_dvsom(i,j)
845 & imins, imaxs, jmins, jmaxs, &
848 & imins, imaxs, jmins, jmaxs, &
851 & imins, imaxs, jmins, jmaxs, &
854 & imins, imaxs, jmins, jmaxs, &
859 & imins, imaxs, jmins, jmaxs, &
864 & imins, imaxs, jmins, jmaxs, &
891 & lbi, ubi, lbj, ubj, &
892 & imins, imaxs, jmins, jmaxs, &
904 & lbi, ubi, lbj, ubj, &
905 & imins, imaxs, jmins, jmaxs, &
914 & lbi, ubi, lbj, ubj, &
915 & imins, imaxs, jmins, jmaxs, &
920 & om_v, on_u, ubar, vbar, &
921 & tl_ubar, tl_vbar, &
922 & drhs, duon, dvom, &
923 & tl_drhs, tl_duon, tl_dvom)
932 IF (first_2d_step)
THEN
936 cff2=(-1.0_r8/12.0_r8)*
weight(2,
iif(ng)+1,ng)
941 tl_zt_avg1(i,j)=0.0_r8
946 tl_du_avg1(i,j)=0.0_r8
949 tl_du_avg2(i,j)=cff2*tl_duon(i,j)
956 tl_dv_avg1(i,j)=0.0_r8
959 tl_dv_avg2(i,j)=cff2*tl_dvom(i,j)
969 cff2=(8.0_r8/12.0_r8)*
weight(2,
iif(ng) ,ng)- &
970 & (1.0_r8/12.0_r8)*
weight(2,
iif(ng)+1,ng)
975 tl_zt_avg1(i,j)=tl_zt_avg1(i,j)+cff1*tl_zeta(i,j,krhs)
980 tl_du_avg1(i,j)=tl_du_avg1(i,j)+cff1*tl_duon(i,j)
984 tl_du_avg1(i,j)=tl_du_avg1(i,j)-cff1*tl_duson(i,j)
988 tl_du_avg2(i,j)=tl_du_avg2(i,j)+cff2*tl_duon(i,j)
995 tl_dv_avg1(i,j)=tl_dv_avg1(i,j)+cff1*tl_dvom(i,j)
999 tl_dv_avg1(i,j)=tl_dv_avg1(i,j)-cff1*tl_dvsom(i,j)
1003 tl_dv_avg2(i,j)=tl_dv_avg2(i,j)+cff2*tl_dvom(i,j)
1008 IF (first_2d_step)
THEN
1011 cff2=(5.0_r8/12.0_r8)*
weight(2,
iif(ng),ng)
1017 tl_du_avg2(i,j)=tl_du_avg2(i,j)+cff2*tl_duon(i,j)
1024 tl_dv_avg2(i,j)=tl_dv_avg2(i,j)+cff2*tl_dvom(i,j)
1045 & lbi, ubi, lbj, ubj, &
1052 & lbi, ubi, lbj, ubj, &
1059 & lbi, ubi, lbj, ubj, &
1067 & lbi, ubi, lbj, ubj, &
1074 & lbi, ubi, lbj, ubj, &
1087 & lbi, ubi, lbj, ubj, &
1090 & tl_zt_avg1, tl_du_avg1, tl_dv_avg1)
1099 & lbi, ubi, lbj, ubj, &
1102 & tl_du_avg2, tl_dv_avg2)
1107#ifdef WET_DRY_NOT_YET
1146#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1149 IF (first_2d_step)
THEN
1153 rhs_zeta(i,j)=(duon(i,j)-duon(i+1,j))+ &
1154 & (dvom(i,j)-dvom(i,j+1))
1160 rzeta(i,j,kstp)=rhs_zeta(i,j)
1161 rzeta(i,j,ptsk)=rhs_zeta(i,j)
1163 tl_rhs_zeta(i,j)=(tl_duon(i,j)-tl_duon(i+1,j))+ &
1164 & (tl_dvom(i,j)-tl_dvom(i,j+1))
1169 zeta_new(i,j)=zeta(i,j,knew)
1170 tl_zeta_new(i,j)=tl_zeta(i,j,kstp)+ &
1171 & pm(i,j)*pn(i,j)*cff1*tl_rhs_zeta(i,j)
1173 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
1174 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
1178 tl_dnew(i,j)=tl_zeta_new(i,j)+tl_h(i,j)
1180 zwrk(i,j)=0.5_r8*(zeta(i,j,kstp)+zeta_new(i,j))
1181 tl_zwrk(i,j)=0.5_r8*(tl_zeta(i,j,kstp)+tl_zeta_new(i,j))
1182#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1183 gzeta(i,j)=(fac+rhos(i,j))*zwrk(i,j)
1184 tl_gzeta(i,j)=(fac+rhos(i,j))*tl_zwrk(i,j)+ &
1185 & tl_rhos(i,j)*zwrk(i,j)- &
1187 & rhos(i,j)*zwrk(i,j)
1189 gzeta2(i,j)=gzeta(i,j)*zwrk(i,j)
1190 tl_gzeta2(i,j)=tl_gzeta(i,j)*zwrk(i,j)+ &
1191 & gzeta(i,j)*tl_zwrk(i,j)- &
1195 gzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1196 tl_gzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
1197 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))- &
1202 gzeta(i,j)=zwrk(i,j)
1203 tl_gzeta(i,j)=tl_zwrk(i,j)
1204 gzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
1205 tl_gzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)- &
1215 cff5=1.0_r8-2.0_r8*cff4
1218 rhs_zeta(i,j)=(duon(i,j)-duon(i+1,j))+ &
1219 & (dvom(i,j)-dvom(i,j+1))
1225 rzeta(i,j,kstp)=rhs_zeta(i,j)
1226 rzeta(i,j,ptsk)=rhs_zeta(i,j)
1228 tl_rhs_zeta(i,j)=(tl_duon(i,j)-tl_duon(i+1,j))+ &
1229 & (tl_dvom(i,j)-tl_dvom(i,j+1))
1234 zeta_new(i,j)=zeta(i,j,knew)
1235 tl_zeta_new(i,j)=tl_zeta(i,j,kstp)+ &
1236 & pm(i,j)*pn(i,j)*cff1*tl_rhs_zeta(i,j)
1238 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
1239 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
1243 tl_dnew(i,j)=tl_zeta_new(i,j)+tl_h(i,j)
1245 zwrk(i,j)=cff5*zeta(i,j,krhs)+ &
1246 & cff4*(zeta(i,j,kstp)+zeta_new(i,j))
1247 tl_zwrk(i,j)=cff5*tl_zeta(i,j,krhs)+ &
1248 & cff4*(tl_zeta(i,j,kstp)+tl_zeta_new(i,j))
1249#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1250 gzeta(i,j)=(fac+rhos(i,j))*zwrk(i,j)
1251 tl_gzeta(i,j)=(fac+rhos(i,j))*tl_zwrk(i,j)+ &
1252 & tl_rhos(i,j)*zwrk(i,j)- &
1254 & rhos(i,j)*zwrk(i,j)
1256 gzeta2(i,j)=gzeta(i,j)*zwrk(i,j)
1257 tl_gzeta2(i,j)=tl_gzeta(i,j)*zwrk(i,j)+ &
1258 & gzeta(i,j)*tl_zwrk(i,j)- &
1262 gzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1263 tl_gzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
1264 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))- &
1269 gzeta(i,j)=zwrk(i,j)
1270 tl_gzeta(i,j)=tl_zwrk(i,j)
1271 gzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
1272 tl_gzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)- &
1279 ELSE IF (corrector_2d_step)
THEN
1280 cff1=
dtfast(ng)*5.0_r8/12.0_r8
1281 cff2=
dtfast(ng)*8.0_r8/12.0_r8
1282 cff3=
dtfast(ng)*1.0_r8/12.0_r8
1290 tl_cff=cff1*((tl_duon(i,j)-tl_duon(i+1,j))+ &
1291 & (tl_dvom(i,j)-tl_dvom(i,j+1)))
1298 zeta_new(i,j)=zeta(i,j,knew)
1299 tl_zeta_new(i,j)=tl_zeta(i,j,kstp)+ &
1300 & pm(i,j)*pn(i,j)*(tl_cff+ &
1301 & cff2*tl_rzeta(i,j,kstp)- &
1302 & cff3*tl_rzeta(i,j,ptsk))
1304 zeta_new(i,j)=zeta_new(i,j)*rmask(i,j)
1305 tl_zeta_new(i,j)=tl_zeta_new(i,j)*rmask(i,j)
1309 tl_dnew(i,j)=tl_zeta_new(i,j)+tl_h(i,j)
1311 zwrk(i,j)=cff5*zeta_new(i,j)+cff4*zeta(i,j,krhs)
1312 tl_zwrk(i,j)=cff5*tl_zeta_new(i,j)+cff4*tl_zeta(i,j,krhs)
1313#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1314 gzeta(i,j)=(fac+rhos(i,j))*zwrk(i,j)
1315 tl_gzeta(i,j)=(fac+rhos(i,j))*tl_zwrk(i,j)+ &
1316 & tl_rhos(i,j)*zwrk(i,j)- &
1318 & rhos(i,j)*zwrk(i,j)
1320 gzeta2(i,j)=gzeta(i,j)*zwrk(i,j)
1321 tl_gzeta2(i,j)=tl_gzeta(i,j)*zwrk(i,j)+ &
1322 & gzeta(i,j)*tl_zwrk(i,j)- &
1326 gzetasa(i,j)=zwrk(i,j)*(rhos(i,j)-rhoa(i,j))
1327 tl_gzetasa(i,j)=tl_zwrk(i,j)*(rhos(i,j)-rhoa(i,j))+ &
1328 & zwrk(i,j)*(tl_rhos(i,j)-tl_rhoa(i,j))- &
1333 gzeta(i,j)=zwrk(i,j)
1334 tl_gzeta(i,j)=tl_zwrk(i,j)
1335 gzeta2(i,j)=zwrk(i,j)*zwrk(i,j)
1336 tl_gzeta2(i,j)=2.0_r8*tl_zwrk(i,j)*zwrk(i,j)- &
1347#ifdef WET_DRY_NOT_YET
1356 tl_zeta(i,j,knew)=tl_zeta_new(i,j)
1357#if defined WET_DRY_NOT_YET && defined MASKING
1361 tl_zeta(i,j,knew)=tl_zeta(i,j,knew)- &
1362 & tl_h(i,j)*(1.0_r8-rmask(i,j))
1374 tl_rzeta(i,j,krhs)=tl_rhs_zeta(i,j)
1384 & lbi, ubi, lbj, ubj, &
1385 & tl_rzeta(:,:,krhs))
1396 & lbi, ubi, lbj, ubj, &
1399 & tl_rzeta(:,:,krhs))
1409 IF (int(
sources(ng)%Dsrc(is)).eq.2)
THEN
1412 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1413 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1424#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1435 tl_cff=fac*(tl_bed_thick(i,j,nstp)-tl_bed_thick(i,j,nnew))
1438 tl_h(i,j)=tl_h(i,j)-tl_cff
1452 & lbi, ubi, lbj, ubj, &
1453 & imins, imaxs, jmins, jmaxs, &
1454 & krhs, kstp, knew, &
1463 & lbi, ubi, lbj, ubj, &
1464 & tl_zeta(:,:,knew))
1475 & lbi, ubi, lbj, ubj, &
1478 & tl_zeta(:,:,knew))
1491#if !defined SOLVE3D && defined ATM_PRESS
1492 fac3=0.5_r8*100.0_r8/
rho0
1501#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1514 tl_rhs_ubar(i,j)=cff1*on_u(i,j)* &
1517 & (tl_gzeta(i-1,j)- &
1518 & tl_gzeta(i ,j))+ &
1519#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1531#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1532# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1535 & (gzetasa(i-1,j)+ &
1537 & cff2*(rhoa(i-1,j)- &
1544 & (tl_gzetasa(i-1,j)+ &
1545 & tl_gzetasa(i ,j)+ &
1546 & cff2*((tl_rhoa(i-1,j)- &
1552 & (tl_zwrk(i-1,j)- &
1553 & tl_zwrk(i ,j))))- &
1555# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1558 & (gzetasa(i-1,j)+ &
1564 & (cff2*(rhoa(i-1,j)- &
1570 & (tl_gzeta2(i-1,j)- &
1572#if defined ATM_PRESS && !defined SOLVE3D
1579 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)- &
1581 & (tl_h(i-1,j)+tl_h(i,j)+ &
1582 & tl_gzeta(i-1,j)+tl_gzeta(i,j))* &
1583 & (pair(i,j)-pair(i-1,j))
1585#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1592 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)- &
1594 & ((tl_h(i-1,j)+tl_h(i,j)+ &
1595 & tl_gzeta(i-1,j)+tl_gzeta(i,j))* &
1596 & (eq_tide(i,j)-eq_tide(i-1,j))+ &
1597 & (h(i-1,j)+h(i,j)+ &
1598 & gzeta(i-1,j)+gzeta(i,j))* &
1599 & (tl_eq_tide(i,j)-tl_eq_tide(i-1,j))- &
1601 & (h(i-1,j)+h(i,j)+ &
1602 & gzeta(i-1,j)+gzeta(i,j))* &
1603 & (eq_tide(i,j)-eq_tide(i-1,j)))
1606#ifdef DIAGNOSTICS_UV
1610 IF (j.ge.jstrv)
THEN
1617#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1630 tl_rhs_vbar(i,j)=cff1*om_v(i,j)* &
1633 & (tl_gzeta(i,j-1)- &
1634 & tl_gzeta(i,j ))+ &
1635#if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1647#if defined VAR_RHO_2D_NOT_YET && defined SOLVE3D
1648# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1651 & (gzetasa(i,j-1)+ &
1653 & cff2*(rhoa(i,j-1)- &
1660 & (tl_gzetasa(i,j-1)+ &
1661 & tl_gzetasa(i,j )+ &
1662 & cff2*((tl_rhoa(i,j-1)- &
1668 & (tl_zwrk(i,j-1)- &
1669 & tl_zwrk(i,j ))))- &
1671# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1674 & (gzetasa(i,j-1)+ &
1680 & (cff2*(rhoa(i,j-1)- &
1686 & (tl_gzeta2(i,j-1)- &
1688#if defined ATM_PRESS && !defined SOLVE3D
1695 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)- &
1697 & (tl_h(i,j-1)+tl_h(i,j)+ &
1698 & tl_gzeta(i,j-1)+tl_gzeta(i,j))* &
1699 & (pair(i,j)-pair(i,j-1))
1701#if defined TIDE_GENERATING_FORCES && !defined SOLVE3D
1708 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)- &
1710 & ((tl_h(i,j-1)+tl_h(i,j)+ &
1711 & tl_gzeta(i,j-1)+tl_gzeta(i,j))* &
1712 & (eq_tide(i,j)-eq_tide(i,j-1))+ &
1713 & (h(i,j-1)+h(i,j)+ &
1714 & gzeta(i,j-1)+gzeta(i,j))* &
1715 & (tl_eq_tide(i,j)-tl_eq_tide(i,j-1))- &
1717 & (h(i,j-1)+h(i,j)+ &
1718 & gzeta(i,j-1)+gzeta(i,j))* &
1719 & (eq_tide(i,j)-eq_tide(i,j-1)))
1722#ifdef DIAGNOSTICS_UV
1734# ifdef UV_C2ADVECTION
1740 ufx(i,j)=0.25_r8*(duon(i,j)+duon(i+1,j))* &
1741 & (ubar(i ,j,krhs)+ &
1743 & ubar_stokes(i ,j)+ &
1744 & ubar_stokes(i+1,j)+ &
1747 tl_ufx(i,j)=0.25_r8* &
1748 & ((tl_duon(i,j)+tl_duon(i+1,j))* &
1749 & (ubar(i ,j,krhs)+ &
1751 & ubar_stokes(i ,j)+ &
1752 & ubar_stokes(i+1,j)+ &
1754 & ubar(i+1,j,krhs))+ &
1755 & (duon(i,j)+duon(i+1,j))* &
1756 & (tl_ubar(i ,j,krhs)+ &
1758 & tl_ubar_stokes(i ,j)+ &
1759 & tl_ubar_stokes(i+1,j)+ &
1761 & tl_ubar(i+1,j,krhs)))- &
1770 ufe(i,j)=0.25_r8*(dvom(i,j)+dvom(i-1,j))* &
1771 & (ubar(i,j ,krhs)+ &
1773 & ubar_stokes(i,j )+ &
1774 & ubar_stokes(i,j-1)+ &
1777 tl_ufe(i,j)=0.25_r8* &
1778 & ((tl_dvom(i,j)+tl_dvom(i-1,j))* &
1779 & (ubar(i,j ,krhs)+ &
1781 & ubar_stokes(i,j )+ &
1782 & ubar_stokes(i,j-1)+ &
1784 & ubar(i,j-1,krhs))+ &
1785 & (dvom(i,j)+dvom(i-1,j))* &
1786 & (tl_ubar(i,j ,krhs)+ &
1788 & tl_ubar_stokes(i,j )+ &
1789 & tl_ubar_stokes(i,j-1)+ &
1791 & tl_ubar(i,j-1,krhs)))- &
1800 vfx(i,j)=0.25_r8*(duon(i,j)+duon(i,j-1))* &
1801 & (vbar(i ,j,krhs)+ &
1803 & vbar_stokes(i ,j)+ &
1804 & vbar_stokes(i-1,j)+ &
1807 tl_vfx(i,j)=0.25_r8* &
1808 & ((tl_duon(i,j)+tl_duon(i,j-1))* &
1809 & (vbar(i ,j,krhs)+ &
1811 & vbar_stokes(i ,j)+ &
1812 & vbar_stokes(i-1,j)+ &
1814 & vbar(i-1,j,krhs))+ &
1815 & (duon(i,j)+duon(i,j-1))* &
1816 & (tl_vbar(i ,j,krhs)+ &
1818 & tl_vbar_stokes(i ,j)+ &
1819 & tl_vbar_stokes(i-1,j)+ &
1821 & tl_vbar(i-1,j,krhs)))- &
1830 vfe(i,j)=0.25_r8*(dvom(i,j)+dvom(i,j+1))* &
1831 & (vbar(i,j ,krhs)+ &
1833 & vbar_stokes(i,j )+ &
1834 & vbar_stokes(i,j+1)+ &
1837 tl_vfe(i,j)=0.25_r8* &
1838 & ((tl_dvom(i,j)+tl_dvom(i,j+1))* &
1839 & (vbar(i,j ,krhs)+ &
1841 & vbar_stokes(i,j )+ &
1842 & vbar_stokes(i,j+1)+ &
1844 & vbar(i,j+1,krhs))+ &
1845 & (dvom(i,j)+dvom(i,j+1))* &
1846 & (tl_vbar(i,j ,krhs)+ &
1848 & tl_vbar_stokes(i,j )+ &
1849 & tl_vbar_stokes(i,j+1)+ &
1851 & tl_vbar(i,j+1,krhs)))- &
1863 grad(i,j)=ubar(i-1,j,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1865 & ubar_stokes(i-1,j)-2.0_r8*ubar_stokes(i,j)+ &
1866 & ubar_stokes(i+1,j)+ &
1869 tl_grad(i,j)=tl_ubar(i-1,j,krhs)-2.0_r8*tl_ubar(i,j,krhs)+ &
1871 & tl_ubar_stokes(i-1,j)-2.0_r8*tl_ubar_stokes(i,j)+&
1872 & tl_ubar_stokes(i+1,j)+ &
1874 & tl_ubar(i+1,j,krhs)
1875 dgrad(i,j)=duon(i-1,j)-2.0_r8*duon(i,j)+duon(i+1,j)
1876 tl_dgrad(i,j)=tl_duon(i-1,j)-2.0_r8*tl_duon(i,j)+ &
1881 IF (
domain(ng)%Western_Edge(tile))
THEN
1883 grad(istr,j)=grad(istr+1,j)
1884 tl_grad(istr,j)=tl_grad(istr+1,j)
1885 dgrad(istr,j)=dgrad(istr+1,j)
1886 tl_dgrad(istr,j)=tl_dgrad(istr+1,j)
1891 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1893 grad(iend+1,j)=grad(iend,j)
1894 tl_grad(iend+1,j)=tl_grad(iend,j)
1895 dgrad(iend+1,j)=dgrad(iend,j)
1896 tl_dgrad(iend+1,j)=tl_dgrad(iend,j)
1904 ufx(i,j)=0.25_r8*(ubar(i ,j,krhs)+ &
1906 & ubar_stokes(i ,j)+ &
1907 & ubar_stokes(i+1,j)+ &
1909 & ubar(i+1,j,krhs)- &
1910 & cff*(grad(i,j)+grad(i+1,j)))* &
1911 & (duon(i,j)+duon(i+1,j)- &
1912 & cff*(dgrad(i,j)+dgrad(i+1,j)))
1913 tl_ufx(i,j)=0.25_r8* &
1914 & ((ubar(i ,j,krhs)+ &
1916 & ubar_stokes(i ,j)+ &
1917 & ubar_stokes(i+1,j)+ &
1919 & ubar(i+1,j,krhs)- &
1920 & cff*(grad(i,j)+grad(i+1,j)))* &
1921 & (tl_duon(i,j)+tl_duon(i+1,j)- &
1922 & cff*(tl_dgrad(i,j)+tl_dgrad(i+1,j)))+ &
1923 & (tl_ubar(i ,j,krhs)+ &
1925 & tl_ubar_stokes(i ,j)+ &
1926 & tl_ubar_stokes(i+1,j)+ &
1928 & tl_ubar(i+1,j,krhs)- &
1929 & cff*(tl_grad(i,j)+tl_grad(i+1,j)))* &
1930 & (duon(i,j)+duon(i+1,j)- &
1931 & cff*(dgrad(i,j)+dgrad(i+1,j))))- &
1940 grad(i,j)=ubar(i,j-1,krhs)-2.0_r8*ubar(i,j,krhs)+ &
1942 & ubar_stokes(i,j-1)-2.0_r8*ubar_stokes(i,j)+ &
1943 & ubar_stokes(i,j+1)+ &
1946 tl_grad(i,j)=tl_ubar(i,j-1,krhs)-2.0_r8*tl_ubar(i,j,krhs)+ &
1948 & tl_ubar_stokes(i,j-1)-2.0_r8*tl_ubar_stokes(i,j)+&
1949 & tl_ubar_stokes(i,j+1)+ &
1951 & tl_ubar(i,j+1,krhs)
1955 IF (
domain(ng)%Southern_Edge(tile))
THEN
1957 grad(i,jstr-1)=grad(i,jstr)
1958 tl_grad(i,jstr-1)=tl_grad(i,jstr)
1963 IF (
domain(ng)%Northern_Edge(tile))
THEN
1965 grad(i,jend+1)=grad(i,jend)
1966 tl_grad(i,jend+1)=tl_grad(i,jend)
1972 dgrad(i,j)=dvom(i-1,j)-2.0_r8*dvom(i,j)+dvom(i+1,j)
1973 tl_dgrad(i,j)=tl_dvom(i-1,j)-2.0_r8*tl_dvom(i,j)+ &
1981 ufe(i,j)=0.25_r8*(ubar(i,j ,krhs)+ &
1983 & ubar_stokes(i,j )+ &
1984 & ubar_stokes(i,j-1)+ &
1986 & ubar(i,j-1,krhs)- &
1987 & cff*(grad(i,j)+grad(i,j-1)))* &
1988 & (dvom(i,j)+dvom(i-1,j)- &
1989 & cff*(dgrad(i,j)+dgrad(i-1,j)))
1990 tl_ufe(i,j)=0.25_r8* &
1991 & ((tl_ubar(i,j ,krhs)+ &
1993 & tl_ubar_stokes(i,j )+ &
1994 & tl_ubar_stokes(i,j-1)+ &
1996 & tl_ubar(i,j-1,krhs)- &
1997 & cff*(tl_grad(i,j)+tl_grad(i,j-1)))* &
1998 & (dvom(i,j)+dvom(i-1,j)- &
1999 & cff*(dgrad(i,j)+dgrad(i-1,j)))+ &
2000 & (ubar(i,j ,krhs)+ &
2002 & ubar_stokes(i,j )+ &
2003 & ubar_stokes(i,j-1)+ &
2005 & ubar(i,j-1,krhs)- &
2006 & cff*(grad(i,j)+grad(i,j-1)))* &
2007 & (tl_dvom(i,j)+tl_dvom(i-1,j)- &
2008 & cff*(tl_dgrad(i,j)+tl_dgrad(i-1,j))))- &
2017 grad(i,j)=vbar(i-1,j,krhs)-2.0_r8*vbar(i,j,krhs)+ &
2019 & vbar_stokes(i-1,j)-2.0_r8*vbar_stokes(i,j)+ &
2020 & vbar_stokes(i+1,j)+ &
2023 tl_grad(i,j)=tl_vbar(i-1,j,krhs)-2.0_r8*tl_vbar(i,j,krhs)+ &
2025 & tl_vbar_stokes(i-1,j)-2.0_r8*tl_vbar_stokes(i,j)+&
2026 & tl_vbar_stokes(i+1,j)+ &
2028 & tl_vbar(i+1,j,krhs)
2032 IF (
domain(ng)%Western_Edge(tile))
THEN
2034 grad(istr-1,j)=grad(istr,j)
2035 tl_grad(istr-1,j)=tl_grad(istr,j)
2040 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2042 grad(iend+1,j)=grad(iend,j)
2043 tl_grad(iend+1,j)=tl_grad(iend,j)
2049 dgrad(i,j)=duon(i,j-1)-2.0_r8*duon(i,j)+duon(i,j+1)
2050 tl_dgrad(i,j)=tl_duon(i,j-1)-2.0_r8*tl_duon(i,j)+ &
2058 vfx(i,j)=0.25_r8*(vbar(i ,j,krhs)+ &
2060 & vbar_stokes(i ,j)+ &
2061 & vbar_stokes(i-1,j)+ &
2063 & vbar(i-1,j,krhs)- &
2064 & cff*(grad(i,j)+grad(i-1,j)))* &
2065 & (duon(i,j)+duon(i,j-1)- &
2066 & cff*(dgrad(i,j)+dgrad(i,j-1)))
2067 tl_vfx(i,j)=0.25_r8* &
2068 & ((tl_vbar(i ,j,krhs)+ &
2070 & tl_vbar_stokes(i ,j)+ &
2071 & tl_vbar_stokes(i-1,j)+ &
2073 & tl_vbar(i-1,j,krhs)- &
2074 & cff*(tl_grad(i,j)+tl_grad(i-1,j)))* &
2075 & (duon(i,j)+duon(i,j-1)- &
2076 & cff*(dgrad(i,j)+dgrad(i,j-1)))+ &
2077 & (vbar(i ,j,krhs)+ &
2079 & vbar_stokes(i ,j)+ &
2080 & vbar_stokes(i-1,j)+ &
2082 & vbar(i-1,j,krhs)- &
2083 & cff*(grad(i,j)+grad(i-1,j)))* &
2084 & (tl_duon(i,j)+tl_duon(i,j-1)- &
2085 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j-1))))- &
2094 grad(i,j)=vbar(i,j-1,krhs)-2.0_r8*vbar(i,j,krhs)+ &
2096 & vbar_stokes(i,j-1)-2.0_r8*vbar_stokes(i,j)+ &
2097 & vbar_stokes(i,j+1)+ &
2100 tl_grad(i,j)=tl_vbar(i,j-1,krhs)-2.0_r8*tl_vbar(i,j,krhs)+ &
2102 & tl_vbar_stokes(i,j-1)-2.0_r8*tl_vbar_stokes(i,j)+&
2103 & tl_vbar_stokes(i,j+1)+ &
2105 & tl_vbar(i,j+1,krhs)
2106 dgrad(i,j)=dvom(i,j-1)-2.0_r8*dvom(i,j)+dvom(i,j+1)
2107 tl_dgrad(i,j)=tl_dvom(i,j-1)-2.0_r8*tl_dvom(i,j)+ &
2112 IF (
domain(ng)%Southern_Edge(tile))
THEN
2114 grad(i,jstr)=grad(i,jstr+1)
2115 tl_grad(i,jstr)=tl_grad(i,jstr+1)
2116 dgrad(i,jstr)=dgrad(i,jstr+1)
2117 tl_dgrad(i,jstr)=tl_dgrad(i,jstr+1)
2122 IF (
domain(ng)%Northern_Edge(tile))
THEN
2124 grad(i,jend+1)=grad(i,jend)
2125 tl_grad(i,jend+1)=tl_grad(i,jend)
2126 dgrad(i,jend+1)=dgrad(i,jend)
2127 tl_dgrad(i,jend+1)=tl_dgrad(i,jend)
2135 vfe(i,j)=0.25_r8*(vbar(i,j ,krhs)+ &
2137 & vbar_stokes(i,j )+ &
2138 & vbar_stokes(i,j+1)+ &
2140 & vbar(i,j+1,krhs)- &
2141 & cff*(grad(i,j)+grad(i,j+1)))* &
2142 & (dvom(i,j)+dvom(i,j+1)- &
2143 & cff*(dgrad(i,j)+dgrad(i,j+1)))
2144 tl_vfe(i,j)=0.25_r8* &
2145 & ((tl_vbar(i,j ,krhs)+ &
2147 & tl_vbar_stokes(i,j )+ &
2148 & tl_vbar_stokes(i,j+1)+ &
2150 & tl_vbar(i,j+1,krhs)- &
2151 & cff*(tl_grad(i,j)+tl_grad(i,j+1)))* &
2152 & (dvom(i,j)+dvom(i,j+1)- &
2153 & cff*(dgrad(i,j)+dgrad(i,j+1)))+ &
2154 & (vbar(i,j ,krhs)+ &
2156 & vbar_stokes(i,j )+ &
2157 & vbar_stokes(i,j+1)+ &
2159 & vbar(i,j+1,krhs)- &
2160 & cff*(grad(i,j)+grad(i,j+1)))* &
2161 & (tl_dvom(i,j)+tl_dvom(i,j+1)- &
2162 & cff*(tl_dgrad(i,j)+tl_dgrad(i,j+1))))- &
2174 tl_cff1=tl_ufx(i,j)-tl_ufx(i-1,j)
2177 tl_cff2=tl_ufe(i,j+1)-tl_ufe(i,j)
2180 tl_fac=tl_cff1+tl_cff2
2183 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)-tl_fac
2184# if defined DIAGNOSTICS_UV
2195 tl_cff1=tl_vfx(i+1,j)-tl_vfx(i,j)
2198 tl_cff2=tl_vfe(i,j)-tl_vfe(i,j-1)
2201 tl_fac=tl_cff1+tl_cff2
2204 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)-tl_fac
2205# if defined DIAGNOSTICS_UV
2221 cff=0.5_r8*drhs(i,j)*fomn(i,j)
2222 tl_cff=0.5_r8*tl_drhs(i,j)*fomn(i,j)
2223 ufx(i,j)=cff*(vbar(i,j ,krhs)+ &
2225 & vbar_stokes(i,j )+ &
2226 & vbar_stokes(i,j+1)+ &
2229 tl_ufx(i,j)=tl_cff*(vbar(i,j ,krhs)+ &
2231 & vbar_stokes(i,j )+ &
2232 & vbar_stokes(i,j+1)+ &
2234 & vbar(i,j+1,krhs))+ &
2235 & cff*(tl_vbar(i,j ,krhs)+ &
2237 & tl_vbar_stokes(i,j )+ &
2238 & tl_vbar_stokes(i,j+1)+ &
2240 & tl_vbar(i,j+1,krhs))- &
2244 vfe(i,j)=cff*(ubar(i ,j,krhs)+ &
2246 & ubar_stokes(i ,j)+ &
2247 & ubar_stokes(i+1,j)+ &
2250 tl_vfe(i,j)=tl_cff*(ubar(i ,j,krhs)+ &
2252 & ubar_stokes(i ,j)+ &
2253 & ubar_stokes(i+1,j)+ &
2255 & ubar(i+1,j,krhs))+ &
2256 & cff*(tl_ubar(i ,j,krhs)+ &
2258 & tl_ubar_stokes(i ,j)+ &
2259 & tl_ubar_stokes(i+1,j)+ &
2261 & tl_ubar(i+1,j,krhs))- &
2271 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
2274 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_fac1
2275# if defined DIAGNOSTICS_UV
2284 tl_fac1=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
2287 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)-tl_fac1
2288# if defined DIAGNOSTICS_UV
2294#if defined CURVGRID && defined UV_ADV
2302 cff1=0.5_r8*(vbar(i,j ,krhs)+ &
2304 & vbar_stokes(i,j )+ &
2305 & vbar_stokes(i,j+1)+ &
2308 tl_cff1=0.5_r8*(tl_vbar(i,j ,krhs)+ &
2310 & tl_vbar_stokes(i,j )+ &
2311 & tl_vbar_stokes(i,j+1)+ &
2313 & tl_vbar(i,j+1,krhs))
2314 cff2=0.5_r8*(ubar(i ,j,krhs)+ &
2316 & ubar_stokes(i ,j)+ &
2317 & ubar_stokes(i+1,j)+ &
2320 tl_cff2=0.5_r8*(tl_ubar(i ,j,krhs)+ &
2322 & tl_ubar_stokes(i ,j)+ &
2323 & tl_ubar_stokes(i+1,j)+ &
2325 & tl_ubar(i+1,j,krhs))
2327 tl_cff3=tl_cff1*dndx(i,j)
2329 tl_cff4=tl_cff2*dmde(i,j)
2330 cff=drhs(i,j)*(cff3-cff4)
2331 tl_cff=tl_drhs(i,j)*(cff3-cff4)+ &
2332 & drhs(i,j)*(tl_cff3-tl_cff4)- &
2338 tl_ufx(i,j)=tl_cff*cff1+cff*tl_cff1- &
2344 tl_vfe(i,j)=tl_cff*cff2+cff*tl_cff2- &
2348# if defined DIAGNOSTICS_UV
2359 tl_fac1=0.5_r8*(tl_ufx(i,j)+tl_ufx(i-1,j))
2362 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_fac1
2363# if defined DIAGNOSTICS_UV
2375 tl_fac1=0.5_r8*(tl_vfe(i,j)+tl_vfe(i,j-1))
2378 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)-tl_fac1
2379# if defined DIAGNOSTICS_UV
2388#if defined UV_VIS2 || defined UV_VIS4 || defined RPM_RELAXATION
2401 drhs_p(i,j)=0.25_r8*(drhs(i,j )+drhs(i-1,j )+ &
2402 & drhs(i,j-1)+drhs(i-1,j-1))
2403 tl_drhs_p(i,j)=0.25_r8*(tl_drhs(i,j )+tl_drhs(i-1,j )+ &
2404 & tl_drhs(i,j-1)+tl_drhs(i-1,j-1))
2419 cff=visc2_r(i,j)*drhs(i,j)*0.5_r8* &
2421 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,krhs)- &
2422 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,krhs))- &
2424 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,krhs)- &
2425 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,krhs)))
2426 tl_cff=visc2_r(i,j)*0.5_r8* &
2429 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,krhs)- &
2430 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,krhs))- &
2432 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,krhs)- &
2433 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,krhs)))+ &
2436 & ((pn(i ,j)+pn(i+1,j))*tl_ubar(i+1,j,krhs)- &
2437 & (pn(i-1,j)+pn(i ,j))*tl_ubar(i ,j,krhs))- &
2439 & ((pm(i,j )+pm(i,j+1))*tl_vbar(i,j+1,krhs)- &
2440 & (pm(i,j-1)+pm(i,j ))*tl_vbar(i,j ,krhs))))- &
2446 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*tl_cff
2449 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*tl_cff
2454 cff=visc2_p(i,j)*drhs_p(i,j)*0.5_r8* &
2456 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,krhs)- &
2457 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,krhs))+ &
2459 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,krhs)- &
2460 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,krhs)))
2461 tl_cff=visc2_p(i,j)*0.5_r8* &
2462 & (tl_drhs_p(i,j)* &
2464 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,krhs)- &
2465 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,krhs))+ &
2467 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,krhs)- &
2468 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,krhs)))+ &
2471 & ((pn(i ,j-1)+pn(i ,j))*tl_vbar(i ,j,krhs)- &
2472 & (pn(i-1,j-1)+pn(i-1,j))*tl_vbar(i-1,j,krhs))+ &
2474 & ((pm(i-1,j )+pm(i,j ))*tl_ubar(i,j ,krhs)- &
2475 & (pm(i-1,j-1)+pm(i,j-1))*tl_ubar(i,j-1,krhs))))- &
2482 tl_cff=tl_cff*pmask(i,j)
2486 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*tl_cff
2489 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*tl_cff
2499 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2500 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2503 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2504 & (tl_ufe(i,j+1)-tl_ufe(i ,j))
2507 tl_fac=tl_cff1+tl_cff2
2510 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_fac
2511# if defined DIAGNOSTICS_UV
2522 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2523 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2526 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2527 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2530 tl_fac=tl_cff1-tl_cff2
2533 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+tl_fac
2534# if defined DIAGNOSTICS_UV
2558 cff=visc4_r(i,j)*0.5_r8* &
2560 & ((pn(i ,j)+pn(i+1,j))*ubar(i+1,j,krhs)- &
2561 & (pn(i-1,j)+pn(i ,j))*ubar(i ,j,krhs))- &
2563 & ((pm(i,j )+pm(i,j+1))*vbar(i,j+1,krhs)- &
2564 & (pm(i,j-1)+pm(i,j ))*vbar(i,j ,krhs)))
2565 tl_cff=visc4_r(i,j)*0.5_r8* &
2567 & ((pn(i ,j)+pn(i+1,j))*tl_ubar(i+1,j,krhs)- &
2568 & (pn(i-1,j)+pn(i ,j))*tl_ubar(i ,j,krhs))- &
2570 & ((pm(i,j )+pm(i,j+1))*tl_vbar(i,j+1,krhs)- &
2571 & (pm(i,j-1)+pm(i,j ))*tl_vbar(i,j ,krhs)))
2572 ufx(i,j)=on_r(i,j)*on_r(i,j)*cff
2573 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*tl_cff
2574 vfe(i,j)=om_r(i,j)*om_r(i,j)*cff
2575 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*tl_cff
2580 cff=visc4_p(i,j)*0.5_r8* &
2582 & ((pn(i ,j-1)+pn(i ,j))*vbar(i ,j,krhs)- &
2583 & (pn(i-1,j-1)+pn(i-1,j))*vbar(i-1,j,krhs))+ &
2585 & ((pm(i-1,j )+pm(i,j ))*ubar(i,j ,krhs)- &
2586 & (pm(i-1,j-1)+pm(i,j-1))*ubar(i,j-1,krhs)))
2587 tl_cff=visc4_p(i,j)*0.5_r8* &
2589 & ((pn(i ,j-1)+pn(i ,j))*tl_vbar(i ,j,krhs)- &
2590 & (pn(i-1,j-1)+pn(i-1,j))*tl_vbar(i-1,j,krhs))+ &
2592 & ((pm(i-1,j )+pm(i,j ))*tl_ubar(i,j ,krhs)- &
2593 & (pm(i-1,j-1)+pm(i,j-1))*tl_ubar(i,j-1,krhs)))
2596 tl_cff=tl_cff*pmask(i,j)
2598 ufe(i,j)=om_p(i,j)*om_p(i,j)*cff
2599 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*tl_cff
2600 vfx(i,j)=on_p(i,j)*on_p(i,j)*cff
2601 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*tl_cff
2609 lapu(i,j)=0.125_r8* &
2610 & (pm(i-1,j)+pm(i,j))*(pn(i-1,j)+pn(i,j))* &
2611 & ((pn(i-1,j)+pn(i,j))* &
2612 & (ufx(i,j )-ufx(i-1,j))+ &
2613 & (pm(i-1,j)+pm(i,j))* &
2614 & (ufe(i,j+1)-ufe(i ,j)))
2615 tl_lapu(i,j)=0.125_r8* &
2616 & (pm(i-1,j)+pm(i,j))*(pn(i-1,j)+pn(i,j))* &
2617 & ((pn(i-1,j)+pn(i,j))* &
2618 & (tl_ufx(i,j )-tl_ufx(i-1,j))+ &
2619 & (pm(i-1,j)+pm(i,j))* &
2620 & (tl_ufe(i,j+1)-tl_ufe(i ,j)))
2625 lapv(i,j)=0.125_r8* &
2626 & (pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))* &
2627 & ((pn(i,j-1)+pn(i,j))* &
2628 & (vfx(i+1,j)-vfx(i,j ))- &
2629 & (pm(i,j-1)+pm(i,j))* &
2630 & (vfe(i ,j)-vfe(i,j-1)))
2631 tl_lapv(i,j)=0.125_r8* &
2632 & (pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))* &
2633 & ((pn(i,j-1)+pn(i,j))* &
2634 & (tl_vfx(i+1,j)-tl_vfx(i,j ))- &
2635 & (pm(i,j-1)+pm(i,j))* &
2636 & (tl_vfe(i ,j)-tl_vfe(i,j-1)))
2645 IF (
domain(ng)%Western_Edge(tile))
THEN
2648 lapu(istru-1,j)=0.0_r8
2649 tl_lapu(istru-1,j)=0.0_r8
2653 lapu(istru-1,j)=lapu(istru,j)
2654 tl_lapu(istru-1,j)=tl_lapu(istru,j)
2659 lapv(istr-1,j)=
gamma2(ng)*lapv(istr,j)
2660 tl_lapv(istr-1,j)=
gamma2(ng)*tl_lapv(istr,j)
2664 lapv(istr-1,j)=0.0_r8
2665 tl_lapv(istr-1,j)=0.0_r8
2672 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2675 lapu(iend+1,j)=0.0_r8
2676 tl_lapu(iend+1,j)=0.0_r8
2680 lapu(iend+1,j)=lapu(iend,j)
2681 tl_lapu(iend+1,j)=tl_lapu(iend,j)
2686 lapv(iend+1,j)=
gamma2(ng)*lapv(iend,j)
2687 tl_lapv(iend+1,j)=
gamma2(ng)*tl_lapv(iend,j)
2691 lapv(iend+1,j)=0.0_r8
2692 tl_lapv(iend+1,j)=0.0_r8
2699 IF (
domain(ng)%Southern_Edge(tile))
THEN
2702 lapu(i,jstr-1)=
gamma2(ng)*lapu(i,jstr)
2703 tl_lapu(i,jstr-1)=
gamma2(ng)*tl_lapu(i,jstr)
2707 lapu(i,jstr-1)=0.0_r8
2708 tl_lapu(i,jstr-1)=0.0_r8
2713 lapv(i,jstrv-1)=0.0_r8
2714 tl_lapv(i,jstrv-1)=0.0_r8
2718 lapv(i,jstrv-1)=lapv(i,jstrv)
2719 tl_lapv(i,jstrv-1)=tl_lapv(i,jstrv)
2726 IF (
domain(ng)%Northern_Edge(tile))
THEN
2729 lapu(i,jend+1)=
gamma2(ng)*lapu(i,jend)
2730 tl_lapu(i,jend+1)=
gamma2(ng)*tl_lapu(i,jend)
2734 lapu(i,jend+1)=0.0_r8
2735 tl_lapu(i,jend+1)=0.0_r8
2740 lapv(i,jend+1)=0.0_r8
2741 tl_lapv(i,jend+1)=0.0_r8
2745 lapv(i,jend+1)=lapv(i,jend)
2746 tl_lapv(i,jend+1)=tl_lapv(i,jend)
2754 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
2755 lapu(istr ,jstr-1)=0.5_r8*(lapu(istr+1,jstr-1)+ &
2756 & lapu(istr ,jstr ))
2757 tl_lapu(istr ,jstr-1)=0.5_r8*(tl_lapu(istr+1,jstr-1)+ &
2758 & tl_lapu(istr ,jstr ))
2759 lapv(istr-1,jstr )=0.5_r8*(lapv(istr-1,jstr+1)+ &
2760 & lapv(istr ,jstr ))
2761 tl_lapv(istr-1,jstr )=0.5_r8*(tl_lapv(istr-1,jstr+1)+ &
2762 & tl_lapv(istr ,jstr ))
2768 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
2769 lapu(iend+1,jstr-1)=0.5_r8*(lapu(iend ,jstr-1)+ &
2770 & lapu(iend+1,jstr ))
2771 tl_lapu(iend+1,jstr-1)=0.5_r8*(tl_lapu(iend ,jstr-1)+ &
2772 & tl_lapu(iend+1,jstr ))
2773 lapv(iend+1,jstr )=0.5_r8*(lapv(iend ,jstr )+ &
2774 & lapv(iend+1,jstr+1))
2775 tl_lapv(iend+1,jstr )=0.5_r8*(tl_lapv(iend ,jstr )+ &
2776 & tl_lapv(iend+1,jstr+1))
2782 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
2783 lapu(istr ,jend+1)=0.5_r8*(lapu(istr+1,jend+1)+ &
2784 & lapu(istr ,jend ))
2785 tl_lapu(istr ,jend+1)=0.5_r8*(tl_lapu(istr+1,jend+1)+ &
2786 & tl_lapu(istr ,jend ))
2787 lapv(istr-1,jend+1)=0.5_r8*(lapv(istr ,jend+1)+ &
2788 & lapv(istr-1,jend ))
2789 tl_lapv(istr-1,jend+1)=0.5_r8*(tl_lapv(istr ,jend+1)+ &
2790 & tl_lapv(istr-1,jend ))
2796 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
2797 lapu(iend+1,jend+1)=0.5_r8*(lapu(iend ,jend+1)+ &
2798 & lapu(iend+1,jend ))
2799 tl_lapu(iend+1,jend+1)=0.5_r8*(tl_lapu(iend ,jend+1)+ &
2800 & tl_lapu(iend+1,jend ))
2801 lapv(iend+1,jend+1)=0.5_r8*(lapv(iend ,jend+1)+ &
2802 & lapv(iend+1,jend ))
2803 tl_lapv(iend+1,jend+1)=0.5_r8*(tl_lapv(iend ,jend+1)+ &
2804 & tl_lapv(iend+1,jend ))
2813 cff=visc4_r(i,j)*drhs(i,j)*0.5_r8* &
2815 & ((pn(i ,j)+pn(i+1,j))*lapu(i+1,j)- &
2816 & (pn(i-1,j)+pn(i ,j))*lapu(i ,j))- &
2818 & ((pm(i,j )+pm(i,j+1))*lapv(i,j+1)- &
2819 & (pm(i,j-1)+pm(i,j ))*lapv(i,j )))
2820 tl_cff=visc4_r(i,j)*0.5_r8* &
2823 & ((pn(i ,j)+pn(i+1,j))*lapu(i+1,j)- &
2824 & (pn(i-1,j)+pn(i ,j))*lapu(i ,j))- &
2826 & ((pm(i,j )+pm(i,j+1))*lapv(i,j+1)- &
2827 & (pm(i,j-1)+pm(i,j ))*lapv(i,j )))+ &
2830 & ((pn(i ,j)+pn(i+1,j))*tl_lapu(i+1,j)- &
2831 & (pn(i-1,j)+pn(i ,j))*tl_lapu(i ,j))- &
2833 & ((pm(i,j )+pm(i,j+1))*tl_lapv(i,j+1)- &
2834 & (pm(i,j-1)+pm(i,j ))*tl_lapv(i,j ))))- &
2840 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*tl_cff
2843 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*tl_cff
2848 cff=visc4_p(i,j)*drhs_p(i,j)*0.5_r8* &
2850 & ((pn(i ,j-1)+pn(i ,j))*lapv(i ,j)- &
2851 & (pn(i-1,j-1)+pn(i-1,j))*lapv(i-1,j))+ &
2853 & ((pm(i-1,j )+pm(i,j ))*lapu(i,j )- &
2854 & (pm(i-1,j-1)+pm(i,j-1))*lapu(i,j-1)))
2855 tl_cff=visc4_p(i,j)*0.5_r8* &
2856 & (tl_drhs_p(i,j)* &
2858 & ((pn(i ,j-1)+pn(i ,j))*lapv(i ,j)- &
2859 & (pn(i-1,j-1)+pn(i-1,j))*lapv(i-1,j))+ &
2861 & ((pm(i-1,j )+pm(i,j ))*lapu(i,j )- &
2862 & (pm(i-1,j-1)+pm(i,j-1))*lapu(i,j-1)))+ &
2865 & ((pn(i ,j-1)+pn(i ,j))*tl_lapv(i ,j)- &
2866 & (pn(i-1,j-1)+pn(i-1,j))*tl_lapv(i-1,j))+ &
2868 & ((pm(i-1,j )+pm(i,j ))*tl_lapu(i,j )- &
2869 & (pm(i-1,j-1)+pm(i,j-1))*tl_lapu(i,j-1))))- &
2876 tl_cff=tl_cff*pmask(i,j)
2880 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*tl_cff
2883 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*tl_cff
2893 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2894 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2897 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2898 & (ufe(i,j+1)-ufe(i ,j))
2901 tl_fac=tl_cff1+tl_cff2
2904 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_fac
2905# if defined DIAGNOSTICS_UV
2916 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2917 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2920 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2921 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2924 tl_fac=tl_cff1-tl_cff2
2927 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+tl_fac
2928# if defined DIAGNOSTICS_UV
2937#ifdef RPM_RELAXATION
2951 tl_ufx(i,j)=
tl_m2diff(ng)*pmon_r(i,j)*drhs(i,j)* &
2952 & (tl_ubar(i+1,j,krhs)-ubar(i+1,j,krhs)- &
2953 & tl_ubar(i ,j,krhs)+ubar(i ,j,krhs))
2958 tl_ufe(i,j)=
tl_m2diff(ng)*pnom_p(i,j)*drhs_p(i,j)* &
2959 & (tl_ubar(i,j ,krhs)-ubar(i,j ,krhs)- &
2960 & tl_ubar(i,j-1,krhs)+ubar(i,j-1,krhs))
2962 tl_ufe(i,j)=tl_ufe(i,j)*pmask(i,j)
2968 tl_vfx(i,j)=
tl_m2diff(ng)*pmon_p(i,j)*drhs_p(i,j)* &
2969 & (tl_vbar(i ,j,krhs)-vbar(i ,j,krhs)- &
2970 & tl_vbar(i-1,j,krhs)+vbar(i-1,j,krhs))
2972 tl_vfx(i,j)=tl_vfx(i,j)*pmask(i,j)
2978 tl_vfe(i,j)=
tl_m2diff(ng)*pnom_r(i,j)*drhs(i,j)* &
2979 & (tl_vbar(i,j+1,krhs)-vbar(i,j+1,krhs)- &
2980 & tl_vbar(i,j ,krhs)+vbar(i,j ,krhs))
2988 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+ &
2989 & tl_ufx(i,j)-tl_ufx(i-1,j)+ &
2990 & tl_ufe(i,j+1)-tl_ufe(i,j)
2995 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+ &
2996 & tl_vfx(i+1,j)-tl_vfx(i,j)+ &
2997 & tl_vfe(i,j)-tl_vfe(i,j-1)
3003#if defined WEC_MELLOR && \
3014 tl_cff1=tl_rustr2d(i,j)*om_u(i,j)*on_u(i,j)
3017 tl_cff2=tl_rulag2d(i,j)
3021 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)-tl_cff1-tl_cff2
3023# ifdef DIAGNOSTICS_UV
3032 tl_cff1=tl_rvstr2d(i,j)*om_v(i,j)*on_v(i,j)
3035 tl_cff2=tl_rvlag2d(i,j)
3039 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)-tl_cff1-tl_cff2
3041# ifdef DIAGNOSTICS_UV
3057 tl_fac=tl_bustr(i,j)*om_u(i,j)*on_u(i,j)
3060 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)-tl_fac
3061# ifdef DIAGNOSTICS_UV
3070 tl_fac=tl_bvstr(i,j)*om_v(i,j)*on_v(i,j)
3073 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)-tl_fac
3074# ifdef DIAGNOSTICS_UV
3080# ifdef DIAGNOSTICS_UV
3104 cff=0.25_r8*(
clima(ng)%M2nudgcof(i-1,j)+ &
3105 &
clima(ng)%M2nudgcof(i ,j))* &
3106 & om_u(i,j)*on_u(i,j)
3112 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+ &
3113 & cff*((drhs(i-1,j)+drhs(i,j))* &
3114 & (-tl_ubar(i,j,krhs))+ &
3115 & (tl_drhs(i-1,j)+tl_drhs(i,j))* &
3116 & (
clima(ng)%ubarclm(i,j)- &
3117 & ubar(i,j,krhs)))+ &
3119 & cff*(drhs(i-1,j)+drhs(i,j))* &
3126 cff=0.25_r8*(
clima(ng)%M2nudgcof(i,j-1)+ &
3127 &
clima(ng)%M2nudgcof(i,j ))* &
3128 & om_v(i,j)*on_v(i,j)
3134 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+ &
3135 & cff*((drhs(i,j-1)+drhs(i,j))* &
3136 & (-tl_vbar(i,j,krhs))+ &
3137 & (tl_drhs(i,j-1)+tl_drhs(i,j))* &
3138 & (
clima(ng)%vbarclm(i,j)- &
3139 & vbar(i,j,krhs)))+ &
3141 & cff*(drhs(i,j-1)+drhs(i,j))* &
3173 tl_rufrc(i,j)=tl_rufrc(i,j)-tl_rhs_ubar(i,j)
3176 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_rufrc(i,j)
3179 tl_ru(i,j,0,nstp)=tl_rufrc(i,j)
3180# ifdef DIAGNOSTICS_UV
3199 tl_rvfrc(i,j)=tl_rvfrc(i,j)-tl_rhs_vbar(i,j)
3202 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+tl_rvfrc(i,j)
3205 tl_rv(i,j,0,nstp)=tl_rvfrc(i,j)
3206# ifdef DIAGNOSTICS_UV
3226 tl_rufrc(i,j)=tl_rufrc(i,j)-tl_rhs_ubar(i,j)
3230 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+ &
3231 & 1.5_r8*tl_rufrc(i,j)- &
3232 & 0.5_r8*tl_ru(i,j,0,nnew)
3235 tl_ru(i,j,0,nstp)=tl_rufrc(i,j)
3236# ifdef DIAGNOSTICS_UV
3258 tl_rvfrc(i,j)=tl_rvfrc(i,j)-tl_rhs_vbar(i,j)
3262 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+ &
3263 & 1.5_r8*tl_rvfrc(i,j)- &
3264 & 0.5_r8*tl_rv(i,j,0,nnew)
3267 tl_rv(i,j,0,nstp)=tl_rvfrc(i,j)
3268# ifdef DIAGNOSTICS_UV
3287 cff1=23.0_r8/12.0_r8
3288 cff2=16.0_r8/12.0_r8
3289 cff3= 5.0_r8/12.0_r8
3294 tl_rufrc(i,j)=tl_rufrc(i,j)-tl_rhs_ubar(i,j)
3300 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+ &
3301 & cff1*tl_rufrc(i,j)- &
3302 & cff2*tl_ru(i,j,0,nnew)+ &
3303 & cff3*tl_ru(i,j,0,nstp)
3306 tl_ru(i,j,0,nstp)=tl_rufrc(i,j)
3307# ifdef DIAGNOSTICS_UV
3332 tl_rvfrc(i,j)=tl_rvfrc(i,j)-tl_rhs_vbar(i,j)
3338 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+ &
3339 & cff1*tl_rvfrc(i,j)- &
3340 & cff2*tl_rv(i,j,0,nnew)+ &
3341 & cff3*tl_rv(i,j,0,nstp)
3344 tl_rv(i,j,0,nstp)=tl_rvfrc(i,j)
3345# ifdef DIAGNOSTICS_UV
3372 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+tl_rufrc(i,j)
3373# ifdef DIAGNOSTICS_UV
3387 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+tl_rvfrc(i,j)
3388# ifdef DIAGNOSTICS_UV
3409# ifdef DIAGNOSTICS_UV
3418# ifdef DIAGNOSTICS_UV
3429 fac=tl_sustr(i,j)*om_u(i,j)*on_u(i,j)
3430 tl_rhs_ubar(i,j)=tl_rhs_ubar(i,j)+fac
3437 fac=tl_svstr(i,j)*om_v(i,j)*on_v(i,j)
3438 tl_rhs_vbar(i,j)=tl_rhs_vbar(i,j)+fac
3452 dstp(i,j)=zeta(i,j,kstp)+h(i,j)
3453 tl_dstp(i,j)=tl_zeta(i,j,kstp)+tl_h(i,j)
3460#ifdef WET_DRY_NOT_YET
3465 IF (first_2d_step)
THEN
3467#ifdef WET_DRY_NOT_YET
3472 cff=(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
3473 fac=1.0_r8/(dnew(i,j)+dnew(i-1,j))
3474 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i-1,j))+ &
3482 tl_ubar(i,j,knew)=(tl_ubar(i,j,kstp)* &
3483 & (dstp(i,j)+dstp(i-1,j))+ &
3485 & (tl_dstp(i,j)+tl_dstp(i-1,j))+ &
3486 & cff*cff1*tl_rhs_ubar(i,j))*fac+ &
3487 & (ubar(i,j,kstp)* &
3488 & (dstp(i,j)+dstp(i-1,j))+ &
3489 & cff*cff1*rhs_ubar(i,j))*tl_fac- &
3491 & (2.0_r8*ubar(i,j,kstp)* &
3492 & (dstp(i,j)+dstp(i-1,j))+ &
3493 & cff*cff1*rhs_ubar(i,j))*fac
3498 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
3500#ifdef WET_DRY_NOT_YET
3513 tl_rhs_ubar(i,j)=(tl_ubar(i,j,knew)* &
3514 & (dnew(i,j)+dnew(i-1,j))+ &
3516 & (tl_dnew(i,j)+tl_dnew(i-1,j))- &
3517 & tl_ubar(i,j,kstp)* &
3518 & (dstp(i,j)+dstp(i-1,j))- &
3520 & (tl_dstp(i,j)+tl_dstp(i-1,j)))*fac1- &
3522 & (ubar(i,j,knew)* &
3523 & (dnew(i,j)+dnew(i-1,j))- &
3525 & (dstp(i,j)+dstp(i-1,j)))*fac1
3532 cff=(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
3533 fac=1.0_r8/(dnew(i,j)+dnew(i,j-1))
3534 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i,j-1))+ &
3542 tl_vbar(i,j,knew)=(tl_vbar(i,j,kstp)* &
3543 & (dstp(i,j)+dstp(i,j-1))+ &
3545 & (tl_dstp(i,j)+tl_dstp(i,j-1))+ &
3546 & cff*cff1*tl_rhs_vbar(i,j))*fac+ &
3547 & (vbar(i,j,kstp)* &
3548 & (dstp(i,j)+dstp(i,j-1))+ &
3549 & cff*cff1*rhs_vbar(i,j))*tl_fac- &
3551 & (2.0_r8*vbar(i,j,kstp)* &
3552 & (dstp(i,j)+dstp(i,j-1))+ &
3553 & cff*cff1*rhs_vbar(i,j))*fac
3558 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
3560#ifdef WET_DRY_NOT_YET
3573 tl_rhs_vbar(i,j)=(tl_vbar(i,j,knew)* &
3574 & (dnew(i,j)+dnew(i,j-1))+ &
3576 & (tl_dnew(i,j)+tl_dnew(i,j-1))- &
3577 & tl_vbar(i,j,kstp)* &
3578 & (dstp(i,j)+dstp(i,j-1))- &
3580 & (tl_dstp(i,j)+tl_dstp(i,j-1)))*fac1- &
3582 & (vbar(i,j,knew)* &
3583 & (dnew(i,j)+dnew(i,j-1))- &
3585 & (dstp(i,j)+dstp(i,j-1)))*fac1
3592#ifdef WET_DRY_NOT_YET
3597 cff=(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
3598 fac=1.0_r8/(dnew(i,j)+dnew(i-1,j))
3599 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i-1,j))+ &
3607 tl_ubar(i,j,knew)=(tl_ubar(i,j,kstp)* &
3608 & (dstp(i,j)+dstp(i-1,j))+ &
3610 & (tl_dstp(i,j)+tl_dstp(i-1,j))+ &
3611 & cff*cff1*tl_rhs_ubar(i,j))*fac+ &
3612 & (ubar(i,j,kstp)* &
3613 & (dstp(i,j)+dstp(i-1,j))+ &
3614 & cff*cff1*rhs_ubar(i,j))*tl_fac- &
3616 & (2.0_r8*ubar(i,j,kstp)* &
3617 & (dstp(i,j)+dstp(i-1,j))+ &
3618 & cff*cff1*rhs_ubar(i,j))*fac
3623 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
3625#ifdef WET_DRY_NOT_YET
3638 tl_rhs_ubar(i,j)=(tl_ubar(i,j,knew)* &
3639 & (dnew(i,j)+dnew(i-1,j))+ &
3641 & (tl_dnew(i,j)+tl_dnew(i-1,j))- &
3642 & tl_ubar(i,j,kstp)* &
3643 & (dstp(i,j)+dstp(i-1,j))- &
3645 & (tl_dstp(i,j)+tl_dstp(i-1,j)))*fac1- &
3647 & (ubar(i,j,knew)* &
3648 & (dnew(i,j)+dnew(i-1,j))- &
3650 & (dstp(i,j)+dstp(i-1,j)))*fac1
3657 cff=(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
3658 fac=1.0_r8/(dnew(i,j)+dnew(i,j-1))
3659 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i,j-1))+ &
3667 tl_vbar(i,j,knew)=(tl_vbar(i,j,kstp)* &
3668 & (dstp(i,j)+dstp(i,j-1))+ &
3670 & (tl_dstp(i,j)+tl_dstp(i,j-1))+ &
3671 & cff*cff1*tl_rhs_vbar(i,j))*fac+ &
3672 & (vbar(i,j,kstp)* &
3673 & (dstp(i,j)+dstp(i,j-1))+ &
3674 & cff*cff1*rhs_vbar(i,j))*tl_fac- &
3676 & (2.0_r8*vbar(i,j,kstp)* &
3677 & (dstp(i,j)+dstp(i,j-1))+ &
3678 & cff*cff1*rhs_vbar(i,j))*fac
3683 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
3685#ifdef WET_DRY_NOT_YET
3698 tl_rhs_vbar(i,j)=(tl_vbar(i,j,knew)* &
3699 & (dnew(i,j)+dnew(i,j-1))+ &
3701 & (tl_dnew(i,j)+tl_dnew(i,j-1))- &
3702 & tl_vbar(i,j,kstp)* &
3703 & (dstp(i,j)+dstp(i,j-1))- &
3705 & (tl_dstp(i,j)+tl_dstp(i,j-1)))*fac1- &
3707 & (vbar(i,j,knew)* &
3708 & (dnew(i,j)+dnew(i,j-1))- &
3710 & (dstp(i,j)+dstp(i,j-1)))*fac1
3715 ELSE IF (corrector_2d_step)
THEN
3716 cff1=0.5_r8*
dtfast(ng)*5.0_r8/12.0_r8
3717 cff2=0.5_r8*
dtfast(ng)*8.0_r8/12.0_r8
3718 cff3=0.5_r8*
dtfast(ng)*1.0_r8/12.0_r8
3719#ifdef WET_DRY_NOT_YET
3724 cff=(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
3725 fac=1.0_r8/(dnew(i,j)+dnew(i-1,j))
3726 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i-1,j))+ &
3736 tl_ubar(i,j,knew)=(tl_ubar(i,j,kstp)* &
3737 & (dstp(i,j)+dstp(i-1,j))+ &
3739 & (tl_dstp(i,j)+tl_dstp(i-1,j))+ &
3740 & cff*(cff1*tl_rhs_ubar(i,j)+ &
3741 & cff2*tl_rubar(i,j,kstp)- &
3742 & cff3*tl_rubar(i,j,ptsk)))*fac+ &
3743 & (ubar(i,j,kstp)* &
3744 & (dstp(i,j)+dstp(i-1,j))+ &
3745 & cff*(cff1*rhs_ubar(i,j)+ &
3746 & cff2*rubar(i,j,kstp)- &
3747 & cff3*rubar(i,j,ptsk)))*tl_fac- &
3749 & (2.0_r8*ubar(i,j,kstp)* &
3750 & (dstp(i,j)+dstp(i-1,j))+ &
3751 & cff*(cff1*rhs_ubar(i,j)+ &
3752 & cff2*rubar(i,j,kstp)- &
3753 & cff3*rubar(i,j,ptsk)))*fac
3758 tl_ubar(i,j,knew)=tl_ubar(i,j,knew)*umask(i,j)
3760#ifdef WET_DRY_NOT_YET
3775 tl_rhs_ubar(i,j)=((tl_ubar(i,j,knew)* &
3776 & (dnew(i,j)+dnew(i-1,j))+ &
3778 & (tl_dnew(i,j)+tl_dnew(i-1,j))- &
3779 & tl_ubar(i,j,kstp)* &
3780 & (dstp(i,j)+dstp(i-1,j))- &
3782 & (tl_dstp(i,j)+tl_dstp(i-1,j)))*fac1- &
3783 & cff2*tl_rubar(i,j,kstp)+ &
3784 & cff3*tl_rubar(i,j,ptsk))*cff4- &
3786 & (ubar(i,j,knew)* &
3787 & (dnew(i,j)+dnew(i-1,j))- &
3789 & (dstp(i,j)+dstp(i-1,j)))*fac1*cff4
3796 cff=(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
3797 fac=1.0_r8/(dnew(i,j)+dnew(i,j-1))
3798 tl_fac=-fac*fac*(tl_dnew(i,j)+tl_dnew(i,j-1))+ &
3808 tl_vbar(i,j,knew)=(tl_vbar(i,j,kstp)* &
3809 & (dstp(i,j)+dstp(i,j-1))+ &
3811 & (tl_dstp(i,j)+tl_dstp(i,j-1))+ &
3812 & cff*(cff1*tl_rhs_vbar(i,j)+ &
3813 & cff2*tl_rvbar(i,j,kstp)- &
3814 & cff3*tl_rvbar(i,j,ptsk)))*fac+ &
3815 & (vbar(i,j,kstp)* &
3816 & (dstp(i,j)+dstp(i,j-1))+ &
3817 & cff*(cff1*rhs_vbar(i,j)+ &
3818 & cff2*rvbar(i,j,kstp)- &
3819 & cff3*rvbar(i,j,ptsk)))*tl_fac- &
3821 & (2.0_r8*vbar(i,j,kstp)* &
3822 & (dstp(i,j)+dstp(i,j-1))+ &
3823 & cff*(cff1*rhs_vbar(i,j)+ &
3824 & cff2*rvbar(i,j,kstp)- &
3825 & cff3*rvbar(i,j,ptsk)))*fac
3830 tl_vbar(i,j,knew)=tl_vbar(i,j,knew)*vmask(i,j)
3832#ifdef WET_DRY_NOT_YET
3847 tl_rhs_vbar(i,j)=((tl_vbar(i,j,knew)* &
3848 & (dnew(i,j)+dnew(i,j-1))+ &
3850 & (tl_dnew(i,j)+tl_dnew(i,j-1))- &
3851 & tl_vbar(i,j,kstp)* &
3852 & (dstp(i,j)+dstp(i,j-1))- &
3854 & (tl_dstp(i,j)+tl_dstp(i,j-1)))*fac1- &
3855 & cff2*tl_rvbar(i,j,kstp)+ &
3856 & cff3*tl_rvbar(i,j,ptsk))*cff4- &
3858 & (vbar(i,j,knew)* &
3859 & (dnew(i,j)+dnew(i,j-1))- &
3861 & (dstp(i,j)+dstp(i,j-1)))*fac1*cff4
3867#ifdef DIAGNOSTICS_UV
4036 tl_rubar(i,j,krhs)=tl_rhs_ubar(i,j)
4043 tl_rvbar(i,j,krhs)=tl_rhs_vbar(i,j)
4046#ifdef DIAGNOSTICS_UV
4073 & lbi, ubi, lbj, ubj, &
4074 & imins, imaxs, jmins, jmaxs, &
4075 & krhs, kstp, knew, &
4076 & ubar, vbar, zeta, &
4077 & tl_ubar, tl_vbar, tl_zeta)
4085 & lbi, ubi, lbj, ubj, &
4086 & imins, imaxs, jmins, jmaxs, &
4087 & krhs, kstp, knew, &
4088 & ubar, vbar, zeta, &
4089 & tl_ubar, tl_vbar, tl_zeta)
4096 & lbi, ubi, lbj, ubj, &
4097 & imins, imaxs, jmins, jmaxs, &
4102 & h, tl_h, om_v, on_u, &
4103 & ubar, vbar, zeta, &
4104 & tl_ubar, tl_vbar, tl_zeta)
4115 IF (((istrr.le.i).and.(i.le.iendr)).and. &
4116 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
4117 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
4118 cff=1.0_r8/(on_u(i,j)* &
4119 & 0.5_r8*(zeta(i-1,j,knew)+h(i-1,j)+ &
4120 & zeta(i ,j,knew)+h(i ,j)))
4121 tl_cff=-cff*cff*on_u(i,j)* &
4122 & 0.5_r8*(tl_zeta(i-1,j,knew)+tl_h(i-1,j)+ &
4123 & tl_zeta(i ,j,knew)+tl_h(i ,j))+ &
4129 tl_ubar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
4130 &
sources(ng)%Qbar(is)*tl_cff- &
4134 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
4135 cff=1.0_r8/(om_v(i,j)* &
4136 & 0.5_r8*(zeta(i,j-1,knew)+h(i,j-1)+ &
4137 & zeta(i,j ,knew)+h(i,j )))
4138 tl_cff=-cff*cff*om_v(i,j)* &
4139 & 0.5_r8*(tl_zeta(i,j-1,knew)+tl_h(i,j-1)+ &
4140 & tl_zeta(i,j ,knew)+tl_h(i,j ))+ &
4146 tl_vbar(i,j,knew)=
sources(ng)%tl_Qbar(is)*cff+ &
4147 &
sources(ng)%Qbar(is)*tl_cff- &
4166 & lbi, ubi, lbj, ubj, &
4167 & tl_ubar(:,:,knew))
4173 & lbi, ubi, lbj, ubj, &
4174 & tl_vbar(:,:,knew))
4186 & lbi, ubi, lbj, ubj, &
4189 & tl_ubar(:,:,knew), &
4190 & tl_vbar(:,:,knew))