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
! リスタートファイルを書き出すタイミング
!
NstepOutput = nint( DelTimeOutput / DelTimeLong )
! 時刻の設定
!
TimeB = RestartTime - DelTimeLong
TimeN = RestartTime
TimeA = RestartTime + DelTimeLong
! 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(DelTimeLong, DelTimeShort) /= 0) then
call MessageNotify( "W", "timeset_init", "mod(DelTimeLong, DelTimeShort) is not zero")
end if
!長い時間ステップが短い時間ステップで割り切れない場合には警告を出す
if(mod(DelTimeOutput, DelTimeLong) /= 0) then
call MessageNotify( "W", "timeset_init", "mod(DelTimeOutput, DelTimeLong) 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/) )
call MessageNotify( "M", "timeset_init", "NstepShort = %d", i=(/NstepShort/) )
call MessageNotify( "M", "timeset_init", "NstepOutput = %d", i=(/NstepOutput/) )
end if
end subroutine timeset_init