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'