This module set axis Z or axis Altitude.
Z 軸または高度軸を設定する。
use type_mod, only : INTKIND, STRING use axis_type_mod, only : AXISINFO
private public :: axis_z_init, axis_z_end ! subroutines public :: axis_z_manual, axis_z_netcdf ! subroutines public :: axis_z_sigmahalf_manual ! subroutines public :: axis_z_sigmahalf_netcdf ! subroutines public :: axis_z_half_manual ! subroutines public :: axis_z_half_netcdf ! subroutines
モジュールを初期化し、NAMELIST から値を取得する。 NAMELIST から値が取得できないものに関しては上記のデフォルト値が 用いられる。
NAMELIST ファイルは、メインプログラムにて nmlfile_mod の nmlfile_init で指定されることが想定されているが、 もしもこの初期化ルーチンより以前に指定されていなければ、 nmlfile_init のデフォルトで指定される NAMELIST ファイルを 読む。
subroutine axis_z_init
use type_mod ,only: STRING, TOKEN, INTKIND, REKIND, DBKIND, NMLARRAY use nmlfile_mod,only: nmlfile_init, nmlfile_open, nmlfile_close use grid_3d_mod,only: km, grid_3d_init use axis_type_mod, only : axis_attrs_copy, axis_attrs_init use constants_mod,only: constants_init use gt4_history, only: GT_HISTORY_ATTR use dc_types, only: GT_TOKEN => TOKEN, GT_STRING => STRING use dc_url ,only: GT_ATMARK, GT_QUESTION use dc_string ,only: toChar use dc_trace ,only: DbgMessage, BeginSub, EndSub use dc_message ,only: MessageNotify
axis_z_nml には、Z 軸の次元変数に関する情報を与える。 値を与えないものに関しては以下のデフォルトの値が用いられる。
変数 decision には Z 軸のデータをどのように与えるかを指定する。
 'manual' 
 'sigmahalf' 
 'foo.nc@lon'  など)
 'sigmahalf'  の場合と同様に設定される変数 length には、 grid_3d_mod の公開要素 km と同じ 値を与えなければならない。
character(TOKEN)  :: name     = 'sigma'       ! 次元変数名
integer(INTKIND)  :: length   = 12            ! 次元長 (配列サイズ)
character(STRING) :: longname = 'sigma at full level' ! 次元変数の記述的名称
character(STRING) :: units    = 'sigma_level' ! 次元変数の単位
character(TOKEN)  :: xtype    = 'float'       ! 次元変数の型
character(STRING) :: decision = 'sigmahalf'   ! 次元データの取得方法
real(REKIND)      :: Data(NMLARRAY)   = 0.0! 次元データ入力用
namelist /axis_z_nml/ &
     & name         , &  ! 次元変数名
     & length       , &  ! 次元長 (配列サイズ)
     & longname     , &  ! 次元変数の記述的名称
     & units        , &  ! 次元変数の単位
     & xtype        , &  ! 次元変数の型
     & decision     , &  ! 次元データの取得方法
     & Data              ! 次元データ
axiz_z_half_nml には、Z 軸の半整数レベルの次元変数に関する 情報を与える。 値を与えないものに関しては以下のデフォルトの値が用いられる。
変数 decision には Z 軸のデータをどのように与えるかを指定する。
 'manual' 
 'foo.nc@lon'  など)
 'manual'  の場合と同様に設定される変数 length には、 grid_3d_mod の公開要素 km に プラス 1 した値を与えなければならない。
name        = 'sigmahalf'   ! 次元変数名
length      = 13            ! 次元長 (配列サイズ)
longname    = 'sigma at half level' ! 次元変数の記述的名称
units       = 'sigma_level' ! 次元変数の単位
xtype       = 'float'       ! 次元変数の型
decision    = 'manual'      ! 次元データの取得方法
Data(1:13)  = (/1, 0.99, 0.97, 0.93, 0.85, 0.75, 0.63, 0.5, &
     &             0.36, 0.22, 0.1, 0.05, 0/)  ! 次元データ入力用
namelist /axis_z_half_nml/ &
     & name         , &  ! 次元変数名
     & length       , &  ! 次元長 (配列サイズ)
     & longname     , &  ! 次元変数の記述的名称
     & units        , &  ! 次元変数の単位
     & xtype        , &  ! 次元変数の型
     & decision     , &  ! 次元データの取得方法
     & Data              ! 次元データ
Z 軸の次元変数の属性に関する情報を与える。 NAMELIST に複数の axis_z_attr_nml を用意しておく事で 複数の情報を与える事が可能である。 与えない場合には属性情報は付加されない。
attrtype には与える属性値の種類を設定する。 <URL:http://www.gfd-dennou.org/arch/gtool4/gt4f90io-current/doc/gt_history.htm#derived_gthistoryattr> を参照せよ。なお、arraysize に 1 以上の値を設定すると、 配列データが優先されて属性値に設定される。
character(GT_TOKEN)  :: attrname = '' ! 属性名
character(GT_TOKEN)  :: attrtype = '' ! 属性値の型
character(GT_STRING) :: cvalue   = '' ! 属性の値 (文字)
integer(INTKIND)     :: ivalue   = 0      ! 属性の値 (整数)
real(REKIND)         :: rvalue   = 0.0    ! 属性の値 (単精度実数)
real(DBKIND)         :: dvalue   = 0.0d0  ! 属性の値 (倍精度実数)
logical              :: lvalue   = .false.! 属性の値 (論理)
integer(INTKIND)     :: arraysize= 0      ! 配列のサイズ
integer(INTKIND) :: iarray(NMLARRAY)  = 0    ! 属性の値 (整数)
real(REKIND)     :: rarray(NMLARRAY)  = 0.0  ! 属性の値 (単精度実数)
real(DBKIND)     :: darray(NMLARRAY)  = 0.0d0! 属性の値 (倍精度実数)
namelist /axis_z_attr_nml/ &
     & attrname     , &  ! 属性名
     & attrtype     , &  ! 属性値の型
     & cvalue       , &  ! 属性の値 (文字)
     & ivalue       , &  ! 属性の値 (整数)
     & rvalue       , &  ! 属性の値 (単精度実数)
     & dvalue       , &  ! 属性の値 (倍精度実数)
     & lvalue       , &  ! 属性の値 (論理)
     & arraysize    , &  ! 配列のサイズ
     & iarray       , &  ! 属性の値 (整数)
     & rarray       , &  ! 属性の値 (単精度実数)
     & darray            ! 属性の値 (倍精度実数)
