Module io_gt4_out_mod

Overview

This module output data with gtool4 netCDF conventions.

gtool4 netCDF 規約に基づくデータを出力する。

Error Handling

Known Bugs

Note

Future Plans

Dependency

use type_mod,      only : REKIND, DBKIND, INTKIND, TOKEN, STRING
use axis_type_mod, only : AXISINFO
use gt4_history,   only : GT_HISTORY

Public Interface

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

Generic Procedure

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

Derived Types

出力変数データ格納用構造体。 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

Procedure Interface

Initialize module and acquire NAMELIST

モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。

NAMELIST ファイルは、メインプログラムにて nmlfile_mod nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。

subroutine io_gt4_out_init

Dependency

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

NAMELIST

出力ファイル設定。 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     ! 実行者名 (作成者)

Set Dimension

出力する gtool4 netCDF データの座標情報を設定する。 複数回呼ぶ事で複数の座標を設定する。 現在の所、設定した座標は出力する全ての netCDF ファイルに 出力される。

subroutine io_gt4_out_SetDims(axis)

Dependency

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

Input

type(AXISINFO), intent(in)   :: axis

Set Variables

出力する変数を設定する。 複数回呼ぶ事で複数の変数を設定できる。 このサブルーチンで設定するのは変数キー varkey のみであり、 具体的な情報は varinfo_mod varinfo_init にて NAMELIST varinfo_nml で設定される。 (本来は、デフォルトの値はプログラム無いにハードコードすべきかも知れない)。

subroutine io_gt4_out_SetVars(varkey)

Dependency

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

Input

character(*), intent(in)      :: varkey      ! 変数キー

Put 3-Dimensional Single Precision Data to netCDF file

変数キー 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)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(REKIND),      intent(in):: xyz_Var(:,:,:) ! 出力データ

Put 2-Dimensional Single Precision Data to netCDF file

機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは単精度実数 2 次元のデータを出力する。

subroutine io_gt4_out_Put2Real(varkey, xy_Var)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(REKIND),      intent(in):: xy_Var(:,:) ! 出力データ

Put 0-Dimensional Single Precision Data to netCDF file

機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは単精度実数 0 次元のデータを出力する。

subroutine io_gt4_out_Put0Real(varkey, Var)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(REKIND),      intent(in):: Var ! 出力データ

Put 3-Dimensional Double Precision Data to netCDF file

機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 3 次元のデータを出力する。

subroutine io_gt4_out_Put3Double(varkey, xyz_Var)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(DBKIND),      intent(in):: xyz_Var(:,:,:) ! 出力データ

Put 2-Dimensional Double Precision Data to netCDF file

機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 2 次元のデータを出力する。

subroutine io_gt4_out_Put2Double(varkey, xy_Var)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(DBKIND),      intent(in):: xy_Var(:,:) ! 出力データ

Put 2-Dimensional Double Precision Data to netCDF file

機能は io_gt4_out_Put3Real と基本的に同じ。 ただしこちらは倍精度実数 2 次元のデータを出力する。

subroutine io_gt4_out_Put0Double(varkey, Var)

Dependency

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

Input

character(*),      intent(in):: varkey         ! 変数名
real(DBKIND),      intent(in):: Var ! 出力データ

Terminate module

io_gt4_out_init で設定された値を破棄し、 デフォルトの値に戻す。 また、HistoryClose によって、HistoryCreate 等に対応する終了処理 を行なう。

subroutine io_gt4_out_end

Dependency

use type_mod,    only : REKIND, DBKIND, INTKIND, TOKEN, STRING
use gt4_history, only : HistoryClose
use dc_trace,    only : SetDebug, BeginSub, EndSub, DbgMessage