gtool4 netCDF data Input module directly called by GCM run program.
まだテストケースが少なく、上部モジュールと下部モジュールで切り分ける べきかも知れない部分が多く残っている。 その切り分けを将来的にはすべきである。
use dycore_type_mod, only : STRING, DBKIND use dycore_grid_mod, only : im, jm, km
private public :: dycore_in_init, dycore_in_dims ! subroutines public :: dycore_in_vars, dycore_in_end ! subroutines
モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。
NAMELIST ファイルは、メインプログラムにて nmlfile_mod の nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。
subroutine dycore_in_init
use dycore_type_mod, only : STRING, DBKIND, INTKIND use nmlfile_mod, only : nmlfile_init, nmlfile_open, nmlfile_close use axis_x_mod, only: axis_x_init use axis_y_mod, only: axis_y_init use axis_z_mod, only: axis_z_init use dc_trace, only: BeginSub, EndSub, DbgMessage use dc_message,only: MessageNotify use dc_string, only: toChar
character(STRING) :: & & input_file = 'init.nc' , & ! 初期値ファイル & vlonname = 'vlon' , & ! 速度経度成分の変数名 & vlatname = 'vlat' , & ! 速度緯度成分の変数名 & vorname = 'vor' , & ! 渦度の変数名 & divname = 'div' , & ! 発散の変数名 & psname = 'ps' , & ! 地表面気圧の変数名 & tempname = 'temp' , & ! 温度の変数名 & qvapname = 'qvap' ! 比湿の変数名 real(DBKIND) :: input_time(2) = (/0,0/) ! 入力データの時刻 namelist /dycore_in_nml/ & & input_file , & ! 初期値ファイル & input_time , & ! 入力データの時刻 (t-Δt, t) & vlonname , & ! 速度経度成分の変数名 & vlatname , & ! 速度緯度成分の変数名 & vorname , & ! 渦度の変数名 & divname , & ! 発散の変数名 & psname , & ! 地表面気圧の変数名 & tempname , & ! 温度の変数名 & qvapname ! 比湿の変数名
axis_x_mod , axis_y_mod , axis_z_mod から座標情報を取得し、Dims に格納して返す。
subroutine dycore_in_dims(Dims)
use dycore_type_mod, only: DYCORE_DIMS use dycore_grid_mod, only: im, jm, km use axis_x_mod, only: axis_x_spectral, axis_x_manual, axis_x_netcdf use axis_y_mod, only: axis_y_spectral, axis_y_manual, axis_y_netcdf use axis_z_mod, only: axis_z_manual, axis_z_netcdf, & & axis_z_sigmahalf_manual, axis_z_sigmahalf_netcdf use gt4_history,only: HistoryGetPointer use dc_trace, only: BeginSub, EndSub, DbgMessage use dc_string, only: toChar
type(DYCORE_DIMS), intent(out):: Dims ! 次元データ全種
dycore_in_init の NAMELIST dycore_in_nml の情報に従い、変数データのデータを入力して、 Vars_B および Vars に返す。
subroutine dycore_in_vars(Vars_B, Vars)
use dycore_type_mod, only: DYCORE_VARS use dycore_grid_mod, only: im, jm, km use gt4_history, only: HistoryGetPointer use dc_trace, only: BeginSub, EndSub, DbgMessage use dc_string, only: toChar
type(DYCORE_VARS), intent(out):: Vars_B ! 格子点データ全種 (t-Δt) type(DYCORE_VARS), intent(out):: Vars ! 格子点データ全種 (t)
dycore_in_init で設定された値を破棄し、 デフォルトの値に戻します。
subroutine dycore_in_end
use dc_trace, only: BeginSub, EndSub, DbgMessage use dc_error, only: StoreError, USR_ECHAR use dc_string, only: toChar