Generate Various Initial Data
----- 構造体参照モジュール -----
use type_mod, only: STRING, INTKIND, REKIND, DBKIND use nmlfile_mod, only: nmlfile_init, nmlfile_open, nmlfile_close use constants_mod, only: constants_init, pi, R0
----- 格子点取得モジュール -----
use grid_3d_mod, only: grid_3d_init, im, jm, km, grid_3d_end use grid_wavenumber_mod, only: grid_wavenumber_init, nm, grid_wavenumber_end
----- 座標データ生成モジュール -----
use axis_type_mod, only: AXISINFO use axis_x_mod, only: axis_x_init, axis_x_weight, axis_x_spectral, axis_x_end use axis_y_mod, only: axis_y_init, axis_y_weight, axis_y_spectral, axis_y_end use axis_z_mod, only: axis_z_init, axis_z_sigmahalf_manual, axis_z_end
----- データI/Oモジュール -----
use io_gt4_out_mod, only : io_gt4_out_init , io_gt4_out_SetDims, & & io_gt4_out_SetVars, io_gt4_out_Put , & & io_gt4_out_end
----- 時刻管理モジュール -----
use time_mod, only: time_init, tvar, ttype, tname, tunit, time_end
----- SPMODEL モジュール -----
use spml_mod, only: spml_init, xya_wa, wa_Div_xya_xya & & ,wa_LaplaInv_wa, wa_xya, xya_GradLat_wa, xya_GradLon_wa
----- デバッグ・汎用ツール -----
use dc_trace, only: SetDebug, DbgMessage, BeginSub, EndSub, DataDump use dc_string, only: toChar, StriEq, LChar, StrHead use dc_message,only: MessageNotify
初期値の種類の設定を行なう。 現在 condition に与えて有効なのは以下の値である。
rigid body rotation
convex of surface pressure
convex of temperature
VelLonAve, VelLonAve, VelLatAve, VorAve, DivAve, TempAve, QVapAve, PsAve には、それぞれ平均値を与える。
デフォルトでは風速から渦度発散を生成するが、 VorDiv_Priority を .true. にする事で、渦度発散から風速を生成する。
character(STRING) :: condition = '' ! 初期値の種類 real(DBKIND) :: VelLonAve = 0.0d0 ! 速度経度成分平均値 real(DBKIND) :: VelLatAve = 0.0d0 ! 速度緯度成分平均値 real(DBKIND) :: VorAve = 0.0d0 ! 渦度平均値 real(DBKIND) :: DivAve = 0.0d0 ! 発散平均値 real(DBKIND) :: TempAve = 273.0d0 ! 温度平均値 real(DBKIND) :: QVapAve = 0.0d0 ! 比湿平均値 real(DBKIND) :: PsAve = 1.0d5 ! 地表面圧力平均値 logical :: VorDiv_Priority = .false. ! 渦度発散から風速を生成 !for 'rigid body rotation' real(DBKIND) :: VelLonMax_rbr = 1.0d2 ! Maximum of 'VelLon' !for 'convex of surface pressure' or 'convex of temperature' real(DBKIND) :: LonLat_Radius_Deg = 20.0 ! 半径 (度数) real(DBKIND) :: LonLat_Radius_Rad = 0.349 ! 半径 (ラジアン) real(DBKIND) :: Lat_Center_Deg = 45.0 ! 緯度の中心位置 (度数) real(DBKIND) :: Lon_Center_Deg = 100.0 ! 経度の中心位置 (度数) real(DBKIND) :: Lat_Center_Rad = 0.785 ! 緯度の中心位置 (ラジアン) real(DBKIND) :: Lon_Center_Rad = 1.745 ! 経度の中心位置 (ラジアン) logical :: Rad_Priority = .false. ! ラジアン表記を優先 !for 'convex of surface pressure' real(DBKIND) :: PsMax = -200.0d2 ! Maximum of 'Ps' !for 'convex of temperature' real(DBKIND) :: TempMax = 10.0d0 ! Maximum of 'Temp' namelist /init_nml/ & & condition , & ! 初期値の種類 & VelLonAve , & ! 速度経度成分平均値 & VelLatAve , & ! 速度緯度成分平均値 & VorAve , & ! 渦度平均値 & DivAve , & ! 発散平均値 & TempAve , & ! 温度平均値 & QVapAve , & ! 比湿平均値 & PsAve , & ! 地表面圧力平均値 & VorDiv_Priority , & ! 渦度発散から風速を生成 & VelLonMax_rbr , & ! 速度経度成分 (剛体回転流用) & LonLat_Radius_Deg , & ! 半径 (度数) & LonLat_Radius_Rad , & ! 半径 (ラジアン) & Lat_Center_Deg , & ! 緯度の中心位置 (度数) & Lon_Center_Deg , & ! 経度の中心位置 (度数) & Lat_Center_Rad , & ! 緯度の中心位置 (ラジアン) & Lon_Center_Rad , & ! 経度の中心位置 (ラジアン) & Rad_Priority , & ! ラジアン表記を優先 & PsMax , & ! Maximum of 'Ps' & TempMax ! Maximum of 'Temp'