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
142 &
domain(ng)%Eastern_Edge(tile))
THEN
158 &
domain(ng)%Southern_Edge(tile))
THEN
174 &
domain(ng)%Northern_Edge(tile))
THEN
192 &
domain(ng)%Western_Edge(tile))
THEN
208 &
domain(ng)%Eastern_Edge(tile))
THEN
224 &
domain(ng)%Southern_Edge(tile))
THEN
240 &
domain(ng)%Northern_Edge(tile))
THEN
259 &
domain(ng)%Western_Edge(tile))
THEN
266 & k,
iwest,it1,linp,it)+ &
269 & k,
iwest,it2,linp,it)
276 &
domain(ng)%Eastern_Edge(tile))
THEN
283 & k,
ieast,it1,linp,it)+ &
286 & k,
ieast,it2,linp,it)
293 &
domain(ng)%Southern_Edge(tile))
THEN
300 & k,
isouth,it1,linp,it)+ &
310 &
domain(ng)%Northern_Edge(tile))
THEN
317 & k,
inorth,it1,linp,it)+ &
331 &
domain(ng)%Western_Edge(tile))
THEN
345 &
domain(ng)%Eastern_Edge(tile))
THEN
359 &
domain(ng)%Southern_Edge(tile))
THEN
373 &
domain(ng)%Northern_Edge(tile))
THEN
391 &
domain(ng)%Western_Edge(tile))
THEN
405 &
domain(ng)%Eastern_Edge(tile))
THEN
419 &
domain(ng)%Southern_Edge(tile))
THEN
433 &
domain(ng)%Northern_Edge(tile))
THEN
449 &
domain(ng)%Western_Edge(tile))
THEN
463 &
domain(ng)%Eastern_Edge(tile))
THEN
477 &
domain(ng)%Southern_Edge(tile))
THEN
491 &
domain(ng)%Northern_Edge(tile))
THEN
551 & LBi, UBi, LBj, UBj, LBij, UBij, &
552 & IminS, ImaxS, JminS, JmaxS, &
568 integer,
intent(in) :: ng, tile
569 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
570 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
571 integer,
intent(in) :: Linp
575 real(r8),
intent(in) :: umask(LBi:,LBj:)
576 real(r8),
intent(in) :: vmask(LBi:,LBj:)
578 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
579 real(r8),
intent(in) :: Hz_bry(LBij:,:,:)
580 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
581 real(r8),
intent(in) :: tl_Hz_bry(LBij:,:,:)
586 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
587 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
589 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
590 real(r8),
intent(in) :: Hz_bry(LBij:UBij,N(ng),4)
591 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
592 real(r8),
intent(in) :: tl_Hz_bry(LBij:UBij,N(ng),4)
597 integer :: i, it1, it2, j, k
599 real(r8) :: fac, fac1, fac2
600 real(r8) :: cff1, cff2, cff3, tl_cff1, tl_cff2
602 real(r8),
dimension(0:N(ng)) :: CF
603 real(r8),
dimension(0:N(ng)) :: DC
605 real(r8),
dimension(0:N(ng)) :: tl_CF
606 real(r8),
dimension(0:N(ng)) :: tl_DC
608# include "set_bounds.h"
616 IF (
nbrec(ng).eq.1)
THEN
622# ifdef GENERIC_DSTART
625 it1=max(0,(
iic(ng)-1)/
nobc(ng))+1
627 it2=min(it1+1,
nbrec(ng))
630 fac=1.0_r8/(fac1+fac2)
640 &
domain(ng)%Western_Edge(tile))
THEN
650 dc(k)=0.5_r8*(hz_bry(j,k,
iwest)+ &
652 tl_dc(k)=0.5_r8*(tl_hz_bry(j,k,
iwest)+ &
655 tl_dc(0)=tl_dc(0)+tl_dc(k)
656 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_west(j,k)
658 & tl_dc(k)*
boundary(ng)%u_west(j,k)+ &
662 tl_cff1=-cff1*cff1*tl_dc(0)
663 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
665 tl_cff2=tl_cff2*umask(i,j)
674 &
domain(ng)%Eastern_Edge(tile))
THEN
684 dc(k)=0.5_r8*(hz(i-1,j,k)+ &
686 tl_dc(k)=0.5_r8*(tl_hz(i-1,j,k)+ &
687 & tl_hz_bry(j,k,
ieast))
689 tl_dc(0)=tl_dc(0)+tl_dc(k)
690 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_east(j,k)
692 & tl_dc(k)*
boundary(ng)%u_east(j,k)+ &
696 tl_cff1=-cff1*cff1*tl_dc(0)
697 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
699 tl_cff2=tl_cff2*umask(i,j)
708 &
domain(ng)%Southern_Edge(tile))
THEN
718 dc(k)=0.5_r8*(hz_bry(i-1,k,
isouth)+ &
720 tl_dc(k)=0.5_r8*(tl_hz_bry(i-1,k,
isouth)+ &
723 tl_dc(0)=tl_dc(0)+tl_dc(k)
724 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_south(i,k)
726 & tl_dc(k)*
boundary(ng)%u_south(i,k)+ &
730 tl_cff1=-cff1*cff1*tl_dc(0)
731 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
733 tl_cff2=tl_cff2*umask(i,j)
742 &
domain(ng)%Northern_Edge(tile))
THEN
752 dc(k)=0.5_r8*(hz_bry(i-1,k,
inorth)+ &
754 tl_dc(k)=0.5_r8*(tl_hz_bry(i-1,k,
inorth)+ &
757 tl_dc(0)=tl_dc(0)+tl_dc(k)
758 cf(0)=cf(0)+dc(k)*
boundary(ng)%u_north(i,k)
760 & tl_dc(k)*
boundary(ng)%u_north(i,k)+ &
764 tl_cff1=-cff1*cff1*tl_dc(0)
765 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
767 tl_cff2=tl_cff2*umask(i,j)
779 &
domain(ng)%Western_Edge(tile))
THEN
789 dc(k)=0.5_r8*(hz_bry(j-1,k,
iwest)+ &
790 & hz_bry(j ,k,
iwest))
791 tl_dc(k)=0.5_r8*(tl_hz_bry(j-1,k,
iwest)+ &
792 & tl_hz_bry(j ,k,
iwest))
794 tl_dc(0)=tl_dc(0)+tl_dc(k)
795 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_west(j,k)
797 & tl_dc(k)*
boundary(ng)%v_west(j,k)+ &
801 tl_cff1=-cff1*cff1*tl_dc(0)
802 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
804 tl_cff2=tl_cff2*vmask(i,j)
813 &
domain(ng)%Eastern_Edge(tile))
THEN
823 dc(k)=0.5_r8*(hz_bry(j-1,k,
ieast)+ &
824 & hz_bry(j ,k,
ieast))
825 tl_dc(k)=0.5_r8*(tl_hz_bry(j-1,k,
ieast)+ &
826 & tl_hz_bry(j ,k,
ieast))
828 tl_dc(0)=tl_dc(0)+tl_dc(k)
829 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_east(j,k)
831 & tl_dc(k)*
boundary(ng)%v_east(j,k)+ &
835 tl_cff1=-cff1*cff1*tl_dc(0)
836 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
838 tl_cff2=tl_cff2*vmask(i,j)
847 &
domain(ng)%Southern_Edge(tile))
THEN
857 dc(k)=0.5_r8*(hz_bry(i,k,
isouth)+ &
859 tl_dc(k)=0.5_r8*(tl_hz_bry(i,k,
isouth)+ &
862 tl_dc(0)=tl_dc(0)+tl_dc(k)
863 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_south(i,k)
865 & tl_dc(k)*
boundary(ng)%v_south(i,k)+ &
869 tl_cff1=-cff1*cff1*tl_dc(0)
870 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
872 tl_cff2=tl_cff2*vmask(i,j)
881 &
domain(ng)%Northern_Edge(tile))
THEN
891 dc(k)=0.5_r8*(hz(i,j-1,k)+ &
893 tl_dc(k)=0.5_r8*(tl_hz(i,j-1,k)+ &
896 tl_dc(0)=tl_dc(0)+tl_dc(k)
897 cf(0)=cf(0)+dc(k)*
boundary(ng)%v_north(i,k)
899 & tl_dc(k)*
boundary(ng)%v_north(i,k)+ &
903 tl_cff1=-cff1*cff1*tl_dc(0)
904 tl_cff2=tl_cf(0)*cff1+cf(0)*tl_cff1
906 tl_cff2=tl_cff2*vmask(i,j)