This module set physical constants. Default value is standard condition on the earth. These values could be changed by NAMELIST.
物理定数を設定するためのモジュールである。 デフォルトでは地球上の標準状態の値を持っているが、 NAMELIST により変更することも可能である。
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING
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
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 ! 時間フィルターするステップ間隔
モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。
NAMELIST ファイルは、メインプログラムにて nmlfile_mod の nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。
subroutine constants_init
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 /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 ! 超粘性の次数
NAMELIST から読み込んだ値を破棄し、各定数をデフォルトの値に戻す。
subroutine constants_end
use dc_trace, only : BeginSub, EndSub, DbgMessage