Program init

Overview

Generate Various Initial Data

Error Handling

Known Bugs

Note

Future Plans

Dependency

----- 構造体参照モジュール -----

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

NAMELIST

初期値の種類の設定を行なう。 現在 condition に与えて有効なのは以下の値である。

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'