Z 軸の半整数レベルの次元変数の属性に関する情報を与える。 NAMELIST に複数の axis_z_half_attr_nml を用意しておく事で 複数の情報を与える事が可能である。 与えない場合には属性情報は付加されない。
attrtype には与える属性値の種類を設定する。 <URL:http://www.gfd-dennou.org/arch/gtool4/gt4f90io-current/doc/gt_history.htm#derived_gthistoryattr> を参照せよ。なお、arraysize に 1 以上の値を設定すると、 配列データが優先されて属性値に設定される。
namelist /axis_z_half_attr_nml/ &
     & attrname     , &  ! 属性名
     & attrtype     , &  ! 属性値の型
     & cvalue       , &  ! 属性の値 (文字)
     & ivalue       , &  ! 属性の値 (整数)
     & rvalue       , &  ! 属性の値 (単精度実数)
     & dvalue       , &  ! 属性の値 (倍精度実数)
     & lvalue       , &  ! 属性の値 (論理)
     & arraysize    , &  ! 配列のサイズ
     & iarray       , &  ! 属性の値 (整数)
     & rarray       , &  ! 属性の値 (単精度実数)
     & darray            ! 属性の値 (倍精度実数)
NAMELIST から取得した半整数σレベルのデータと、 その半整数σレベルから生成した整数σレベルデータを返す。
 axis_z_init  の NAMELIST axis_z_nml の decision 変数で
 'sigmahalf'  が与えられ、且つ
NAMELIST axis_z_half_nml の decision 変数で
 'manual' が与えられている場合以外は、値に何も代入せず返す。
subroutine axis_z_sigmahalf_manual(Dim, DimHalf)
use axis_type_mod, only: axis_type_copy use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: Dim, DimHalf ! 次元情報を包括する変数
netCDF データから取得した半整数σレベルのデータと、 その半整数σレベルから生成した整数σレベルデータを返す。
 axis_z_init  の NAMELIST axis_z_nml の decision 変数で
 'sigmahalf'  が与えられ、且つ
NAMELIST axis_z_half_nml の decision 変数で
gtool4変数が与えられている場合以外は、値に何も代入せず返す。
subroutine axis_z_sigmahalf_netcdf(Dim, DimHalf)
use axis_type_mod, only: axis_type_copy use gt4_history,only: HistoryGet use dc_url , only: UrlSplit use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: Dim, DimHalf ! 次元情報を包括する変数
NAMELIST から代入されたデータを Z 軸データとして返す。
 axis_z_init  の NAMELIST axis_z_nml の decision 変数で
 'manual'  以外が与えられた場合は値を代入しないで返す。
subroutine axis_z_manual(Dim) use axis_type_mod, only: axis_type_copy use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: Dim ! 次元情報を包括する変数
netCDF データから取得したデータを Z 軸のデータとして返す。
axis_z_init の NAMELIST axis_z_nml の decision 変数で gtool4 変数以外が与えられた場合は値を代入しないで返す。
subroutine axis_z_netcdf(Dim)
use type_mod, only: STRING use axis_type_mod, only: axis_type_copy use gt4_history,only: HistoryGet use dc_url , only: UrlSplit use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: Dim ! 次元情報を包括する変数
NAMELIST から代入された半整数レベルのデータを半整数レベルの Z 軸データとして返す。
 axis_z_init  の NAMELIST axis_z_half_nml の decision 変数で
 'manual'  以外が与えられた場合は値を代入しないで返す。
subroutine axis_z_half_manual(DimHalf) use axis_type_mod, only: axis_type_copy use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: DimHalf ! 次元情報を包括する変数
netCDF データから取得した半整数レベルデータを半整数レベルの Z 軸のデータとして返す。
axis_z_init の NAMELIST axis_z_half_nml の decision 変数で gtool4 変数以外が与えられた場合は値を代入しないで返す。
subroutine axis_z_half_netcdf(DimHalf)
use type_mod, only: STRING use axis_type_mod, only: axis_type_copy use gt4_history,only: HistoryGet use dc_url , only: UrlSplit use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(inout) :: DimHalf ! 次元情報を包括する変数
axis_z_mod の内部サブルーチン。
引数 DimHalf を半整数σレベルとして、その値から整数σレベルを生成し、 引数 Dim として返す。
subroutine gen_sigma_from_half(DimHalf, Dim)
use type_mod, only: DBKIND, STRING, REKIND use constants_mod,only: RAir, Cp use dc_string, only: toChar use dc_trace, only: DbgMessage, BeginSub, EndSub
type(AXISINFO), intent(in) :: DimHalf ! 半整数σレベル
type(AXISINFO), intent(inout):: Dim ! 整数σレベル
axis_z_init で設定された値を破棄し、デフォルトに戻す。
subroutine axis_z_end
use dc_trace, only: DbgMessage, BeginSub, EndSub