| Class | filesetmpi |
| In: |
setup/filesetmpi.f90
|
引数に与えられた NAMELIST ファイルから, I/O ファイル名を取得し, 保管するための変数型モジュール
| Subroutine : | |
| cfgfile : | character(*), intent(in) |
NAMELIST からファイル名に付けるタグを得て, 出力ファイル名を作成する.
This procedure input/output NAMELIST#fileset .
subroutine fileset_init(cfgfile)
!
!NAMELIST からファイル名に付けるタグを得て, 出力ファイル名を作成する.
!
!モジュール読み込み
use dc_message, only: MessageNotify
!暗黙の型宣言禁止
implicit none
!入力変数
character(*), intent(in) :: cfgfile
integer :: s !ループ添字
!NAMELIST から情報を取得
NAMELIST /fileset/ InitFilePrefix, HistoryFilePrefix, RandomFile, ExpTitle, ExpSrc, ExpInst
open (10, FILE=cfgfile)
read(10, NML=fileset)
close(10)
!確認
call MessageNotify( "M", "fileset_init", "InitFilePrefix=%c", c1=trim(InitFilePrefix))
call MessageNotify( "M", "fileset_init", "HistoryFilePrefix=%c", c1=trim(HistoryFilePrefix) )
call MessageNotify( "M", "fileset_init", "RandomFile=%c", c1=trim(RandomFile) )
call MessageNotify( "M", "fileset_init", "ExpTitle=%c", c1=trim(ExpTitle) )
call MessageNotify( "M", "fileset_init", "ExpSrc=%c", c1=trim(ExpSrc) )
call MessageNotify( "M", "fileset_init", "ExpInst=%c", c1=trim(ExpInst) )
!ファイル名を格納する配列の割り付け
! 次元数は
! PotTemp, Exner, VelX, VelZ, MixRt(SpcNum), Km, Kh
! *BasicZ, *Zprof
! の合計 8 + SpcNum
FileNum = 8 + SpcNum
allocate(HistoryFile(FileNum))
allocate(gt_hist(FileNum))
!ノード番号の文字列化
rank = "000"
if (myrank < 10) then
write(rank(3:3), 100) myrank
100 format(I1)
else if (myrank < 100 ) then
write(rank(2:3), 200) myrank
200 format(I2)
else if (myrank < 1000 ) then
write(rank(1:3), 300) myrank
300 format(I3)
! else
! write(rank, 400) myrank
!400 format(I4)
end if
if (trim(InitFilePrefix) /= '') then
InitFile = trim(InitFilePrefix)//"-node"//trim(rank)//"_restart.nc"
else
InitFile = ''
end if
HistoryFile(1) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_Exner.nc"
HistoryFile(2) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_PotTemp.nc"
HistoryFile(3) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_VelX.nc"
HistoryFile(4) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_VelZ.nc"
HistoryFile(5) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_Km.nc"
HistoryFile(6) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_Kh.nc"
HistoryFile(7) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_BasicZ.nc"
HistoryFile(8) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_Zprof.nc"
do s = 1, SpcNum
HistoryFile(8+s) = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_"//trim(SpcWetSymbol(s))//".nc"
end do
!リスタートファイル
ReStartFile = trim(HistoryFilePrefix)//"-node"//trim(rank)//"_restart.nc"
!確認
call MessageNotify( "M", "fileset_init", "InitFile=%c", c1=trim(InitFile) )
do s = 1, Filenum
call MessageNotify( "M", "fileset_init", "HistoryFile=%c", c1=trim(HistoryFile(s)) )
end do
call MessageNotify( "M", "fileset_init", "ReStartFile=%c", c1=trim(ReStartFile) )
end subroutine fileset_init