arare_init-data.f90

Path: main/arare_init-data.f90
Last Update: Thu Mar 03 13:31:19 +0900 2011

Program ArareInitData

Authors:SUGIYAMA Ko-ichiro (杉山耕一朗), ODAKA Masatsugu (小高正嗣)
Version:$Id: arare_init-data.f90,v 1.2 2011-03-02 13:36:36 sugiyama Exp $
Tag Name:$Name: $
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 fileset debugset gridset basicset moistset boundary RestartFileIO

Public Instance methods

Main Program :

非静力学モデル deepconv/arare.

This procedure input/output NAMELIST#arare_cpu .

[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

  !  入出力ファイル名管理モジュール
  use fileset,    only : fileset_init

  !  デバッグ出力管理モジュール
  use debugset,      only : debugset_init

  !  格子点管理モジュール 
  use gridset,       only : gridset_init, DimXMin, DimXMax, DimZMin, DimZMax, SpcNum

  !  基本場設定モジュール
  use basicset,      only : basicset_init

  !  湿潤ルーチン設定モジュール
  use moistset,      only: moistset_init

  !  境界条件適用モジュール
  use boundary,    only : BoundaryXCyc_xz, BoundaryZSym_xz, BoundaryXCyc_xza, BoundaryZSym_xza, BoundaryXCyc_pz, BoundaryZSym_pz, BoundaryXCyc_xr, BoundaryZAntiSym_xr

  !-----    入出力モジュール   -----
  !  リスタートファイル入出力モジュール
  use RestartFileIO, only : ReStartFile_Open, ReStartFile_OutPut, ReStartFile_Close

  !暗黙の型宣言禁止
  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
  integer              :: cpu

  !NAMELIST ファイル名の読み込み
  call MessageNotify( "M", "main", "Namelist file is '%c'", c1=trim(cfgfile) )
  call argset_init(cfgfile)

  !デバッグ設定
  call debugset_init(cfgfile)

  !物質特性の初期化
  call chemdata_init()

  !格子点情報の初期化
  !  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()

  !内部変数の初期化. とりあえずゼロを入れて値を確定させておく. 
  call ArareAlloc

  ! CPU 数の設定
  call ArareSetCPU

  ! デフォルト設定の基本場, 擾乱場を作成する. 
  Time = 0.0d0
  do i = 1, cpu     
    ! 基本場の値を計算. 値をモジュールに保管.
    call BasicSetup(i, cpu, cfgfile)

    ! 擾乱場の値を計算
    call DisturbSetup(i, cpu, cfgfile, xz_PotTempBl, xz_ExnerBl, pz_VelXBl, xr_VelZBl, xza_MixRtBl,  xz_KmBl,    xz_KhBl               )

    ! リスタートファイル作成. 基本場と擾乱場を出力. 
    call ReStartFile_Open( )
    call ReStartFile_OutPut( Time, xz_PotTempBl, xz_ExnerBl, pz_VelXBl, xr_VelZBl, xza_MixRtBl,  xz_KmBl,    xz_KhBl               )
    call ReStartFile_Close
  end do
  
  !----------------------------------------------------------------
  ! リスタートファイルの作成
  !----------------------------------------------------------------
    
contains

  subroutine ArareSetCPU
    ! 定義
    NAMELIST /arare_cpu/ cpu

    !ファイルオープン. 情報取得. 
    open (10, FILE=cfgfile)
    read(10, NML=arare_cpu)
    close(10)

  end subroutine ArareSetCPU


  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))

    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