!---------------------------------------------------------------------
!     Copyright (C) GFD Dennou Club, 2004. All rights reserved.
!---------------------------------------------------------------------
                                                                 !=begin
!= Module ArareSet
!
!   * Developer: SUGIYAMA Ko-ichiro (sugiyama@gfd-dennou.org)
!   * Version: $Id: $ 
!   * Tag Name: $Name:  $
!   * Change History: 
!
!== Overview 
!
!arare を実行するために必要なパラメタを NAMELIST から取得する. 
!NAMELIST 名は外部から取得する. 
!
!== Error Handling
!
!== Known Bugs
!
!== Note
!
!== Future Plans
!
                                                                 !=end

module arareset

  implicit none

  !--- save 属性
  save
                                                                 !=begin
  !== Public Interface 
  !
  real(8)  :: alpha  !音波減衰項の係数
  real(8)  :: beta   !クランクニコルソン法なら 0.5, 完全陰解放なら 1
  real(8)  :: Cm     !乱流エネルギー診断式の係数 
  real(8)  :: tfil   !アッセリンの時間フィルタの係数
  real(8)  :: NuH    !数値粘性の係数 (水平方向)
  real(8)  :: NuV    !数値粘性の係数 (鉛直方向)
                                                                 !=end

contains
                                                                 !=begin
  !== Procedure Interface 
  !
  !=== Initialize module and acquire NAMELIST
  !
  !NameList ファイルから arare 実行に必要なパラメタを取得する
  !
  subroutine arareset_init(cfgfile)
    !=== Dependency
    use dc_trace, only: BeginSub, EndSub 
    use gridset,  only: DelX, DelZ
    use timeset,  only: DelTimeShort, DelTimeLong
    
    !=== Input 
    character(*), intent(in) :: cfgfile
                                                                 !=end
    !--- 内部変数
    real(8)  ::  AlphaH
    real(8)  ::  AlphaV
                                                                 !=begin
    !=== NAMELIST
    NAMELIST /arareset/ alpha, beta, Cm, tfil, AlphaH, AlphaV
                                                                 !=end

    call BeginSub("arareset_init", &
&                 fmt="%c",       &
&                 c1="Initialize parameters.")

    !--- 変数の取り出し
    open (10, FILE=cfgfile)
    read(10, NML=arareset)
    close(10)

    !--- 音波減衰項の係数を決める
    alpha = alpha * ( DelX ** 2.0d0 ) / DelTimeShort

    !--- 数値粘性の係数を決める
    NuH  = AlphaH * ( DelX ** 2.0d0 ) / DelTimeLong
    NuV  = AlphaV * ( DelZ ** 2.0d0 ) / DelTimeLong

    !==== 確認
!    write(*,*) "alpha", alpha
!    write(*,*) "beta", beta
!    write(*,*) "Cm", Cm
!    write(*,*) "tfil", tfil
!    write(*,*) "NuH", NuH
!    write(*,*) "NuV", NuV

    call EndSub("arareset_init")
    
  end subroutine arareset_init
  
end module arareset
