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