8.2.1 udcntr

1.
機能
2次元等高線図を描く(内部で用意した作業領域を使う).
2.
呼び出し方法
NumRu::DCL.udcntr(z)
3.
パラメーターの説明
z (R) mx X nyの2次元配列. 作画には nx nyの部分を使う.
mx (I) 配列 zの第1次元整合寸法.
nx (I) 作画に使う配列 zの第1次元寸法.
ny (I) 作画に使う配列 zの第2次元寸法.
4.
備考
(a)
作業配列の大きさの制約から配列Zの大きさは 1語のビット長がnbのとき
(NX+2)×(NY+2)×2/NB+11000
でなければならない. nbglpget/glpsetの管理する 内部変数'NBITSPW'を参照する. 普通この値は32である (「MATH1」のマニュアル参照). もしもこの制限を越える大きさの配列を用いて作画したいときは, 作業領域をユーザーが指定するメソッド(元サブルーチン)udcntz (次節参照)を用いるとよい.
(b)
X方向の格子点の座標が uwsgxa (11.2.1節参照)または uwsgxb (11.2.2節参照) によって設定されていない場合, sgqwndでウインドウ情報を 取得し ウインドウのuxmin, uxmaxnx-1等分するような 格子点を設定する.
(c)
Y方向の格子点の座標が uwsgya (11.2.1節参照)または uwsgyb (11.2.2節参照) によって設定されていない場合, sgqwndでウインドウ情報を 取得し ウインドウのuymin, uymaxny-1等分するような 格子点を設定する.
(d)
コンターを引くレベルの値がUDGCLA, UDGCLBまたは udsclvによって設定されていない場合, 次のメソッド(元サブルーチン)を内部で呼んで 約nlev本のコンターレベルを設定する.
NumRu::DCL.udgclb(z,dx)
nlevudpget/udpsetの管理する 内部変数'NLEV'が参照する値である (初期値は12). (以下, 特に断らない限り, 単に「内部変数」というのは udpget/udpsetの管理する 内部変数のことをさす. )
(e)
コンターを引くアルゴリズムの制約から, 格子点の値は どのコンターレベルの値とも等しくてはならない. もしもそのような格子点値があると内部で微小量が修正される (その際メッセージが出力される).
(f)
GLpGET/GLpSETの管理する内部変数'LMISS'.true.なら欠損値処理をおこなう. (その際, 参照する欠損値は glpget/glpsetの管理する 内部変数'RMISS'である. ) .false.なら欠損値処理をおこなわない. くわしくは「MATH1」のマニュアル参照.
(g)
コンタリングの前にすべての格子点値のチェックをおこなう. 次の2つの場合コンタリングはおこなわずその旨メッセージが出力される. さらに内部変数'LMSG'.true.のときグラフの下部マージンにもメッセージを書く. .false.のときメッセージを書かない (初期値は.true.). 2つの場合とは:
  • すべての格子点が欠損値のとき(missing field).
  • すべての格子点が同一な値のとき(constant field).
(h)
内部変数'LMSG'.true.で引くべきコンターレベルの数が2本以上あるとき, 実数型のメソッド(元関数)return_value = NumRu::DCL.rudlev(nlev) (8.2.8節参照)を呼んで 第1コンターレベルの値(CZL1)と第2コンターレベルの値(CZL2)の差 (CZL2-CZL1)をグラフの下部マージンに書き出す. これらのメッセージは, 地図投影変換以外が設定されているとき, uzpackが管理する情報を使って書く. したがって, このような場合は, まず座標軸を描いた後で udcntrを呼ぶべきである. いっぽう, 地図投影変換が設定されているとき, 下部マージンの真中に書く.