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