| Class | timeset | 
| In: | 
                
                ../src/setup/timeset.f90
                
         | 
引数に与えられた NAMELIST ファイルから, 時刻に関する情報を取得し, 保管するための変数型モジュール
| Subroutine : | 
  subroutine TimesetProgress
    implicit none
    ! 時刻刻み幅を直す 
    !
    DelTimeLong = DelTimeLongSave
    NstepShort  = NstepShortSave
    ! 時刻を進める
    !
    TimeB = TimeN
    TimeN = TimeA
    TimeA = TimeA + DelTimeLong
  end subroutine TimesetProgress
          | Subroutine : | 
NAMELIST から必要な情報を読み取り, 時間関連の変数の設定を行う.
This procedure input/output NAMELIST#timeset_nml .
  subroutine timeset_init()
    !
    !NAMELIST から必要な情報を読み取り, 時間関連の変数の設定を行う. 
    !
    !暗黙の型宣言禁止
    implicit none
    !内部変数
    integer    :: unit
    !---------------------------------------------------------------    
    ! NAMELIST から情報を取得
    !
    NAMELIST /timeset_nml/ DelTimeLong, DelTimeShort, IntegPeriod, Restarttime, DelTimeOutput
    
    call FileOpen(unit, file=namelist_filename, mode='r')
    read(unit, NML=timeset_nml)
    close(unit)
    !--------------------------------------------------------------- 
    ! 終了時刻
    !
    EndTime = RestartTime + IntegPeriod
    
    !---------------------------------------------------------------
    ! 時刻・タイムステップの設定
    !   t=0 の時は, 最初の 1 ループだけオイラー法で解くので細工する. 
    !    
    NstepShort = 2 * nint( DelTimeLong / DelTimeShort )
    DelTimeLongSave = DelTimeLong
    NstepShortSave  = NstepShort
    if (RestartTime /= 0.0d0) then 
      TimeB = RestartTime - DelTimeLong
      TimeN = RestartTime
      TimeA = RestartTime + DelTimeLong      
    else
      TimeB = RestartTime
      TimeN = RestartTime
      TimeA = RestartTime + DelTimeLong
      DelTimeLong = DelTimeLong * 5.0d-1
      NstepShort = NstepShort / 2
    end if
    !---------------------------------------------------------------
    ! 確認
    !
    if (myrank == 0) then
    
      !積分時間が長い時間ステップで割り切れない場合には警告を出す
      if(mod((IntegPeriod - Restarttime), DelTimeLong) /= 0) then 
        call MessageNotify( "W", "timeset_init", "mod((IntegPeriod - Restarttime), DelTimeLong) is not zero")
      end if
      
      !長い時間ステップが短い時間ステップで割り切れない場合には警告を出す
      if(mod(DelTimeLong, DelTimeShort) /= 0) then 
        call MessageNotify( "W", "timeset_init", "mod(DelTimeLong, DelTimeShort) is not zero")
      end if
      
      call MessageNotify( "M", "timeset_init", "DelTimeLong  = %f", d=(/DelTimeLongSave/) )
      call MessageNotify( "M", "timeset_init", "DelTimeShort = %f", d=(/DelTimeShort/) )
      call MessageNotify( "M", "timeset_init", "Restarttime = %f",  d=(/Restarttime/)  )
      call MessageNotify( "M", "timeset_init", "IntegPeriod = %f", d=(/IntegPeriod/) )
      call MessageNotify( "M", "timeset_init", "EndTime     = %f", d=(/EndTime/) )
      call MessageNotify( "M", "timeset_init", "DelTimeOutput= %f", d=(/DelTimeOutput/) )
    end if
   
  end subroutine timeset_init