Module constants_mod

Overview

This module set physical constants. Default value is standard condition on the earth. These values could be changed by NAMELIST.

物理定数を設定するためのモジュールである。 デフォルトでは地球上の標準状態の値を持っているが、 NAMELIST により変更することも可能である。

Error Handling

Known Bugs

Note

Future Plans

Dependency

use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING

Public Interface

private
public :: constants_init, constants_end  ! subroutines
public :: & ! variables
     &    PI, R0, Omega, Grav, Cp, RAir, EL, CpVap, RVap,  &
     &    DH2O, EpsV, ES0, StB, FKarm, EpsVT, SecPerDay,   &
     &    EFoldTime, TempAve, TimeFilter, VisOrder,        &
     &    TimeFilterStepInt

Public Data

real(DBKIND), save  ::  & ! follow data is default values.

     & PI        = 3.141592653589793 , & ! 円周率
     & R0        = 6.371d6           , & ! 球の半径
     & Omega     = 7.292d-5          , & ! 回転角速度
     & Grav      = 9.8d0             , & ! 重力加速度

     & Cp        = 1004.6d0          , & ! 大気定圧比熱
     & RAir      = 287.04d0          , & ! 大気気体定数
     & EL        = 2.5d6             , & ! 水の凝結の潜熱
     & CpVap     = 1810.0d0          , & ! 水蒸気定圧比熱
     & RVap      = 461.0d0           , & ! 水蒸気気体定数
     & DH2O      = 1000.0d0          , & ! 水の密度
     & EpsV      = 0.6226464208      , & ! 水と大気の分子量比ε
     & ES0       = 611.0d0           , & ! 0℃飽和蒸気圧:Pa
     & StB       = 5.67d-8           , & ! Stefan-Boltzman
     & FKarm     = 0.4d0             , & ! Karman 定数
     & EpsVT     = 0.6060479376      , & ! 1/ε-1

     & SecPerDay = 86400.0d0         , & ! 1日あたりの秒数 

     & EFoldTime = 8640.0d0          , & ! 最大波数に対する e-folding time
     & TempAve   = 300.0             , & ! 平均温度
     & TimeFilter= 0.05                  ! 時間フィルター係数

integer(INTKIND), save ::  &
     & VisOrder          = 4         , & ! 超粘性の次数
     & TimeFilterStepInt = 1             ! 時間フィルターするステップ間隔

Procedure Interface

Initialize module and acquire NAMELIST

モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。

NAMELIST ファイルは、メインプログラムにて nmlfile_mod nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。

subroutine constants_init

Dependency

use type_mod   , only : REKIND, DBKIND, INTKIND, TOKEN, STRING
use nmlfile_mod, only : nmlfile_init, nmlfile_open, nmlfile_close
use dc_trace   , only : BeginSub, EndSub, DbgMessage
use dc_message , only : MessageNotify

NAMELIST

namelist /constants_nml/ &

     & PI                , & ! 円周率
     & R0                , & ! 球の半径
     & Omega             , & ! 回転角速度
     & Grav              , & ! 重力加速度

     & Cp                , & ! 大気定圧比熱
     & RAir              , & ! 大気気体定数
     & EL                , & ! 水の凝結の潜熱
     & CpVap             , & ! 水蒸気定圧比熱
     & RVap              , & ! 水蒸気気体定数
     & DH2O              , & ! 水の密度
     & EpsV              , & ! 水と大気の分子量比ε
     & ES0               , & ! 0℃飽和蒸気圧:Pa
     & StB               , & ! Stefan-Boltzman
     & FKarm             , & ! Karman 定数
     & EpsVT             , & ! 1/ε-1

     & SecPerDay         , & ! 1日あたりの秒数

     & EFoldTime         , & ! 最大波数に対する e-folding time
     & TempAve           , & ! 平均温度
     & TimeFilter        , & ! 時間フィルター係数
     & TimeFilterStepInt , & ! 時間フィルターするステップ間隔
     & VisOrder              ! 超粘性の次数

Terminate module

NAMELIST から読み込んだ値を破棄し、各定数をデフォルトの値に戻す。

subroutine constants_end

Dependency

use dc_trace,    only : BeginSub, EndSub, DbgMessage