おまかせ二次元図

この章では,2次元データA(x,y)をグラフ化します.Aがスカラーなら同じ 値のところを結ぶ等高線図(コンター・プロット)になり,Aが2次元のベクト ルならば矢印を用いた「流れ図」となります.これらの場合,作画範囲 (x,y) は自分で把握できているので,ウインドウは自分で陽に設定し,コン ターや矢印を「おまかせ」で描くことにします.

等高線図

格子点で与えられた2次元のスカラーデータを手早く等高線図で描きたいとい うときには,サブルーチン UDCNTR を呼びます(U2D1). UDCNTR ルーチンは等高線を描くだけですから,まず正規化変換を設定します. ウインドウはGRSWND ルーチンで[TMIN,TMAX][ZMIN,ZMAX]([0,5][20,50])と陽に設定 しますが,ビューポート( [0.2,0.8][0.2,0.8])と変換関数番号(1: 直角一様座標)は括弧内の初期値を用いるので,USPFIT ルーチンを呼び, さらに GRSTRF ルーチンでこれらを確定しています.

次に,USSTTL ルーチンで座標軸タイトルの情報を与え,USDAXS ルーチンでおまかせの座標軸を描きます.

そして,最後に UDCNTR ルーチンを呼んで等高線を描きます.現在設定 されているウインドウいっぱいに等間隔の格子点が設定されて,コンタリング が行なわれます.つまり,座標軸の目盛に関係なく,U(1,1) が左下隅, U(NT,NZ) が右上隅にくるように等間隔の格子点座標が設定されます. コンターレベルは自動的に決定され,図の下にそのコンター間隔が表示されま す.UDCNTR の引数の2番目以降で配列の寸法を指定しますが,第1次元 寸法を2度指定するのは,配列の一部分だけを作画できるようにするためです. この例のようにデータ全部を描く場合は,2番目の引数と3番目の引数を同じ (NT)にします.

u2d/u2d1.f


u2d1.f: frame1

トーン付き等高線図

サブルーチン UETONE を呼ぶだけで,とりあえず負の領域にトーンをつ けることができます.次のプログラム例 U2D2 は,U2D1 の結果 に加えて,負の領域に斜線のハッチをつけます.ここで,24行めで SGLSET ルーチンを呼んで,トーンに関する論理型内部変数 'LSOFTF'.TRUE. に設定しています.これを .FALSE.(初期値)で描く と,出力装置によっては先に描かれた図形が消えてしまうことがあります. 'LSOFTF' の設定を変えたり,UETONE を呼ぶ順序を USDAXS の前にしたりして,結果がどのようになるか確かめてみましょう.ま た,この例では,ビューポートを陽に設定して長方形にしている点にも注意し て下さい.

u2d/u2d2.f


u2d2.f: frame1

ベクトル場

今度は,2次元のベクトル場を手早く矢印で描きたいというときの例題です. 次のプログラム U2D3 は簡単な変形場を描くものですが,サブルーチン UGVECT 1つを呼ぶだけで十分です.前節の等高線図の場合と同様に,お まかせの座標軸を描画したあとで UGVECT ルーチンを呼んでベクトル場 を描いています.

この例でも,等間隔の格子点を設定して,それぞれの格子点でのベクトルを矢 印で表現します.おまかせ描画のときには,ベクトルの長さが格子点間隔を越 えないようにスケーリングファクターが決定され,それを乗じてベクトルが描 かれます.この場合,x 成分とy 成分のスケーリングファクターは同じに なっていて,図の下部マージンにはその値が表示されています.

u2d/u2d3.f


u2d3.f: frame1

トーン付き等高線とベクトル場の重ね書き

最後にトーン付の等高線図とベクトル場を重ね書きした例を示します(U2D4). UGVECT, UDCNTR, UETONE のサブルーチンを順 に呼んでいます.ここでは,UESTLVルーチンでトーンをつけるレベルと パターンを指定しています.

u2d/u2d4.f


u2d4.f: frame1


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:12:35 EDT 1995