非静力学モデル deepconv/arare.
program ArareInitData
!
!非静力学モデル deepconv/arare.
!
!----- モジュール読み込み ------
!----- 型宣言, 文字列処理 ----
use dc_types, only : STRING
use dc_string, only : StoA
!----- メッセージ出力 -----
use dc_message, only: MessageNotify
! コマンドライン引数解釈
use argset, only : argset_init
!----- 管理モジュール -----
! 化学量計算モジュール
use ChemCalc, only: ChemCalc_init
use chemdata, only: chemdata_init
! MPI の初期化
use mpiset, only : mpii_init, mpii_end, myrank
! 入出力ファイル名管理モジュール
use filesetmpi, only : fileset_init, InitFile
! デバッグ出力管理モジュール
use debugset, only : debugset_init
! 時間管理モジュール
use timeset, only : timeset_init, NstepLong, NstepShort, DelTimeLong, DelTimeShort, NstepDisp
! 格子点管理モジュール
use gridset, only : gridset_init, DimXMin, DimXMax, DimZMin, DimZMax, SpcNum
! 基本場設定モジュール
use basicset, only : basicset_init, xz_DensBasicZ, xza_MixRtBasicZ, xz_PotTempBasicZ, xz_VelSoundBasicZ
! 積算値管理モジュール
use StorePotTemp, only : StorePotTemp_init, StorePotTempClean, StorePotTempCond
use StoreMixRt, only : StoreMixRt_init, StoreMixRtClean, StoreMixRtCond, StoreMixRtFill1, StoreMixRtFill2
use StoreBuoy, only : StoreBuoy_init, StoreBuoyClean
use StoreStab, only : StoreStab_init, StoreStabClean
use StoreMom, only : StoreMom_Init, StoreMomClean
! 湿潤ルーチン設定モジュール
use moistset, only: moistset_init
!----- 下請けモジュール -----
! 数値摩擦計算モジュール
use damping, only : damping_init, DampSponge_xz, DampSponge_pz, DampSponge_xr
! 時間積分フィルターモジュール
use timefilter, only : AsselinFilter_xz, AsselinFilter_xr, AsselinFilter_pz, AsselinFilter_xza
! 境界条件適用モジュール
use boundarympi, only : BoundaryXCyc_xz, BoundaryZSym_xz, BoundaryXCyc_xza, BoundaryZSym_xza, BoundaryXCyc_pz, BoundaryZSym_pz, BoundaryXCyc_xr, BoundaryZAntiSym_xr
! CFL 条件確認モジュール
use cflcheck, only : CFLCheckTimeShort, CFLCheckTimeLongVelX, CFLCheckTimeLongVelZ
! 負の湿潤量の補填計算モジュール
use fillnegative, only : FillNegative_init, xza_FillNegative_xza
!----- 入出力モジュール -----
! リスタートファイル入出力モジュール
use RestartFileIOmpi, only : ReStartFile_Open, ReStartFile_OutPut, ReStartFile_Close, ReStartFile_Get, ReStartFile_Get2
! ヒストリファイル入出力モジュール
use HistoryFileIOmpi, only : HistoryFile_Open, HistoryFile_OutPut, HistoryFile_Close
!----- 力学過程 -----
! 力学過程計算用関数モジュール
use DynFunc, only : xz_AdvScalar, xz_AdvKm, xza_AdvScalar, pz_AdvVelX, xr_Buoy, xr_AdvVelZ, pz_GradPi
! 力学過程陰解法計算用関数モジュール
use DynImpFunc, only : xz_Exner_init, xz_Exner, xr_GradPi
!----- 物理過程 -----
! 数値拡散計算用モジュール
use NumDiffusion, only : NumDiffusion_Init, xz_NumDiffScalar, xz_NumDiffKm, xza_NumDiffScalar, pz_NumDiffVelX, xr_NumDiffVelZ
! 乱流拡散計算用モジュール
use Turbulence, only : Turbulence_Init, xz_TurbScalar, xza_TurbScalar, pz_TurbVelX, xr_TurbVelZ , xz_ShearKm , xz_DispKm, xz_DispHeat
! 放射強制計算用モジュール
use Radiation, only : Radiation_init, xz_RadHeatConst
! 地表フラックス計算用モジュール
! use HeatFlux, only : xz_HeatFluxBulk, xz_MixRtFluxBulk
use HeatFlux, only : xz_HeatFluxDiff, xza_MixRtFluxDiff
! 湿潤飽和調節法計算用モジュール
use MoistAdjust, only : MoistAdjustSvapPress, MoistAdjustNH4SH
! 雲物理パラメタリゼーション
use WarmRainPrm, only : WarmRainPrm_Init, xz_Rain2GasHeat, xza_Rain2Gas, xza_Rain2GasNH4SH, xz_Rain2GasHeatNH4SH, xza_Cloud2Rain, xza_FallRain
! 湿潤気塊の浮力計算用モジュール
use MoistBuoyancy,only : MoistBuoy_Init, xz_BuoyMoistKm, xr_BuoyMolWt, xr_BuoyDrag
! 安定度の計算
use ECCM, only: ECCM_Stab
!暗黙の型宣言禁止
implicit none
!内部変数
character(80) :: cfgfile
real(8), allocatable :: pz_VelXBl(:,:)
real(8), allocatable :: xr_VelZBl(:,:)
real(8), allocatable :: xz_ExnerBl(:,:)
real(8), allocatable :: xz_PotTempBl(:,:)
real(8), allocatable :: xz_KmBl(:,:)
real(8), allocatable :: xz_KhBl(:,:)
real(8), allocatable :: xza_MixRtBl(:,:,:)
real(8) :: Time
!コマンドライン引数の解釈
call mpii_init
!NAMELIST ファイル名の読み込み
if (myrank == 0) then
call MessageNotify( "M", "main", "Namelist file is '%c'", c1=trim(cfgfile) )
end if
call argset_init(cfgfile)
!デバッグ設定
call debugset_init(cfgfile, myrank)
!物質特性の初期化
call chemdata_init()
!時刻に関する設定の初期化
! NAMELIST から必要な情報を読み取り, 時間関連の変数の設定を行う.
call timeset_init(cfgfile)
!格子点情報の初期化
! NAMELIST から情報を得て, 格子点を計算する
call gridset_init(cfgfile)
!化学計算ルーチンの初期化
call chemcalc_init()
!基本場の情報の初期化
! NAMELIST から情報を得て, 基本場を設定する.
call basicset_init(cfgfile)
!I/O ファイル名の初期化
! NAMELIST ファイル名を指定し, deepconv/arare の
! 出力ファイル名を NAMELIST から得る
call fileset_init(cfgfile)
!湿潤ルーチンの共有変数の初期化
call moistset_init()
!積算値を保管するためのモジュールの初期化
! NAMELIST から情報を得て, 基本場を設定する.
call StorePotTemp_init( )
call StoreMixRt_init( )
call StoreBuoy_init( )
call StoreStab_init( )
call StoreMom_init( )
!内部変数の初期化. とりあえずゼロを入れて値を確定させておく.
call ArareAlloc
!デフォルト設定の基本場, 擾乱場を作成する.
call BasicEnv()
call DisturbEnvMPI(cfgfile, xz_PotTempBl, xz_ExnerBl, pz_VelXBl, xr_VelZBl, xza_MixRtBl, xz_KmBl, xz_KhBl )
! !----------------------------------------------------------------------
! ! パッケージ型モジュールの初期化
! ! デフォルトの値から変更する必要のあるルーチンのみ初期化
! !----------------------------------------------------------------------
! call Damping_Init( cfgfile ) !波の減衰係数の初期化
!! call NumDiffusion_Init3( cfgfile ) !数値拡散項の初期化
! call NumDiffusion_Init() !数値拡散項の初期化
! call Turbulence_Init() !乱流計算の初期化
! call WarmRainPrm_Init( cfgfile ) !暖かい雨のパラメタリゼーションの初期化
! call FillNegative_Init( xza_MixRtBasicZ, xz_DensBasicZ)
! call Radiation_Init( cfgfile ) !放射強制の初期化
! call MoistBuoy_Init() !分子量に対する浮力計算ルーチンの初期化!
! call xz_Exner_Init() !陰解法の初期化
!----------------------------------------------------------------
! リスタートファイルの作成
!----------------------------------------------------------------
call ReStartFile_Open( )
call ReStartFile_OutPut( Time, xz_PotTempBl, xz_ExnerBl, pz_VelXBl, xr_VelZBl, xza_MixRtBl, xz_KmBl, xz_KhBl )
call ReStartFile_Close
contains
subroutine ArareAlloc
!
!初期化として, 配列を定義し, 値としてゼロを代入する.
!
!暗黙の型宣言禁止
implicit none
!配列割り当て
allocate( pz_VelXBl(DimXMin:DimXMax, DimZMin:DimZMax), xr_VelZBl(DimXMin:DimXMax, DimZMin:DimZMax), xz_ExnerBl(DimXMin:DimXMax, DimZMin:DimZMax), xz_PotTempBl(DimXMin:DimXMax, DimZMin:DimZMax), xz_KmBl(DimXMin:DimXMax, DimZMin:DimZMax), xz_KhBl(DimXMin:DimXMax, DimZMin:DimZMax), xza_MixRtBl(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum), DelTimeLFrog(NstepLong), NStepEular(NStepLong) )
pz_VelXBl = 0.0d0
xr_VelZBl = 0.0d0
xz_ExnerBl = 0.0d0
xz_KmBl = 0.0d0
xz_KhBl = 0.0d0
xz_PotTempBl = 0.0d0
xza_MixRtBl = 0.0d0
end subroutine ArareAlloc
end program ArareInitData