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