Class fileset_3d
In: setup/fileset_3d.f90

引数に与えられた NAMELIST ファイルから, I/O ファイル名を取得し, 保管するための変数型モジュール

Methods

Included Modules

dc_types dc_iounit dc_message gtool_history gridset_3d basicset_3d

Public Instance methods

ExpInst
Variable :
ExpInst = "[email protected]" :character(STRING), save, public
: 最終変更者・組織
ExpSrc
Variable :
ExpSrc = "GFD_Dennou_Club deepconv project (arare)" :character(STRING), save, public
: データを作成する手順
ExpTitle
Variable :
ExpTitle = "2D cumulus model deepconv/arare" :character(STRING), save, public
: データの表題
FileNum
Variable :
FileNum = 12 :integer, save, public
: 出力ファイル数
HistoryFile
Variable :
HistoryFile(:) :character(STRING), allocatable, save, public
: 出力ファイル名
HistoryFilePrefix
Variable :
HistoryFilePrefix = "deepconv" :character(STRING), save, public
: ヒストリーファイル接頭詞
InitFile
Variable :
InitFile = "" :character(STRING), save, public
: 初期値ファイル
InitFilePrefix
Variable :
InitFilePrefix = "" :character(STRING), save, public
: 初期値ファイル
RandomFile
Variable :
RandomFile = "rand.dat" :character(STRING), save, public
: 乱数ファイル
Rank
Variable :
Rank :character(3), save
: ノード番号
ReStartFile
Variable :
ReStartFile = "" :character(STRING), save, public
: リスタートファイル
Subroutine :
cfgfile :character(*), intent(in)
cpurank :integer, intent(in), optional

NAMELIST からファイル名に付けるタグを得て, 出力ファイル名を作成する.

This procedure input/output NAMELIST#fileset .

[Source]

  subroutine fileset_init(cfgfile, cpurank)
    !
    !NAMELIST からファイル名に付けるタグを得て, 出力ファイル名を作成する. 
    !
    
    !暗黙の型宣言禁止
    implicit none
    
    !入力変数
    character(*), intent(in)      :: cfgfile
    integer, intent(in), optional :: cpurank    
    integer                       :: unit     !装置番号
    integer                       :: s        !ループ添字
    
    !NAMELIST から情報を取得
    NAMELIST /fileset/ InitFile, HistoryFilePrefix, ReStartFile, RandomFile, ExpTitle, ExpSrc           , ExpInst
    
    call FileOpen(unit, file=cfgfile, mode='r')
    read(unit, NML=fileset)
    close(unit)
    
    !ノード番号を用意
    if (present(cpurank)) then 
      myrank = cpurank
    end if
    call fileset_setnum()    
   
    !ファイル名を格納する配列の割り付け
    !  次元数は
    !    PotTemp, Exner, VelX, VelY, VelZ, MixRt(SpcNum), Km, Kh
    !    VorX, VorY, VorZ
    !    *BasicZ, *Zprof
    !  の合計 12 + SpcNum  

    FileNum = 12 + SpcNum
    allocate(HistoryFile(FileNum))
    allocate(gt_hist(FileNum))

    ! InitFile が空だが InitFilePrefix が空でない場合は, InitFilePrefix 利用
    if (trim(InitFile) == '' .AND. trim(InitFilePrefix) /= '') then 
      InitFile = trim(InitFilePrefix)//"-rank"//trim(rank)//"_restart.nc"
    end if

    HistoryFile(1) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_Exner.nc" 
    HistoryFile(2) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_PotTemp.nc" 
    HistoryFile(3) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VelX.nc" 
    HistoryFile(4) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VelY.nc" 
    HistoryFile(5) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VelZ.nc" 
    HistoryFile(6) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_Km.nc" 
    HistoryFile(7) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_Kh.nc" 
    HistoryFile(8) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_BasicZ.nc" 
    HistoryFile(9) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_Zprof.nc" 
    HistoryFile(10) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VorX.nc" 
    HistoryFile(11) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VorY.nc" 
    HistoryFile(12) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_VorZ.nc" 

    do s = 1, SpcNum
      HistoryFile(12+s) = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_"//trim(SpcWetSymbol(s))//".nc"
    end do

    !リスタートファイル
    if (RestartFile == "") then 
      ReStartFile  = trim(HistoryFilePrefix)//"-rank"//trim(rank)//"_restart.nc" 
    end if
    
    !確認
    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) )
    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) )
    
  end subroutine fileset_init
Subroutine :

[Source]

  subroutine fileset_setnum()

   !ノード番号の文字列化
   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)
   end if
 end subroutine fileset_setnum
gt_hist
Variable :
gt_hist(:) :type(gt_history),allocatable, save, public
: gt_history 型構造体
myrank
Variable :
myrank :integer, save
:
character(80) :InitFile !初期値ファイル
 character(80) :: HistoryFilePrefix !ヒストリーファイル接頭詞
 character(80) :: ReStartFile       !リスタートファイル
 character(80) :: RandomFile        !乱数ファイル
 character(80) :: ExpTitle          !データの表題
 character(80) :: ExpSrc            !データを作成する手順
 character(80) :: ExpInst           !最終変更者・組織
 character(100), allocatable :: HistoryFile(:) !出力ファイル名
 integer                         :: FileNum        !出力ファイル数
 type(gt_history),allocatable    :: gt_hist(:)     !gt_history 型構造体