68 & LBi, UBi, LBj, UBj, LBij, UBij, &
69 & IminS, ImaxS, JminS, JmaxS, &
80 integer,
intent(in) :: ng, tile
81 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
82 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
83 integer,
intent(in) :: Linp
87 integer :: i, it1, it2, j
91 real(r8) :: fac, fac1, fac2
93# include "set_bounds.h"
101 IF (
nbrec(ng).eq.1)
THEN
107# ifdef GENERIC_DSTART
110 it1=max(0,(
iic(ng)-1)/
nobc(ng))+1
112 it2=min(it1+1,
nbrec(ng))
115 fac=1.0_r8/(fac1+fac2)
126 &
domain(ng)%Western_Edge(tile))
THEN
141 &
domain(ng)%Eastern_Edge(tile))
THEN
156 &
domain(ng)%Southern_Edge(tile))
THEN
159 boundary(ng)%tl_u_south(i,k)=fac1* &
171 &
domain(ng)%Northern_Edge(tile))
THEN
174 boundary(ng)%tl_u_north(i,k)=fac1* &
188 &
domain(ng)%Western_Edge(tile))
THEN
203 &
domain(ng)%Eastern_Edge(tile))
THEN
218 &
domain(ng)%Southern_Edge(tile))
THEN
221 boundary(ng)%tl_v_south(i,k)=fac1* &
233 &
domain(ng)%Northern_Edge(tile))
THEN
236 boundary(ng)%tl_v_north(i,k)=fac1* &
251 &
domain(ng)%Western_Edge(tile))
THEN
254 boundary(ng)%tl_t_west(j,k,it)=fac1* &
256 & k,
iwest,it1,linp,it)+ &
259 & k,
iwest,it2,linp,it)
266 &
domain(ng)%Eastern_Edge(tile))
THEN
269 boundary(ng)%tl_t_east(j,k,it)=fac1* &
271 & k,
ieast,it1,linp,it)+ &
274 & k,
ieast,it2,linp,it)
281 &
domain(ng)%Southern_Edge(tile))
THEN
284 boundary(ng)%tl_t_south(i,k,it)=fac1* &
286 & k,
isouth,it1,linp,it)+ &
296 &
domain(ng)%Northern_Edge(tile))
THEN
299 boundary(ng)%tl_t_north(i,k,it)=fac1* &
301 & k,
inorth,it1,linp,it)+ &
315 &
domain(ng)%Western_Edge(tile))
THEN
317 boundary(ng)%tl_zeta_west(j)=fac1* &
328 &
domain(ng)%Eastern_Edge(tile))
THEN
330 boundary(ng)%tl_zeta_east(j)=fac1* &
341 &
domain(ng)%Southern_Edge(tile))
THEN
343 boundary(ng)%tl_zeta_south(i)=fac1* &
354 &
domain(ng)%Northern_Edge(tile))
THEN
356 boundary(ng)%tl_zeta_north(i)=fac1* &
371 &
domain(ng)%Western_Edge(tile))
THEN
373 boundary(ng)%tl_ubar_west(j)=fac1* &
384 &
domain(ng)%Eastern_Edge(tile))
THEN
386 boundary(ng)%tl_ubar_east(j)=fac1* &
397 &
domain(ng)%Southern_Edge(tile))
THEN
399 boundary(ng)%tl_ubar_south(i)=fac1* &
410 &
domain(ng)%Northern_Edge(tile))
THEN
412 boundary(ng)%tl_ubar_north(i)=fac1* &
425 &
domain(ng)%Western_Edge(tile))
THEN
427 boundary(ng)%tl_vbar_west(j)=fac1* &
438 &
domain(ng)%Eastern_Edge(tile))
THEN
440 boundary(ng)%tl_vbar_east(j)=fac1* &
451 &
domain(ng)%Southern_Edge(tile))
THEN
453 boundary(ng)%tl_vbar_south(i)=fac1* &
464 &
domain(ng)%Northern_Edge(tile))
THEN
466 boundary(ng)%tl_vbar_north(i)=fac1* &
523 & LBi, UBi, LBj, UBj, LBij, UBij, &
524 & IminS, ImaxS, JminS, JmaxS, &
540 integer,
intent(in) :: ng, tile
541 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
542 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
543 integer,
intent(in) :: Linp
547 real(r8),
intent(in) :: umask(LBi:,LBj:)
548 real(r8),
intent(in) :: vmask(LBi:,LBj:)
550 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
551 real(r8),
intent(in) :: Hz_bry(LBij:,:,:)
552 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
553 real(r8),
intent(in) :: tl_Hz_bry(LBij:,:,:)
558 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
559 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
561 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
562 real(r8),
intent(in) :: Hz_bry(LBij:UBij,N(ng),4)
563 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
564 real(r8),
intent(in) :: tl_Hz_bry(LBij:UBij,N(ng),4)
569 integer :: i, it1, it2, j, k
571 real(r8) :: fac, fac1, fac2
572 real(r8) :: cff1, cff2, tl_cff1, tl_cff2
574 real(r8),
dimension(0:N(ng)) :: CF
575 real(r8),
dimension(0:N(ng)) :: DC
577 real(r8),
dimension(0:N(ng)) :: tl_CF
578 real(r8),
dimension(0:N(ng)) :: tl_DC
580# include "set_bounds.h"
588 IF (
nbrec(ng).eq.1)
THEN
594# ifdef GENERIC_DSTART
597 it1=max(0,(
iic(ng)-1)/
nobc(ng))+1
599 it2=min(it1+1,
nbrec(ng))
602 fac=1.0_r8/(fac1+fac2)
612 &
domain(ng)%Western_Edge(tile))
THEN
620 dc(k)=0.5_r8*(hz_bry(j,k,
iwest)+ &
622 tl_dc(k)=0.5_r8*(tl_hz_bry(j,k,
iwest)+ &
625 tl_dc(0)=tl_dc(0)+tl_dc(k)
626 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_west(j,k)
628 & tl_dc(k)*
boundary(ng)%u_west(j,k)+ &
632 tl_cff1=-cff1*cff1*tl_dc(0)
633 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
635 tl_cff2=tl_cff2*umask(i,j)
637 boundary(ng)%tl_ubar_west(j)=tl_cff2
643 &
domain(ng)%Eastern_Edge(tile))
THEN
651 dc(k)=0.5_r8*(hz(i-1,j,k)+ &
653 tl_dc(k)=0.5_r8*(tl_hz(i-1,j,k)+ &
654 & tl_hz_bry(j,k,
ieast))
656 tl_dc(0)=tl_dc(0)+tl_dc(k)
657 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_east(j,k)
659 & tl_dc(k)*
boundary(ng)%u_east(j,k)+ &
663 tl_cff1=-cff1*cff1*tl_dc(0)
664 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
666 tl_cff2=tl_cff2*umask(i,j)
668 boundary(ng)%tl_ubar_east(j)=tl_cff2
674 &
domain(ng)%Southern_Edge(tile))
THEN
682 dc(k)=0.5_r8*(hz_bry(i-1,k,
isouth)+ &
684 tl_dc(k)=0.5_r8*(tl_hz_bry(i-1,k,
isouth)+ &
687 tl_dc(0)=tl_dc(0)+tl_dc(k)
688 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_south(i,k)
690 & tl_dc(k)*
boundary(ng)%u_south(i,k)+ &
691 & dc(k)*
boundary(ng)%tl_u_south(i,k)
694 tl_cff1=-cff1*cff1*tl_dc(0)
695 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
697 tl_cff2=tl_cff2*umask(i,j)
699 boundary(ng)%tl_ubar_south(i)=tl_cff2
705 &
domain(ng)%Northern_Edge(tile))
THEN
713 dc(k)=0.5_r8*(hz_bry(i-1,k,
inorth)+ &
715 tl_dc(k)=0.5_r8*(tl_hz_bry(i-1,k,
inorth)+ &
718 tl_dc(0)=tl_dc(0)+tl_dc(k)
719 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_north(i,k)
721 & tl_dc(k)*
boundary(ng)%u_north(i,k)+ &
722 & dc(k)*
boundary(ng)%tl_u_north(i,k)
725 tl_cff1=-cff1*cff1*tl_dc(0)
726 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
728 tl_cff2=tl_cff2*umask(i,j)
730 boundary(ng)%tl_ubar_north(i)=tl_cff2
739 &
domain(ng)%Western_Edge(tile))
THEN
747 dc(k)=0.5_r8*(hz_bry(j-1,k,
iwest)+ &
748 & hz_bry(j ,k,
iwest))
749 tl_dc(k)=0.5_r8*(tl_hz_bry(j-1,k,
iwest)+ &
750 & tl_hz_bry(j ,k,
iwest))
752 tl_dc(0)=tl_dc(0)+tl_dc(k)
753 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_west(j,k)
755 & tl_dc(k)*
boundary(ng)%v_west(j,k)+ &
759 tl_cff1=-cff1*cff1*tl_dc(0)
760 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
762 tl_cff2=tl_cff2*vmask(i,j)
764 boundary(ng)%tl_vbar_west(j)=tl_cff2
770 &
domain(ng)%Eastern_Edge(tile))
THEN
778 dc(k)=0.5_r8*(hz_bry(j-1,k,
ieast)+ &
779 & hz_bry(j ,k,
ieast))
780 tl_dc(k)=0.5_r8*(tl_hz_bry(j-1,k,
ieast)+ &
781 & tl_hz_bry(j ,k,
ieast))
783 tl_dc(0)=tl_dc(0)+tl_dc(k)
784 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_east(j,k)
786 & tl_dc(k)*
boundary(ng)%v_east(j,k)+ &
790 tl_cff1=-cff1*cff1*tl_dc(0)
791 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
793 tl_cff2=tl_cff2*vmask(i,j)
795 boundary(ng)%tl_vbar_east(j)=tl_cff2
801 &
domain(ng)%Southern_Edge(tile))
THEN
809 dc(k)=0.5_r8*(hz_bry(i,k,
isouth)+ &
811 tl_dc(k)=0.5_r8*(tl_hz_bry(i,k,
isouth)+ &
814 tl_dc(0)=tl_dc(0)+tl_dc(k)
815 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_south(i,k)
817 & tl_dc(k)*
boundary(ng)%v_south(i,k)+ &
818 & dc(k)*
boundary(ng)%tl_v_south(i,k)
821 tl_cff1=-cff1*cff1*tl_dc(0)
822 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
824 tl_cff2=tl_cff2*vmask(i,j)
826 boundary(ng)%tl_vbar_south(i)=tl_cff2
832 &
domain(ng)%Northern_Edge(tile))
THEN
840 dc(k)=0.5_r8*(hz(i,j-1,k)+ &
842 tl_dc(k)=0.5_r8*(tl_hz(i,j-1,k)+ &
845 tl_dc(0)=tl_dc(0)+tl_dc(k)
846 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_north(i,k)
848 & tl_dc(k)*
boundary(ng)%v_north(i,k)+ &
849 & dc(k)*
boundary(ng)%tl_v_north(i,k)
852 tl_cff1=-cff1*cff1*tl_dc(0)
853 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
855 tl_cff2=tl_cff2*vmask(i,j)
857 boundary(ng)%tl_vbar_north(i)=tl_cff2