!-------------------------------------------------
!  UWpack Module
!-------------------------------------------------
module uwpack
  use dcl_common
  contains
!-------------------------------------------------
    subroutine DclSetXGrid(x)  !格子点配列の格子点座標を各座標値で設定する．
      real, intent(in), dimension(:) :: x  !x座標をu座標系の値で指定する
      call uwsgxa(x,size(x))
    end subroutine
!-------------------------------------------------
    subroutine DclGetXGrid(x)    !現在設定されている格子点の座標値
      real, intent(out), dimension(:) :: x
      call uwqgxa(x,size(x)) 
    end subroutine
!-------------------------------------------------
    subroutine DclSetYGrid(y)    !格子点配列の格子点座標を各座標値で設定する．
      real, intent(in), dimension(:) :: y  ! y座標をu座標系の値で指定する
      call uwsgya(y, size(y))
    end subroutine
!-------------------------------------------------
    subroutine DclGetYGrid(y)    !現在設定されている格子点の座標値
      real, intent(out), dimension(:) :: y
      call uwqgya(y,size(y))
    end subroutine
!-------------------------------------------------
    subroutine DclSetXEvenGrid(xmin,xmax,n)  !格子点座標を等間隔に設定する．
      real,   intent(in) :: xmin, xmax       !u座標系におけるx座標の最小最大値
      integer,intent(in) :: n                !x方向の格子点数．
      call uwsgxb(xmin,xmax,n) 
    end subroutine
!-------------------------------------------------
    subroutine DclSetYEvenGrid(ymin,ymax,n)  !格子点座標を等間隔に設定する．
      real,    intent(in) :: ymin,ymax       !u座標系におけるy座標の最小最大値
      integer, intent(in) :: n               !y方向の格子点数．
      call uwsgyb(ymin,ymax,n)   
    end subroutine
!-------------------------------------------------
    subroutine DclGetXEvenGrid(xmin,xmax,n)  !格子点座標の最小値,最大値,格子点数の参照
      real,   intent(out) :: xmin,xmax       !u座標系におけるx座標の最小値
      integer,intent(out) :: n               !x方向の格子点数．
      call uwqgxb(xmin,xmax,n)  
    end subroutine
!-------------------------------------------------
    subroutine DclGetYEvenGrid(ymin,ymax,n)  !格子点座標の最小値,最大値,格子点数の参照
      real,      intent(out) :: ymin,ymax    !u座標系におけるy座標の最小値
      integer,   intent(out) :: n            !y方向の格子点数
      call uwqgyb(ymin,ymax,n)       
    end subroutine
!-------------------------------------------------
    function DclGetXGridValue(ix)            !格子点の座標値を返す．
      real                :: DclGetXGridValue
      integer, intent(in) :: ix              !格子点の番号
      DclGetXGridValue = ruwgx(ix)   
    end function
!-------------------------------------------------
    function DclGetYGridValue(iy)            !格子点の座標値を返す．
      real                :: DclGetYGridValue
      integer, intent(in) :: iy              !格子点の番号
      DclGetYGridValue = ruwgy(iy)  
    end function
!-------------------------------------------------
    function DclGetXGridNumber(x)            !座標値に最も近い格子番号を返す．
      integer             :: DclGetXGridNumber
      real,    intent(in) :: x               !座標値
      DclGetXGridNumber = iuwgx(x) 
    end function
!-------------------------------------------------
    function DclGetYGridNumber(y)            !座標値に最も近い格子番号を返す．
      integer             :: DclGetYGridNumber
      real,    intent(in) :: y               !格子点の番号
      DclGetYGridNumber = iuwgy(y) 
    end function
end module
