Class | gtdata_generic |
In: |
gtdata_generic.f90
|
ファイルの形式に依存しない多次元データである GT_VARIABLE 型変数 の操作に関する手続きの全てはここで総称宣言されて公開されます。
以降に一覧される手続は、第 1 引数が主な操作対象になるようなスタイルで 設計されています。 第 1 引数から gtool4 の手続であることがわかるので、 名前にわざわざ GT とはつけていません。
ASCII 順の手続き一覧は下記の "Methods" を参照してください。
Create : | 変数の作成 |
Open : | 変数の初期化 |
Close : | 変数の終了処理 |
Inquire : | 変数または属性に関する問い合わせ |
Get : | ファイル入力 |
Put, Put_Line : | ファイル出力 |
Dimname_To_Dimord : | 次元相対名から次元順序番号の問い合わせ |
Exch_dim : | 次元順序番号の交換 |
変数 (GT_VARIABLE 型) は順序の決まった次元集合をもちます。それぞれ の次元には決まった長さがあり、1から長さまでの番号で識別される格子から なっています。しかしながら、必要に応じて変数がもつ次元の順序を入れ替え たり、次元が存在しないようにみせかけたり、各々の次元の長さを変えたり格 子番号を付け替えたりできます。
Limit : | 入出力範囲を拘束 |
Add_Dim : | 変数に次元を追加 |
Del_Dim : | 変数から次元を隠蔽 |
Transform : | 2 つの変数の次元配置の共通化 |
Slice : | 入出力範囲を限定 |
Slice_Next : | 入出力範囲を移動 |
Get_Slice : | 変数入出力範囲限定情報を問い合わせ |
属性名は英字、数字、下線から構成されます。先頭の文字は英字または "+" でなければなりません。 "+" から始まる属性名は内部的に使用されるもの で、netCDF 実装では大域変数に対応します。
Attr_Rewind : | 変数属性列挙の初期化 |
Attr_Next : | 変数属性の列挙 |
Attr_True : | 変数属性を論理型として読み取り |
Get_Attr : | 変数属性の読み取り |
Put_Attr : | 変数属性の書き出し |
Copy_Attr : | 属性のコピー |
Del_Attr : | 変数属性の削除 |
GTVarSearch : | ファイルの中の変数名の列挙 |
GTVarSync : | ファイル入出力の同期 |
GTDataTmpNam : | 変数名の自動作成 |
GTVarDel : | ファイルの中の変数の削除 (作成中) |
operator(.equivalent.) [#M000133] : | 同値判定 |
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
dimord : | integer, intent(in) |
dimvar : | type(GT_VARIABLE), intent(in) |
err : | logical, intent(out) |
変数 var の dimord 番目の位置に次元 dimvar を追加します。dimord 番目以降の次元は 1 つ後ろにずれます。 もし dimord が var の有効次元数よりも大きい場合、 (有効次元数 + 1) が与えられたものと見なされます。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvaradddim.f90#GTVarAddDim
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
member_url : | character(len = *), intent(in) |
link_name : | character(len = *), intent(in), optional |
変数 var の gt_structure_member 属性 (gtool4 netCDF 規約 の 「4. 構造体変数」参照) に member_url の変数名部分を追加します。
Original external subprogram is gtvaraddmember.f90#GTVarAddMember
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout), target |
name : | character(len = *), intent(out) |
end : | logical, intent(out), optional |
Attr_Rewind を参照してください。
Original external subprogram is gtvarattrsearch.f90#GTVarAttrNext
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout), target |
var から属性名のリストを取得するために利用するサブルーチンです。 このサブルーチンと Attr_Next によって属性リスト一覧を取得できます。
ある変数 var について全ての属性を列挙するためには、まず Attr_Rewind を呼んだ後、Attr_Next を呼びます。最初の呼び出しで 最初の属性が、次の呼び出しで次の属性の名前が得られます。最後の 属性のあとでは end == .true. となります。
以下のサンプルソースコードを参照ください。
! 属性一覧の取得 use gt4f90io type(GT_VARIABLE):: var character(len = STRING):: attrname logical:: end call Attr_Rewind(var) do call Attr_Next(var, attrname, end) if (end) exit write(*,*) trim(attrname) enddo
Original external subprogram is gtvarattrsearch.f90#GTVarAttrRewind
Function : | |
result : | logical |
var : | type(GT_VARIABLE), intent(in) |
name : | character(len = *), intent(in) |
default : | logical, intent(in), optional |
変数 var に付加されている属性 name の値を返します。 属性値が論理型属性の場合のみ用いることが出来ます。
以下の場合には .false. が返ります。
属性の値が正常に取得できず、且つ default が与えられて いた場合、その値が返ります。default が与えられていなかった 場合には .false. が返ります。
Original external subprogram is gtvarattrtrue.f90#GTVarAttrTrue
Subroutine : | |
var : | type(GT_VARIABLE), intent(in), target |
err : | logical, intent(out), optional |
変数 var の終了処理を行います。Open または Create されたものは プログラムの最後に必ずこのサブルーチンを用いて終了処理を行ってください。
終了処理の際にエラーが生じた場合、メッセージを出力してプログラムは 強制終了します。err を与えてある場合にはこの引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarclose.f90#GTVarClose
Subroutine : | |
to : | type(GT_VARIABLE), intent(inout) |
attrname : | character(len = *), intent(in) |
from : | type(GT_VARIABLE), intent(in) |
err : | logical, intent(out), optional |
変数 from の属性 attrname を 変数 to へコピーします。
属性のコピー時にエラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Copy_Attr は 2 つのサブルーチンの総称名であり、 他にも一括で変数の全ての属性をコピーする方法もあります。 下記のサブルーチンを参照ください。
Original external subprogram is gtvarcopyattr.f90#GTVarCopyAttr
Subroutine : | |
to : | type(gt_variable), intent(inout) |
from : | type(gt_variable), intent(inout) |
err : | logical, intent(out), optional |
global : | logical, intent(in), optional |
変数 from の全ての属性を変数 to へコピーします。
デフォルトでは大域属性もコピーしますが、 global に .false. を与える場合、大域属性をコピーしません。
Copy_Attr は 2 つのサブルーチンの総称名であり、 他にも属性を指定してコピーする方法もあります。 上記のサブルーチンを参照ください。
Original external subprogram is gtvarcopyattrall.f90#GTVarCopyAttrAll
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
url : | character(len = *), intent(in) |
dims(:) : | type(GT_VARIABLE), intent(in), optional |
xtype : | character(len = *), intent(in), optional |
long_name : | character(len = *), intent(in), optional |
overwrite : | logical, intent(in), optional |
err : | logical, intent(out), optional |
場所 url に次元 dims を持った変数つまり GT_VARIABLE 型 の実体を作成し、それを第 1 引数 var にセットします。 Open されたものと同様、第1引数 var は後で必ず Close されなければなりません。
型 xtype を省略すると "float" と みなされます。既存変数があるとき失敗しますが、 overwrite == .true. であれば上書きして続行します。 (まだ overwrite の動作は保障されていません)。 dims の省略は 0 次元変数の設定を意味します。
作成の際にエラーが生じた場合、メッセージを出力してプログラムは 強制終了します。err を与えてある場合にはこの引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarcreate.f90#GTVarCreate
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
url : | character(len = *), intent(in) |
copyfrom : | type(GT_VARIABLE), intent(inout) |
copyvalue : | logical, intent(in), optional |
overwrite : | logical, intent(in), optional |
err : | logical, intent(out), optional |
変数 copyfrom と同じ次元、属性を持った変数を url に作成します。 必要ならば次元変数も複製されます。 copyvalue を .true. に指定すると値も複製されます。 作成された変数の ID は var に返されます。
既存変数があるとき失敗しますが、 overwrite == .true. であれば上書きして続行します。 (まだ overwrite の動作は保障されていません)。
作成の際にエラーが生じた場合、メッセージを出力してプログラムは 強制終了します。err を与えてある場合にはこの引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarcreatecopy.f90#GTVarCreateCopyC
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
url : | character(len = *), intent(in) |
length : | integer, intent(in) |
xtype : | character(len = *), intent(in), optional |
long_name : | character(len = *), intent(in), optional |
overwrite : | logical, intent(in), optional |
err : | logical, intent(out), optional |
場所 url に長さ length の自分自身を次元とする変数つまり GT_VARIABLE 型 の実体を作成し、それを第 1 引数 var にセットします。 Open されたものと同様、第1引数 var は後で必ず Close されなければなりません。
長さ length == 0 を指定するとその変数は可変長次元となります。 型 xtype を省略すると "float" と みなされます。既存変数があるとき失敗しますが、 overwrite == .true. であれば上書きして続行します。 (まだ overwrite の動作は保障されていません)。 dims の省略は 0 次元変数の設定を意味します。
次元変数は自動生成されることが多いため、変数名部を欠く指定に対しては 名前を自動生成します。
作成の際にエラーが生じた場合、メッセージを出力してプログラムは 強制終了します。err を与えてある場合にはこの引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarcreated.f90#GTVarCreateD
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
err : | logical, intent(out), optional |
変数 var の属性 name を削除します。
属性の削除時にエラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvardelattr.f90#GTVarDelAttr
Subroutine : | |
var : | type(gt_variable), intent(in) |
dimord : | integer, intent(in) |
err : | logical, intent(out) |
変数 var の次元 dimord を削除します。 次元対応表の順位を下げ有効次元数をデクリメントするだけなので、 当該次元がすでに縮退していれば、この操作のあとでも入出力が可能です。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvardeldim.f90#GTVarDelDim
Function : | |
result : | integer |
var : | type(gt_variable), intent(in) |
name : | character(len = *), intent(in) |
変数には複数の次元が所属します。次元は順序番号で識別されますが、 変数における次元の順序は入れ替えることもできるため、 変数に相対的短い名前で識別することが便利な場合もあります。 たとえば変数 filename?var に対して filename?var,dim=1 のような コンマ記法 (gtool4 netCDF 規約 の 「5.4 コンマ記法」参照) で用いられるものです。(NetCDF 変数 filename?varname に対する次元名 dim は filename?dim を指示するでしょうが、必ずしもそのような関係が成り立つとは限りません)
Dimname_to_Dimord 手続はこのような相対次元名から次元順序番号を与えます。 正当な番号は1以上であり、0以下の番号はエラーを示します。
Original external subprogram is gtdim_name2ord.f90#gtdim_name2ord
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
dimord1 : | integer, intent(in) |
dimord2 : | integer, intent(in) |
count_compact : | logical, intent(in), optional |
err : | logical, intent(out) |
変数 var の次元順序番号 dimord1, dimord2 のそれぞれに 対応する次元を入れ替えます。
count_compact に .true. を渡すと、縮退した次元も含めて 動作します。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarexchdim.f90#GTVarExchDim
Subroutine : | |
file : | character(len = *), intent(in) |
base : | character(len = *), intent(in) |
result : | character(len = *), intent(out) |
ファイル名 file と変数名 base から file@base を 作成して result に返す。 file が空文字の場合は gtool.nc がファイル名として代用され、 base が空文字の場合は tmp が変数名として代用される。
Original external subprogram is gtdatatmpnam.f90#GTDataTmpNam
Subroutine : | |
url : | character(len = *), intent(out) |
end : | logical, intent(out) |
あるファイル名 urlBase に依存する変数すべてを取得するには、 まず GTVarSearch(urlBase) (下記のサブルーチン) を呼び出し、 その後無限ループの中で GTVarSearch(url, end) を呼び出します。 そうすることで url に1つ1つの変数名が返ります。 end が真になったとき、すべての変数名を探索し終えたことになります。
use gt4f90io character(len = STRING) :: filename, varname logical :: end write(*,*) "Enter file name: " read(*,*) filename call GTVarSearch(filename) do call GTVarSearch(varname, end) if (end) exit write(*, *) trim(varname) enddo
Original external subprogram is gtvarsearch.f90#GTVarSearchNext
Subroutine : | |
urlBase : | character(len = *), intent(in) |
上記の GTVarSearch を参照してください。
Original external subprogram is gtvarsearch.f90#GTVarSearchInit
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout), optional |
stat : | integer, intent(out), optional |
変数 var に関するメモリ内のバッファと netCDF ファイルのディスク上の コピーとを同期します。var が与えられない場合、プログラム内で これまでに入出力した全てのファイルに関して同期がおこなわれます。
stat にはステータスが返ります。
Original external subprogram is gtvarsync.f90#GTVarSync
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
変数 var から value に数値データが入力されます。 value はポインタ配列であり、数値データのサイズに合わせた 配列サイズが自動的に割り付けられます。 Get は複数のサブルーチンの総称名であり、 1 〜 7 次元のポインタを与えることが可能です。 また value に固定長配列を与えることが可能な手続きもあります。 下記を参照してください。
value が既に割り付けられており、且つ入力する数値データと配列 サイズが異なる場合、エラー (コード dc_error#GT_EBADALLOCATESIZE) を生じます。原則的には value を空状態にして与えることを 推奨します。不定状態で与えることは予期せぬ動作を招く可能性が あるため禁止します。
数値データ入力や上記の割り付けの際にエラーが生じた場合、メッセージ を出力してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
入力しようとするデータの型が引数の型と異なる場合、データは引数の 型に変換されます。 この変換は netCDF の機能を用いています。 詳しくは netCDF 日本語版マニュアル の 3.3 型変換 を参照してください。
This subroutine returns multi-dimensional data to argument "value". You need to provide GT_VARIABLE variable to argument "var". If you provide logical argument "err", .true. is returned instead of abort with messages when error is occurred.
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble1
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal1
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble2
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal2
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble3
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal3
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble4
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal4
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble5
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal5
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble6
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal6
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:,:,:) : | real(DP), pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerDouble7
Subroutine : | |||
var : | type(GT_VARIABLE), intent(inout) | ||
value(:,:,:,:,:,:,:) : | real, pointer
| ||
err : | logical, intent(out), optional |
Original external subprogram is gtvargetpointernum.f90#GTVarGetPointerReal7
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(*) : | real(DP), intent(out) |
nvalue : | integer, intent(in) |
err : | logical, intent(out), optional |
変数 var から value に数値データが入力されます。 nvalue には配列長を代入する必要があります。
数値データ入力の際にエラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
入力しようとするデータの型が引数の型と異なる場合、データは引数の 型に変換されます。 この変換は netCDF の機能を用いています。 詳しくは netCDF 日本語版マニュアル の 3.3 型変換 を参照してください。
Get は複数のサブルーチンの総称名であり、 value にポインタ型の配列を与えることも可能です。上記の サブルーチンを参照してください。
Original external subprogram is gtvargetnum.f90#GTVarGetDouble
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(*) : | real, intent(out) |
nvalue : | integer, intent(in) |
err : | logical, intent(out), optional |
Original external subprogram is gtvargetnum.f90#GTVarGetReal
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
attrname : | character(len = *), intent(in) |
value : | integer, intent(out) |
default : | integer, intent(in), optional |
変数 var に付加されている属性 name の値を返します。 Get_Attr は複数のサブルーチンの総称名なので、 value には様々な型の変数 (ポインタも可能) を与えることが可能です。 以下のサブルーチンを参照してください。
属性の値が正常に取得できず、且つ default が与えられて いた場合、その値が返ります。 default が与えられない場合のデフォルトの値はそれぞれ以下の 通りです。
character : | "" (空文字) |
real : | netcdf_f77#NF_FILL_REAL |
real(DP) : | netcdf_f77#NF_FILL_REAL |
integer : | netcdf_f77#NF_FILL_INT |
value がポインタの場合は、型に依らず空状態が返ります。
value にポインタを与えた場合、属性の値に応じて自動的に 割り付けが行われます。そのため、必ず空状態にしてから与えてください。
value に固定長配列を用意する場合 default が必須になりますが、 これは Fortran の言語仕様上ポインタ方式と引用仕様が同じであっては ならないからです。
Original external subprogram is gtvargetattr.f90#GTVarGetAttrI
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
attrname : | character(len = *), intent(in) |
value : | real(DP), intent(out) |
default : | real(DP), intent(in), optional |
Original external subprogram is gtvargetattr.f90#GTVarGetAttrD
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
attrname : | character(len = *), intent(in) |
value : | real, intent(out) |
default : | real, intent(in), optional |
Original external subprogram is gtvargetattr.f90#GTVarGetAttrR
Subroutine : | |||
var : | type(GT_VARIABLE), intent(in) | ||
name : | character(len = *), intent(in) | ||
value(:) : | integer, pointer
|
Original external subprogram is gtvargetattr.f90#GTVarGetAttrIP
Subroutine : | |||
var : | type(GT_VARIABLE), intent(in) | ||
name : | character(len = *), intent(in) | ||
value(:) : | real(DP), pointer
|
Original external subprogram is gtvargetattr.f90#GTVarGetAttrDP
Subroutine : | |||
var : | type(GT_VARIABLE), intent(in) | ||
name : | character(len = *), intent(in) | ||
value(:) : | real, pointer
|
Original external subprogram is gtvargetattr.f90#GTVarGetAttrRP
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
name : | character(len = *), intent(in) |
value : | character(len = *), intent(out) |
default : | character(len = *), intent(in), optional |
Original external subprogram is gtvargetattrsc.f90#GTVarGetAttrCC
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
name : | character(len = *), intent(in) |
value(:) : | real(DP), intent(out) |
default : | real(DP), intent(in) |
Original external subprogram is gtvargetattr.f90#GTVarGetAttrDA
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
name : | character(len = *), intent(in) |
value(:) : | real, intent(out) |
default : | real, intent(in) |
Original external subprogram is gtvargetattr.f90#GTVarGetAttrRA
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
name : | character(len = *), intent(in) |
value(:) : | integer, intent(out) |
stat : | integer |
default : | integer, intent(in) |
Original external subprogram is gtvargetattr.f90#GTVarGetAttrIA
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
start(:) : | integer, intent(out), optional |
count(:) : | integer, intent(out), optional |
stride(:) : | integer, intent(out), optional |
変数 var に関して、 Slice によって設定された入出力範囲の情報を取得します。 全次元の入出力範囲について一括取得するため、 あらかじめ Inquire(var, alldims) して次元の数を確保 しなければなりません。
start, count, stride に関しては Slice を参照してください。
Get_Slice は 2 つのサブルーチンの総称名であり、 他にもある1つの次元に関して情報を取得する 方法もあります。下記のサブルーチンを参照ください。
Original external subprogram is gtvargetsliceall.f90#GTVarGetSliceAll
Subroutine : | |
var : | type(gt_variable), intent(in) |
dimord : | integer, intent(in) |
start : | integer, intent(out), optional |
count : | integer, intent(out), optional |
stride : | integer, intent(out), optional |
count_compact : | logical, intent(in), optional |
変数 var の dimord 番目の次元に関して、 Slice によって設定された入出力範囲の情報を取得します。
start, count, stride に関しては Slice を参照してください。
count_compact に .true. に指定すると、縮退された次元も 含んで問い合わせを行います。
Get_Slice は 2 つのサブルーチンの総称名であり、 他にも変数の依存する全ての次元に関して一括で情報を取得する 方法もあります。上記のサブルーチンを参照ください。
Original external subprogram is gtvargetslice.f90#GTVarGetSlice
Subroutine : | |||
var : | type(GT_VARIABLE), intent(in) | ||
growable : | logical, intent(out), optional
| ||
rank : | integer, intent(out), optional
| ||
alldims : | integer, intent(out), optional
| ||
allcount : | integer, intent(out), optional
| ||
size : | integer, intent(out), optional
| ||
xtype : | character(len=*), intent(out), optional
| ||
name : | character(len=*), intent(out), optional
| ||
url : | character(len=*), intent(out), optional
|
変数 var に関する問い合わせを行います。
返り値となる引数の文字型の実引数の長さが足りないと、 結果が損なわれます。引数の文字列の長さとして dc_types#STRING を用いることを推奨します。
Inquire は複数のサブルーチンの総称名であり、 問い合わせ方法は複数用意されています。 下記のサブルーチンも参照してください。
他にも変数に関する問い合わせのための手続きとして Get_Slice, Dimname_to_Dimord があります。
Original external subprogram is gtvarinquire.f90#GTVarInquire
Subroutine : | |||
var : | type(GT_VARIABLE), intent(in) | ||
allcount(:) : | integer, intent(out)
|
変数 var が依存する各次元の総数を返します。 allcount の配列のサイズは依存する次元の数だけ必要です。 依存する次元の数は上記の Inquire の alldims で調べることが できます。
Original external subprogram is gtvarinquire.f90#GTVarInquire2
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
attrname : | character(len=*), intent(in) |
xtype : | character(len=*), intent(out), optional |
変数 var の属性 attrname の値の型を xtype に返します。
Original external subprogram is gtvarinquire.f90#GTVarInquireA
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
dimord : | integer, intent(in) |
url : | character(len=*), intent(out), optional |
allcount : | integer, intent(out), optional |
変数 var の次元順序番号 dimord に対応する次元の URL url と総数 allcout を返します。
Original external subprogram is gtvarinquire.f90#GTVarInquireD
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
dimord : | integer, intent(in) |
start : | integer, intent(in) , optional |
count : | integer, intent(in) , optional |
stride : | integer, intent(in) , optional |
err : | logical, intent(out), optional |
変数 var 次元の入出力範囲を拘束します。 Limit を呼び出した後では Slice でその範囲の外に入出力範囲を 設定できなくなります。これにより、変数全体ではなく一部を Slice_Next サブルーチンを用いて走査できるようになります。
指定方法は、変数 var の dimord 番目の次元を基点 start, 格子総数 count 間隔 stride に限定します。 このあとでは、スライス指定の第1格子は start 番目の格子を 指示することになり、スライス指定での格子数は count 個を 越えることができなくなり、スライス指定で間引きなしを指定すると stride 個ごとの指定を指示することになります。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Limit は 2 つのサブルーチンの総称名であり、 他にも gtool4 netCDF 規約 の 「5.4 コンマ記法」を用いて指定することも可能です。 下記のサブルーチンを参照してください。
Original external subprogram is gtvarlimit.f90#GTVarLimit_iiii
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
string : | character(len = *), intent(in) |
err : | logical, intent(out), optional |
変数 var 次元の入出力範囲を拘束します。 Limit は 2 つのサブルーチンの総称名であり、 別の指定方法もあります。まずは上記のサブルーチンを参照してください。
指定方法は、string に gtool4 netCDF 規約 の 「5.4 コンマ記法」に述べられる範囲指定表現を用います。 凡例を以下に挙げます。
<dim>=<lower> <dim>=<lower>:<upper> <dim>=<lower>:<upper>:<stride>
ここで、<dim> は次元番号または次元名であり、 <lower>, <upper> は座標値または "^" を前置した格子番号です。 <stride> は格子数です。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarlimit.f90#GTVarLimit
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
source_var : | type(GT_VARIABLE), intent(in) |
dimord : | integer, intent(in) |
count_compact : | logical, intent(in), optional |
err : | logical, intent(out), optional |
既に開かれた変数 source_var の dimord 番目の次元にあたる変数を 開き var に格納します。順序 dimord は現在の入出力範囲が 幅1になっている (コンパクト化している) を飛ばした 順序であすが、count_compact に .true.を指定すると すべての次元のなかの順序になります。
Open された変数は必ず Close されなければなりません。
dimord == 0 の場合は変数自体を再度開きます。これは参照カウンタを 増加させる手段です。
Open は 2 つのサブルーチンの総称名であり、 変数 URL を直接指定することで開くことも可能です。 下記のサブルーチンを参照ください。
変数 URL にファイル名部を指定しない場合、gtool.nc であるとみなされます。
変数 URL にファイル名だけを指定した場合、開かれる変数は以下の規則 で選択されます。
Original external subprogram is gtvaropenbydimord.f90#GTVarOpenByDimOrd
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
url : | character(*), intent(in) |
writable : | logical, intent(in), optional |
err : | logical, intent(out), optional |
url で識別される gtool 変数を開き、var に格納します。 writable を .true. に指定すると書き込み可で開こうとします。 デフォルトは書き込み不可で開きます。 (まだ writable の動作は保障されていません)。
Open された変数は必ず Close されなければなりません。
エラーが発生した場合、引数 err が与えられる場合は err が .true. となって返ります。 引数 err を与えなければプログラムは停止します。
Open は 2 つのサブルーチンの総称名であり、 ある変数の次元を指定することで開くことも可能です。 上記のサブルーチンを参照ください。
上記の Open を参照してください。
Original external subprogram is gtvaropen.f90#GTVarOpen
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
変数 var へ数値データ value が出力されます。
数値データ入力の際にエラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
出力しようとするデータの型が var の型と異なる場合、データは var の 型に変換されます。 この変換は netCDF の機能を用いています。 詳しくは netCDF 日本語版マニュアル の 3.3 型変換 を参照してください。
Get は複数のサブルーチンの総称名であり、 value には 1 〜 7 次元の配列を与えることも可能です。 下記のサブルーチンを参照してください。
Original external subprogram is gtvarputnum.f90#GTVarPutDouble1
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal1
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble2
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal2
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble3
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal3
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble4
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal4
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble5
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal5
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble6
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal6
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:,:,:) : | real(DP), intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutDouble7
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
value(:,:,:,:,:,:,:) : | real, intent(in) |
err : | logical ,intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal7
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
value(nvalue) : | real(DP), intent(in) |
nvalue : | integer, intent(in) |
err : | logical, intent(out), optional |
変数 var へ数値データ value が出力されます。 nvalue には配列長を代入する必要があります。
数値データ出力の際にエラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
出力しようとするデータの型が var の型と異なる場合、データは var の 型に変換されます。 この変換は netCDF の機能を用いています。 詳しくは netCDF 日本語版マニュアル の 3.3 型変換 を参照してください。
Get は複数のサブルーチンの総称名であり、 value に多次元配列を与えることも可能です。上記の サブルーチンを参照してください。
Original external subprogram is gtvarputnum.f90#GTVarPutDouble
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
value(nvalue) : | real, intent(in) |
nvalue : | integer, intent(in) |
err : | logical, intent(out), optional |
Original external subprogram is gtvarputnum.f90#GTVarPutReal
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
value : | logical, intent(in) |
err : | logical, intent(out), optional |
変数 var に, 属性名 name とその値 value を付加します。
Put_Attr は複数のサブルーチンの総称名なので、 value には様々な型の変数を与えることが可能です。 以下のサブルーチンを参照してください。
引数に xtype を持つものは、その引数に型を指定することで、 引数 value には文字型を与えても、 整数型、実数型 (単精度、倍精度) の値を付加することが可能です。 下記のサブルーチンを参照ください。
エラーが発生した場合、引数 err が与えられる場合は err が .true. となって返ります。 引数 err を与えなければプログラムは停止します。
Original external subprogram is gtvarputattrchar.f90#GTVarPutAttrLogical
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
value(:) : | integer, intent(in) |
err : | logical, intent(out), optional |
まずは上記の Put_Attr (または GTVarPutAttrChar および GTVarPutAttrReal) を参照してください。
value は配列を受け取るので、スカラーを書き出すには Fortran の配列構成子 (/ … /) を使ってください。 たとえば、スカラー a から長さ 1 の配列 (/a/) を作ることができます。
Original external subprogram is gtvarputattrchar.f90#GTVarPutAttrInt
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
value(:) : | real(DP), intent(in) |
err : | logical, intent(out), optional |
まずは上記の Put_Attr (または GTVarPutAttrChar および GTVarPutAttrReal) を参照してください。
Original external subprogram is gtvarputattrchar.f90#GTVarPutAttrDouble
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
value(:) : | real, intent(in) |
err : | logical, intent(out), optional |
まずは上記の Put_Attr (または GTVarPutAttrChar および GTVarPutAttrReal) を参照してください。
Original external subprogram is gtvarputattrchar.f90#GTVarPutAttrReal
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
name : | character(len = *), intent(in) |
value : | character(len = *), intent(in) |
xtype : | character(len = *), intent(in), optional |
err : | logical, intent(out), optional |
まずは上記の Put_Attr (または GTVarPutAttrChar) を参照してください。
xtype に型を指定することで、引数 value には文字型を与えても、 整数型、実数型 (単精度、倍精度) の値を付加することが可能です。
xtype には与える文字列として、以下のものが有効です。 これら以外の場合は文字型の値が与えられます。
整数型 : | "INTEGER", "integer", "int" |
実数型 (単精度) : | "REAL", "real", "float" |
実数型 (倍精度) : | "DOUBLEPRECISION", "DOUBLE", "double" |
Original external subprogram is gtvarputattrchar.f90#GTVarPutAttrChar
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
err : | logical, intent(out), optional |
変数 var の内容を出力します。
Get と書式つき WRITE 文をあわせたような機能で、 変数 var の内容を標準出力 (正確には * で識別される装置) に印字します。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarputline.f90#GTVarPutLine
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
compatible : | type(GT_VARIABLE), intent(in), optional |
変数 var の入出力範囲を「適当に」小さくします。 compatible を指定すると、その変数と全く同じ入出力範囲に に指定します。
Slice は複数のサブルーチンの総称名であり、 他にも文字列や番号で指定する方法があります。 以下のサブルーチンを参照してください。
Slice に関連する手続きとして、Get_Slice と Slice_Next が あります。Get_Slice は設定された入出力範囲を取得します。 Slice_Next は入出力範囲を移動することによって、変数全体を読み取る ために利用するサブルーチンです。
Original external subprogram is gtvarsliceauto.f90#GTVarSliceAuto
Subroutine : | |
var : | type(GT_VARIABLE), intent(in) |
dimord : | integer, intent(in) |
start : | integer, intent(in), optional |
count : | integer, intent(in), optional |
stride : | integer, intent(in), optional |
変数 var の入出力範囲を指定します。
変数 var の dimord 番目の次元の入出力範囲を start から stride 個おきに count 個とします。start, count, stride のいずれを省略しても 1 が仮定されます。成功し たか否かを返す引数はありません。仮に指定できない範囲が指定さ た場合には、指定範囲を含むなるべく広い範囲を設定します。
Slice は複数のサブルーチンの総称名であり、 他にも文字列や番号で指定する方法があります。
Original external subprogram is gtvarslice.f90#GTVarSlice
Subroutine : | |
var : | type(GT_VARIABLE), intent(inout) |
string : | character(len = *), intent(in) |
err : | logical, intent(out) |
変数 var の入出力範囲を、string に応じて指定します。 string には gtool4 netCDF 規約 の 「5.4 コンマ記法」に述べられる範囲指定表現を用います。 凡例を以下に挙げます。
<dim>=<lower> <dim>=<lower>:<upper> <dim>=<lower>:<upper>:<stride>
ここで、<dim> は次元番号または次元名であり、 <lower>, <upper> は座標値または "^" を前置した格子番号です。 <stride> は格子数です。
現在 err は必ず .false. を返すことになっています。
Slice は複数のサブルーチンの総称名であり、 他にも文字列や番号で指定する方法があります。
Original external subprogram is gtvarslice.f90#GTVarSliceC
Subroutine : | |
var : | type(GT_VARIABLE), intent(in out) |
dimord : | integer, intent(in), optional |
err : | logical, intent(out), optional |
stat : | integer, intent(out), optional |
変数 var の dimord 番目の次元の start 値を stride * count 個だけ増やすことによって次元範囲を移動します。dimord を省略すると、どれかの次元についてこの操作を行います。成功した 場合 stat が 0 になリます。
いずれかの次元について start, stride 値が 1 になるような Slice を設定しておいて、Slice_Next を順次呼び出すと変数全体 を走査することができます。
入出力範囲を移動する際にエラーが生じた場合、メッセージを出力 してプログラムは 強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarslicenext.f90#GTVarSliceNext
Subroutine : | |
var1 : | type(GT_VARIABLE), intent(inout) |
var2 : | type(GT_VARIABLE), intent(inout) |
err : | logical, intent(out), optional |
変数 var1 の次元構成が var2 の次元構成と同じになるように 範囲拘束を行います。過剰な次元が var1 にある場合、隠蔽 を行います。(追加もできるようにする予定です)。
エラーが生じた場合、メッセージを出力 してプログラムは強制終了します。err を与えてある場合には の引数に .true. が返り、プログラムは終了しません。
Original external subprogram is gtvarlimitbinary.f90#GTVarXformBinary
Function : | |
result : | logical |
var1 : | type(GT_VARIABLE), intent(in) |
var2 : | type(GT_VARIABLE), intent(in) |
変数 var1, var2 を比較し、同値である場合は .true. を、 そうで無い場合は .false. を返します。
Original external subprogram is gtvarequivalent.f90#gtvarequivalent