gt4f90ioリファレンスマニュアル - 手続名のリスト

変数構成写像機能
(リミット、次元の加除)

2004年11月17日 森川 靖大


概要

変数 (gt_variable 型) は順序の決まった次元集合をもちます。それぞれの次元には決まった長さがあり、1から長さまでの番号で識別される格子からなっています。しかしながら、必要に応じて変数がもつ次元の順序を入れ替えたり、次元が存在しないようにみせかけたり、各々の次元の長さを変えたり格子番号を付け替えたりできます。

書式

次元番号と範囲を指定して拘束

subroutine Limit(var, dimord, start, count, stride, err)
    type(GT_VARIABLE), intent(inout):: var
    integer, intent(in)             :: dimord
    integer, intent(in),  optional  :: start, count, stride
    logical, intent(out), optional  :: err
end subroutine

変数 var の dimord 番めの次元を基点 start 格子総数 count 間隔 stride に限定します。このあとでは、スライス指定の第1格子は start 番目の格子を指示することになり、スライス指定での格子数は count 個を越えることができなくなり、スライス指定で間引きなしを指定すると stride 個ごとの指定を指示することになります。

次元番号と範囲を文字列で指定して拘束

subroutine Limit(var, string, err)
    type(gt_variable),  intent(in):: var
    character(len = *), intent(in):: string
    logical, intent(out), optional:: err
end subroutine

コンマ記法で書かれた文字列から、任意個の次元に関する拘束を行います。

他の変数と同じ範囲に拘束

subroutine Transform(var1, var2, err)
    type(GT_VARIABLE), intent(inout)        :: var1, var2
    logical,           intent(out), optional:: err
end subroutine

var1 の構成が var2 と同じになるように次元構成を並べ替え、範囲拘束を行います。過剰な次元が var1 にある場合、隠蔽(追加もできるようにする予定)を行います。

変数に次元を追加

subroutine add_dim(var, dimord, dimvar, err)
    type(GT_VARIABLE), intent(in) :: var
    type(GT_VARIABLE), intent(in) :: dimvar
    integer,           intent(in) :: dimord
    logical,           intent(out):: err
end subroutine

次元写像表を拡張し、指定された次元変数 dimvar の URI を登録したあとで有効次元数を増やす。当該次元が縮退していなければ入出力は禁止されるため、Limit(var1, var2) で使うためにしか役に立たなくなる。

変数から次元を削除

subroutine del_dim(var, dimord, err)
    type(GT_VARIABLE), intent(in) :: var
    integer,           intent(in) :: dimord
    logical,           intent(out):: err
end subroutine

次元写像表の順位を下げ有効次元数をデクリメントする。当該次元がすでに縮退していれば、この操作のあとでも入出力が可能である。