This module output data with gtool4 netCDF conventions.
gtool4 netCDF 規約に基づくデータを出力する。
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use axis_type_mod, only : AXISINFO use gt4_history, only : GT_HISTORY
private public :: io_gt4_out_init, io_gt4_out_end ! subroutines public :: io_gt4_out_SetDims ! subroutines public :: io_gt4_out_SetVars, io_gt4_out_Put ! subroutines
interface io_gt4_out_Put module procedure io_gt4_out_Put3Real module procedure io_gt4_out_Put2Real module procedure io_gt4_out_Put0Real module procedure io_gt4_out_Put3Double module procedure io_gt4_out_Put2Double module procedure io_gt4_out_Put0Double end interface
出力変数データ格納用構造体。 io_gt4_out_SetVars で設定。
type IO_GT4_OUT_VARS character(STRING), pointer:: varkeys(:) =>null()! 変数キー character(STRING) :: file ! 出力ファイル type(GT_HISTORY) :: gt_history ! GT_HISTORY 変数 logical :: created ! HistoryCreate 済かどうか type(IO_GT4_OUT_VARS), pointer :: next end type IO_GT4_OUT_VARS
モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。
NAMELIST ファイルは、メインプログラムにて nmlfile_mod の nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。
subroutine io_gt4_out_init
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use nmlfile_mod, only : nmlfile_init, nmlfile_open, nmlfile_close use time_mod, only : time_init use varinfo_mod, only : varinfo_init use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
出力ファイル設定。 file に与えたものがデフォルトの出力ファイルとなる。 その他の情報は出力する gtool4 netCDF データの大域データとして 与えられる。
character(STRING) :: & & file = 'result.nc' , & ! 出力ファイル名 (デフォルト) & title = 'GCM Test' , & ! タイトル & source = 'DCPAM' , & ! モデル名 (作成手段) & institution = 'GFD Dennou Club' ! 実行者名 (作成者) namelist /io_gt4_out_nml/ & & file , & ! 出力ファイル名 (デフォルト) & title , & ! タイトル & source , & ! モデル名 (作成手段) & institution ! 実行者名 (作成者)
出力する gtool4 netCDF データの座標情報を設定する。 複数回呼ぶ事で複数の座標を設定する。 現在の所、設定した座標は出力する全ての netCDF ファイルに 出力される。
subroutine io_gt4_out_SetDims(axis)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use axis_type_mod, only : AXISINFO, axis_type_copy use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage
type(AXISINFO), intent(in) :: axis
出力する変数を設定する。 複数回呼ぶ事で複数の変数を設定できる。 このサブルーチンで設定するのは変数キー varkey のみであり、 具体的な情報は varinfo_mod の varinfo_init にて NAMELIST varinfo_nml で設定される。 (本来は、デフォルトの値はプログラム無いにハードコードすべきかも知れない)。
subroutine io_gt4_out_SetVars(varkey)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : InitTime, DelTime, StepInterval, & & tvar, ttype, tname, tunit use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : GT_HISTORY , GT_HISTORY_AXIS , & & HistoryCreate, HistoryAddVariable , & & HistoryCopyVariable , & & HistoryAddAttr, HistoryPut use dc_string, only : JoinChar use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage
character(*), intent(in) :: varkey ! 変数キー
変数キー varkey にデータ xyz_Var を出力する。 varinfo_mod の varinfo_init の NAMELIST varinfo_nml で対応する varkey が 与えられていない場合、データは出力されない。
各 varkey に対応する varinfo_mod の StepInterval および OutputStep と、 time_mod の CurrentLoop から、 出力するタイミングが正しいかどうかをチェックして出力する。 出力するタイミングでないと判定された場合は何もせずに終了する。 なお、 varinfo_mod の StepInterval および OutputStep が 無効な値 (ゼロ以下) の場合には time_mod の StepInterval と OutputStep が用いられる。具体的な判定方法は以下の通りである。
subroutine io_gt4_out_Put3Real(varkey, xyz_Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(REKIND), intent(in):: xyz_Var(:,:,:) ! 出力データ
機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは単精度実数 2 次元のデータを出力する。
subroutine io_gt4_out_Put2Real(varkey, xy_Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(REKIND), intent(in):: xy_Var(:,:) ! 出力データ
機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは単精度実数 0 次元のデータを出力する。
subroutine io_gt4_out_Put0Real(varkey, Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(REKIND), intent(in):: Var ! 出力データ
機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 3 次元のデータを出力する。
subroutine io_gt4_out_Put3Double(varkey, xyz_Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(DBKIND), intent(in):: xyz_Var(:,:,:) ! 出力データ
機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 2 次元のデータを出力する。
subroutine io_gt4_out_Put2Double(varkey, xy_Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(DBKIND), intent(in):: xy_Var(:,:) ! 出力データ
機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 2 次元のデータを出力する。
subroutine io_gt4_out_Put0Double(varkey, Var)
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use time_mod, only : StepInterval, OutputStep, CurrentLoop use varinfo_mod, only : varinfo_inquire, VAR_INFO use gt4_history, only : HistoryPut use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage use dc_message, only : MessageNotify
character(*), intent(in):: varkey ! 変数名 real(DBKIND), intent(in):: Var ! 出力データ
io_gt4_out_init で設定された値を破棄し、 デフォルトの値に戻す。 また、HistoryClose によって、HistoryCreate 等に対応する終了処理 を行なう。
subroutine io_gt4_out_end
use type_mod, only : REKIND, DBKIND, INTKIND, TOKEN, STRING use gt4_history, only : HistoryClose use dc_trace, only : SetDebug, BeginSub, EndSub, DbgMessage