! 
! Copyright 2008-2009 Shin'ya Murakami <murashin@epa.scitec.kobe-u.ac.jp>
! $Id:$
! 
! 指定した2次元領域内のインデックスが, 領域の境界にあるときの
! 境界情報(領域における境界位置)を保持する型 BoundaryInfo 
! に関するモジュール.
! 

module mod_boundaryinfo
  
  implicit none
  
  private
  ! type
  public :: BoundaryInfo
  ! subroutine, function
  public :: bi_init, bi_is_at_boundary

  type BoundaryInfo
     logical is_at_left
     logical is_at_right
     logical is_at_top
     logical is_at_bottom
  end type BoundaryInfo
  
contains
  
  !
  ! BoundaryInfoの初期化
  !
  subroutine bi_init(a)
    
    type(BoundaryInfo), intent(inout) :: a 
    
    a = BoundaryInfo(.false., .false., .false., .false.)
    
  end subroutine bi_init
  
  ! 
  ! 境界位置にあるか?
  ! 
  logical function bi_is_at_boundary(a) result(retval)
    
    type(BoundaryInfo), intent(in) :: a
    
    retval = (a%is_at_left .or. a%is_at_right &
         &     .or. a%is_at_top .or. a%is_at_bottom)
  end function bi_is_at_boundary
  
end module mod_boundaryinfo
