arare_init-data.f90

Path: main/arare_init-data.f90
Last Update: Wed Mar 02 10:37:18 +0900 2011

Program ArareInitData

Authors:SUGIYAMA Ko-ichiro (杉山耕一朗), ODAKA Masatsugu (小高正嗣)
Version:$Id: arare_init-data.f90,v 1.1 2011-03-02 01:37:18 sugiyama Exp $
Tag Name:$Name: arare4-20110302-3 $
Copyright:Copyright (C) GFD Dennou Club, 2006. All rights reserved.
License:See COPYRIGHT

Overview

非静力学モデル deepconv/arare.

Error Handling

Known Bugs

Note

 * 方程式系は準圧縮系.

Future Plans

Required files

Methods

Included Modules

dc_types dc_string dc_message argset ChemCalc chemdata mpiset filesetmpi debugset timeset gridset basicset StorePotTemp StoreMixRt StoreBuoy StoreStab StoreMom moistset damping timefilter boundarympi cflcheck fillnegative RestartFileIOmpi HistoryFileIOmpi DynFunc DynImpFunc NumDiffusion Turbulence Radiation HeatFlux MoistAdjust WarmRainPrm MoistBuoyancy ECCM

Public Instance methods

Main Program :

非静力学モデル deepconv/arare.

[Source]

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