| Class | gridset_3d |
| In: |
setup/gridset_3d.f90
|
引数に与えられた NAMELIST ファイルから, 格子点情報を取得し, 保管するための変数型モジュール
| Subroutine : | |
| cfgfile : | character(*), intent(in) |
NAMELIST から情報を得て, 格子点を計算する
This procedure input/output NAMELIST#gridset .
subroutine gridset_init(cfgfile)
!
!NAMELIST から情報を得て, 格子点を計算する
!
!暗黙の型宣言禁止
implicit none
!モジュール読み込み
!入力変数
character(*), intent(in) :: cfgfile
!内部変数
integer :: i, k, unit
integer, parameter :: kind = 8 !精度を表す
logical :: DebugOn
!-----------------------------------------------------------------
! NAMELIST から情報を取得
!-----------------------------------------------------------------
NAMELIST /gridset/ NX, NY, NZ, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax, Xmg, Ymg, Zmg, SpcNum
call FileOpen(unit, file=cfgfile, mode='r')
read(unit, NML=gridset)
close(unit)
if ( NX < xmg ) then
call MessageNotify( "E", "gridset_init", "NX < Xmg" )
end if
if ( NY < ymg ) then
call MessageNotify( "E", "gridset_init", "NY < Ymg" )
end if
if ( NZ < zmg ) then
call MessageNotify( "E", "gridset_init", "NZ < Zmg" )
end if
!-----------------------------------------------------------------
! 格子点間隔計算
!-----------------------------------------------------------------
call xyz_axis_init(NX, NY, NZ, xmg, ymg, zmg, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)
!-----------------------------------------------------------------
! 物理的に意味のある領域の上限・下限を決める
!-----------------------------------------------------------------;
RegXMin = 1
RegXMax = NX
RegYMin = 1
RegYMax = NY
RegZMin = 1
RegZMax = NZ
!-----------------------------------------------------------------
! デバッグモードか否かで, ファイル出力に用いる変数の大きさを変える
!-----------------------------------------------------------------
DebugOn= Debug()
if (DebugOn) then
FileNX = size(p_X, 1)
FileNY = size(q_Y, 1)
FileNZ = size(r_Z, 1)
FileXMin = DimXMin
FileXMax = DimXMax
FileYmin = DimYMin
FileYMax = DimYMax
FileZMin = DimZMin
FileZMax = DimZMax
else
FileNX = NX
FileNY = NY
FileNZ = NZ
FileXMin = RegXMin
FileXMax = RegXMax
FileYMin = RegYMin
FileYMax = RegYMax
FileZMin = RegZMin
FileZMax = RegZMax
end if
!-----------------------------------------------------------------
! 確認
!-----------------------------------------------------------------
call MessageNotify( "M", "gridset_init", "XMin = %f", d=(/XMin/) )
call MessageNotify( "M", "gridset_init", "XMax = %f", d=(/XMax/) )
call MessageNotify( "M", "gridset_init", "YMin = %f", d=(/YMin/) )
call MessageNotify( "M", "gridset_init", "YMax = %f", d=(/YMax/) )
call MessageNotify( "M", "gridset_init", "ZMin = %f", d=(/ZMin/) )
call MessageNotify( "M", "gridset_init", "ZMax = %f", d=(/ZMax/) )
call MessageNotify( "M", "gridset_init", "NX = %d", i=(/NX/) )
call MessageNotify( "M", "gridset_init", "NY = %d", i=(/NY/) )
call MessageNotify( "M", "gridset_init", "NZ = %d", i=(/NZ/) )
call MessageNotify( "M", "gridset_init", "Xmargin = %d", i=(/Xmg/) )
call MessageNotify( "M", "gridset_init", "Ymargin = %d", i=(/Ymg/) )
call MessageNotify( "M", "gridset_init", "Zmargin = %d", i=(/Zmg/) )
call MessageNotify( "M", "gridset_init", "DimXMin = %d", i=(/DimXMin/) )
call MessageNotify( "M", "gridset_init", "DimXMax = %d", i=(/DimXMax/) )
call MessageNotify( "M", "gridset_init", "DimYMin = %d", i=(/DimYMin/) )
call MessageNotify( "M", "gridset_init", "DimYMax = %d", i=(/DimYMax/) )
call MessageNotify( "M", "gridset_init", "DimZMin = %d", i=(/DimZMin/) )
call MessageNotify( "M", "gridset_init", "DimZMax = %d", i=(/DimZMax/) )
end subroutine gridset_init