格子点で与えられた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)にします.
Z (実数型) MX×NYの2次元配列. 作画には NX×NYの部分を使う. MX (整数型) 配列 Zの第1次元整合寸法. NX (整数型) 作画に使う配列 Zの第1次元寸法. NY (整数型) 作画に使う配列 Zの第2次元寸法.
PROGRAM U2D1 PARAMETER( NT=51, NZ=21 ) PARAMETER( TMIN=0, TMAX=5, ZMIN=20, ZMAX=50 ) PARAMETER( DT=(TMAX-TMIN)/(NT-1), DZ=(ZMAX-ZMIN)/(NZ-1) ) REAL U(NT,NZ) *- データ -- DO 10 J=1,NZ Z = (J-1)*DZ UZ = EXP(-0.2*Z)*(Z**0.5) DO 20 I=1,NT T = (I-1)*DT - 2.*EXP(-0.1*Z) U(I,J) = UZ*SIN(3.*T) 20 CONTINUE 10 CONTINUE *- グラフ -- WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL SGPWSN READ (*,*) IWS CALL GROPN( IWS ) CALL GRFRM CALL GRSWND( TMIN, TMAX, ZMIN, ZMAX ) CALL USPFIT CALL GRSTRF CALL USSTTL( 'TIME', 'YEAR', 'HEIGHT', 'km' ) CALL USDAXS CALL UDCNTR( U, NT, NT, NZ ) CALL GRCLS ENDPROGRAM U2D1