DCPAM Reference Manual

GFD Dennou Club

平成 17 年 2 月 18 日

目次

1 Module axis x mod 2 1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Known Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.5 Future Plans . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.6 Dependency . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.7 Public Interface . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.8 Procedure Interface . . . . . . . . . . . . . . . . . . . . . . . 3

1.8.1 Initialize module and acquire NAMELIST . . . . . . 3 1.8.2 Return Weight of axis X . . . . . . . . . . . . . . . . 5 1.8.3 Return Data of axis X for Spectral Method. . . . . . 6 1.8.4 Return Data of axis X from NAMELIST . . . . . . . 6 1.8.5 Return Data of axis X from netCDF file . . . . . . . 7 1.8.6 Terminate module . . . . . . . . . . . . . . . . . . . . 7

1 Module axis x mod

• Developers: Morikawa Yasuhiro

• Version: $Id: axis x.f90,v 1.8 2005/01/19 08:52:24 morikawa Exp $

• Tag Name: $Name: $

• Change History:

1.1 Overview

This module set axis X or axis Longitude.

X 軸または経度軸を設定する。

1.2 Error Handling

1.3 Known Bugs

netCDF データから X 軸を入力する axis x netcdf にて、元データが radians でも degrees でも、そのまま入力されるようになっている。本来は元データの units から判定すべき。

1.4 Note

1.5 Future Plans

1.6 Dependency

use type_mod,      only : INTKIND, STRING
use axis_type_mod, only : AXISINFO

1.7 Public Interface

private
public :: axis_x_init, axis_x_weight, axis_x_spectral ! subroutines
public :: axis_x_manual, axis_x_netcdf, axis_x_end    ! subroutines

1.8 Procedure Interface

1.8.1 Initialize module and acquire NAMELIST

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

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

subroutine axis_x_init

Dependency

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: im, grid_3d_init
use spml_mod,   only: spml_init
use axis_type_mod, only : axis_attrs_copy, axis_attrs_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_trace,  only: DbgMessage, BeginSub, EndSub
use dc_message,only: MessageNotify

NAMELIST X 軸の次元変数に関する情報を与える。値を与えないものに関しては以下

のデフォルトの値が用いられる。変数 decision には X 軸のデータをどのように与えるかを指定する。

   • 'manual'

– Data 配列に格納したデータをそのまま X 軸として与える。

   • 'spectral'

– スペクトル法を用いる事を想定し、 length に応じて自動的に X 軸のデータが決まる。

• gtool4 変数 (例えば 'foo.nc@lon' など)

– 該当する変数から X 軸のデータを取得する。変数 length には、 grid 3d mod の公開要素 im と同じ値を与えなければならない。

character(TOKEN)  :: name     = 'lon'          ! 次元変数名
integer(INTKIND)  :: length   = 64             ! 次元長 (配列サ

イズ)

character(STRING) :: longname = 'Longitude'    ! 次元変数の記述

的名称

character(STRING) :: units    = 'degrees_east' ! 次元変数の単位
character(TOKEN)  :: xtype    = 'float'        ! 次元変数の型
character(STRING) :: decision = 'spectral'     ! 次元データの取

得方法

real(REKIND)      :: Data(NMLARRAY)  = 0.0        ! 次元データ入

力用

namelist /axis_x_nml/ &
     & name         , &  ! 次元変数名
     & length       , &  ! 次元長 (配列サイズ)
     & longname     , &  ! 次元変数の記述的名称
     & units        , &  ! 次元変数の単位
     & xtype        , &  ! 次元変数の型
     & decision     , &  ! 次元データの取得方法
     & Data              ! 次元データ

X 軸の次元変数の属性に関する情報を与える。 NAMELIST に複数の axis x attr nml を用意しておく事で複数の情報を与える事が可能である。与えない場合には属性情報は付加されない。

attrtype には与える属性値の種類を設定する。 <URL:http://www.gfddennou.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_x_attr_nml/ &
     & attrname     , &  ! 属性名
     & attrtype     , &  ! 属性値の型
     & cvalue       , &  ! 属性の値 (文字)
     & ivalue       , &  ! 属性の値 (整数)
     & rvalue       , &  ! 属性の値 (単精度実数)
     & dvalue       , &  ! 属性の値 (倍精度実数)
     & lvalue       , &  ! 属性の値 (論理)
     & arraysize    , &  ! 配列のサイズ
     & iarray       , &  ! 属性の値 (整数)
     & rarray       , &  ! 属性の値 (単精度実数)
     & darray            ! 属性の値 (倍精度実数)

1.8.2 Return Weight of axis X

重みデータとその付加情報を返す。 axis x init の NAMELIST axis x nml の decision 変数で 'spectral' 以外が与えられた場合は値を代入しないで返す。

また、 X 軸の次元変数に重みデータに関する付加情報を加える。

subroutine axis_x_weight(Dim_Weight)

Dependency

use constants_mod, only: constants_init, pi
use axis_type_mod, only: axis_type_copy, axis_attrs_copy, axis_attrs_init
use spml_mod,   only: wa_module_x_Lon_Weight => x_Lon_Weight
use grid_3d_mod,only: im
use gt4_history,only: GT_HISTORY_ATTR
use dc_trace,   only: DbgMessage, BeginSub, EndSub

Output

type(AXISINFO), intent(out) :: Dim_Weight ! 次元情報を包括する変

数 1.8.3 Return Data of axis X for Spectral Method.

スペクトル法を用いる場合を想定した X 軸のデータを返す。

axis x init の NAMELIST axis x nml の units に 'radian' または 'rad.' を与える場合には単位がラジアンでデータが返される。それ以外では度数でデータが返る。

axis x init の NAMELIST axis x nml の decision 変数で 'spectral' 以外が与えられた場合は値を代入しないで返す。

subroutine axis_x_spectral(Dim)

Dependency

use axis_type_mod, only: axis_type_copy
use constants_mod, only: constants_init, pi
use spml_mod,   only: wa_module_x_Lon => x_Lon
use dc_string,  only: toChar, StrHead, LChar
use dc_trace,   only: DbgMessage, BeginSub, EndSub

In/Out

type(AXISINFO), intent(inout) :: Dim        ! 次元情報を包括する

変数

1.8.4 Return Data of axis X from NAMELIST

NAMELIST から代入されたデータを X 軸データとして返す。

axis x init の NAMELIST axis x nml の decision 変数で 'manual' 以外が与えられた場合は値を代入しないで返す。

subroutine axis_x_manual(Dim)

Dependency

use axis_type_mod, only: axis_type_copy
use spml_mod,   only: wa_module_x_Lon => x_Lon
use dc_trace,   only: DbgMessage, BeginSub, EndSub

In/Out

type(AXISINFO), intent(inout) :: Dim        ! 次元情報を包括する

変数 1.8.5 Return Data of axis X from netCDF file

netCDF データから取得したデータを X 軸のデータとして返す。現在、取得先のデータの単位に関わらず、そのままデータが入力される。

1.3 参照。

axis x init の NAMELIST axis x nml の decision 変数で gtool4 変数以外が与えられた場合は値を代入しないで返す。

subroutine axis_x_netcdf(Dim)

Dependency

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

In/Out

type(AXISINFO), intent(inout) :: Dim        ! 次元情報を包括する

変数

1.8.6 Terminate module

axis x init で設定された値を破棄し、デフォルトに戻す。

subroutine axis_x_end()

Dependency

use dc_trace,  only: DbgMessage, BeginSub, EndSub