サブルーチン名は、6文字以内という制限のため多少直観的にわかりにくい点もありますが、一応分類にしたがって命名しています。描画範囲を全範囲として分割方法を自動としたものが引数が少く、いろいろ手動設定するとそれに伴って引数が増えます。引数の順序はリストを参考にしてください。
(1)サブルーチン名と引数の分類
ngcc1s
|||
描画範囲
|||- a : 全範囲
|||_ s : 範囲指定 (i1,j1,i2,j2,msk)
||
integer i1,j1,i2,j2 : 配列の添字が (i1,j1)-(i2,j2) の領域
||
を描画する。
||
ingeger nmsk(nx,ny) : マスク配列。nmsk(i,j)=0 の部分のみ描
||
画する。
||
||
等高線値や色分けする値の分割方法
||__ 1 : 最小最大値間を等間隔で分割
(nc)
|
2 : 最大最小値間を等比率で分割 (nc)
|
(最小値が 0 以下のときは公比 0.5 )
|
3 : 等間隔で分割 (nc,zmin,dz)
|
4 : 等比率で分割 (nc,zmax,ratio)
|
5 : 配列でテーブルを与えて分割 (nc,zc)
|
integer nc : 等高線のレベルの数、色分け塗り潰
|
しの場合は nc-1 レベルになる。
|
real zmin,dz : 等差分割のときの初項
(zmin) と公
|
差 (dz>0)
|
real zmax,ratio : 等比分割のときの初項 (zmax>0)と
|
公比 (0<ratio<1)
|
real zc(*) : 等高線の値の配列。
|
大きさ引き継ぎ配列です。
|___ c : カラー等高線
(データフォーマット)
カラー等高線のサブルーチンでは座標データは、等高線の示すレベル
ごとに別々のファイルに出力されます。Ngraph で作図するときはスク
リプトでファイルごとに色を設定することでカラー等高線を描きます。
m : モノクロ等高線 (データフォーマット)
モノクロ等高線のサブルーチンでは、一つのデータファイルにすべて
のレベルの等高線の座標データが出力されます。
f : カラー塗り分け (データフォーマット)
カラー塗り分けのサブルーチンは、描画領域を矩形に分けてその中心
における値を補間して求めて、その値のが属するレベルに対応する
データファイルにその矩形の対角の点の座標を出力します。
Ngraph で作図するときはスクリプトでそれぞれのファイルの矩形を
異なる色で塗り潰すことによって色分けします。
共通の引数
integer
nd : 出力装置番号
character*80 fname
: 出力ファイル名のプリフィックス
fname.part : ファイルや凡例の設定を
補助する Ngraph スクリプト。
fname.dat : モノクロの場合の等高線の
座標ファイル(lineデータ)。
fname.n : カラーの場合の各レベル
(n=1,2,...) の等高線の座標
ファイル(lineデータ)。
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny) : 格子点の位置の配列(整合配列)
real
z(nx,ny) : 等高線を描きたい値の配列(整合配列)
(2)サブルーチンリスト
カラー(レベル別)等高線
subroutine ngcc1a(nd,fname,nx,ny,x,y,z,nc)
subroutine ngcc1s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk)
subroutine ngcc2a(nd,fname,nx,ny,x,y,z,nc)
subroutine ngcc2s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk)
subroutine ngcc3a(nd,fname,nx,ny,x,y,z,nc,zmin,dz)
subroutine ngcc3s(nd,fname,nx,ny,x,y,z,nc,zmin,dz,i1,j1,i2,j2,nmsk)
subroutine ngcc4a(nd,fname,nx,ny,x,y,z,nc,zmax,ratio)
subroutine ngcc4s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk,zmax,ratio)
subroutine ngcc5a(nd,fname,nx,ny,x,y,z,nc,zc)
subroutine ngcc5s(nd,fname,nx,ny,x,y,z,nc,zc,i1,j1,i2,j2,nmsk)
モノクロ等高線
subroutine ngcm1a(nd,fname,nx,ny,x,y,z,nc)
subroutine ngcm1s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk)
subroutine ngcm2a(nd,fname,nx,ny,x,y,z,nc)
subroutine ngcm2s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk)
subroutine ngcm3a(nd,fname,nx,ny,x,y,z,nc,zmin,dz)
subroutine ngcm3s(nd,fname,nx,ny,x,y,z,nc,zmin,dz,i1,j1,i2,j2,nmsk)
subroutine ngcm4a(nd,fname,nx,ny,x,y,z,nc,zmax,ratio)
subroutine ngcm4s(nd,fname,nx,ny,x,y,z,nc,zmax,ratio,i1,j1,i2,j2,nmsk)
subroutine ngcm5a(nd,fname,nx,ny,x,y,z,nc,zc)
subroutine ngcm5s(nd,fname,nx,ny,x,y,z,nc,zc,i1,j1,i2,j2,nmsk)
色分け塗り潰し
subroutine ngcf1a(nd,fname,nx,ny,x,y,z,nc,ires,jres)
subroutine ngcf1s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk,ires,jres)
subroutine ngcf2a(nd,fname,nx,ny,x,y,z,nc,ires,jres)
subroutine ngcf2s(nd,fname,nx,ny,x,y,z,nc,i1,j1,i2,j2,nmsk,ires,jres)
subroutine ngcf3a(nd,fname,nx,ny,x,y,z,nc,zmin,dz,ires,jres)
subroutine ngcf3s(nd,fname,nx,ny,x,y,z,nc,zmin,dz,i1,j1,i2,j2,nmsk,ires,jres)
subroutine ngcf4a(nd,fname,nx,ny,x,y,z,nc,zmax,ratio,ires,jres)
subroutine ngcf4s(nd,fname,nx,ny,x,y,z,nc,zmax,ratio,i1,j1,i2,j2,nmsk,ires,jres)
subroutine ngcf5a(nd,fname,nx,ny,x,y,z,nc,zc,ires,jres)
subroutine ngcf5s(nd,fname,nx,ny,x,y,z,nc,zc,i1,j1,i2,j2,nmsk,ires,jres)
(3)依存関係
各等高線ルーチンは互いに独立ではなく、ngcc1s は ngcc3s を呼び出し、ngcc3s は ngcc5s を呼び出し、さらに ngcc5s は ngc0s を呼び出すというような依存関係があります。これらの関係を下に図示します。
ngcc1s -- ngcc3s --
|
ngcc2s -- ngcc4s -- ngcc5s
--
|
ngcm1s -- ngcm3s --
|
| |
ngcm2s -- ngcm4s -- ngcm5s
-- ngc0s --
|
ngcc1a -- ngcc3a --
|
|
|
ngcc2a -- ngcc4a -- ngcc5a
-- |
| |
ngcm1a -- ngcm3a --
| |
| |
|
ngcm2a -- ngcm4a -- ngcm5a
-- ngc0a -- ngtcl
ngcf1s -- ngcf3s --
|
ngcf2s -- ngcf4s -- ngcf5s
-- ngcf0s
ngcf1a -- ngcf3a --
|
ngcf2a -- ngcf4a -- ngcf5a
-- ngcf0a
一番下位の等高線ルーチンは ngtcl (ng2d trace coutour line) はある初期点から始まった等高線上の点列を追跡して出力するものです。ngc0s および ngc0a は、一つのレベルの等高線に関して領域全体にわたって初期点を変えながら ngtcl を呼び出します。ngc0s と ngc0a では一度等高線が通過した領域と未通過の領域を区別するために作業用の配列を使用します。さらに上位の ngcc5s, ngcm5s,... などでは設定された各等高線のレベルごとに ngc0a, ngc0s を呼び出します。ngcc3s, ngcc4s,... では、等高線のレベルを等差分割または等比分割的に設定して ngcc5s,... などを呼び出します。ngcc1s, ngcc2s,... は最大値最小値から分割レベルを設定します。
カラーベクトル (データフォーマット)
ベクトルの成分を u,v,w とすると、カラーベクトルのサブルーチンは
w の値に応じてベクトルを塗り分ます。具体的には、w
の値に応じて
異なるデータファイルのベクトル (u,v) を示す矢印の始点と終点の座
標を出力します。Ngraph で描画するときはスクリプトでそれぞれの
データファイルの矢印に異なる色を設定してカラーベクトル分布図を
描きます。
ngac1s
||
描画範囲
||- a : 全範囲
||_ s : 範囲指定
(i1,j1,i2,j2,msk)
|
integer i1,j1,i2,j2 : 配列の添字が (i1,j1)-(i2,j2) の領域
|
ingeger nmsk(nx,ny) : マスク配列。msk(i,j)=0 の部分のみ描
|
画する。
|
|
ベクトルを色分けするときの値(w(nx,ny))の分割方法
|__ 1 : 最小最大値間を等間隔で分割
(nc)
2 : 最大最小値間を等比率で分割 (nc)
3 : 等間隔で分割 (nc,wmin,dw)
4 : 等比率で分割 (nc,wmax,ratio)
5 : 配列でテーブルを与えて分割 (nc,wc)
integer nc
: 色分けの分割数(nc-1)
real wmin,dw : 等差分割のときの最小値と間隔(初項と公差)
real wmac,ratio : 等比分割のときの最大値(初項と公比)
real wc(*)
: 分割する値のテーブル、大きさ引き継ぎ配列
モノクロベクトル (データフォーマット)
ベクトル成分を u, v とすると、モノクロベクトルサブルーチンは
ベクトルを示す矢印の始点と終点の座標を出力します。
ngama
|_ a : 全範囲
|_ s : 範囲指定
(i1,j1,i2,j2,msk)
integer i1,j1,i2,j2 : 配列の添字が (i1,j1)-(i2,j2) の領域
ingeger msk(nx,ny) : マスク配列。msk(i,j)=0 の部分のみ描
画する。範囲指定
共通の引数
integer
nd : 出力装置番号
character*80 fname
: 出力ファイル名のプリフィックス
fname.part : ファイルや凡例の設定を補助する
Ngraph スクリプト。
fname.dat : モノクロの場合のベクトルの座標
ファイル(arrow)。
fname.n : カラーの場合の各レベル
(n=1,2,...)
毎のベクトルの座標ファイル(arrow)。
fname_ref.part : 凡例として使用するリファレンスベクトル
を表示するスクリプト
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny) : 格子点の位置の配列
(整合配列)
real u(nx,ny),v(nx,ny) : ベクトル成分の配列(整合配列)
real
w(nx,ny) : ベクトルの色で表示される値の配列(整合配列)
(カラーのときのみ)
real
fac : ベクトルを描くときの倍率
real
ref : 凡例として使用するリファレンスベクトルの大きさ
integer
id,jd : i 方向、j 方向のステップ間隔。格子をid個、jd個
に一個描画する。
(2)サブルーチンリスト
モノクロベクトル
subroutine ngama(nd,fname,nx,ny,x,y,u,v,fac,ref,id,jd)
subroutine ngams(nd,fname,nx,ny,x,y,u,v,fac,ref,id,jd,i1,j1,i2,j2,nmsk)
カラーベクトル
subroutine ngac1a(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc)
subroutine ngac1s(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,i1,j1,i2,j2,nmsk)
subroutine ngac2a(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc)
subroutine ngac2s(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,i1,j1,i2,j2,nmsk)
subroutine ngac3a(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wmin,dw)
subroutine ngac3s(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wmin,dw,i1,j1,i2,j2,nmsk)
subroutine ngac4a(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wmax,ratio)
subroutine ngac4s(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wmax,ratio,i1,j1,i2,j2,nmsk)
subroutine ngac5a(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wc)
subroutine ngac5s(nd,fname,nx,ny,x,y,u,v,w,fac,ref,id,jd,nc,wc,i1,j1,i2,j2,nmsk)
(3)依存関係
ngac1a -- ngac3a --
|
ngac2a -- ngac4a -- ngac5a -- ngaca
|
- ngac2
ngac1s -- ngac3s --
|
ngac2s -- ngac4s -- ngac5s -- ngacs
|
- ngac1
ngacs, ngaca はw(i,j)が指定された範囲の値になるようなベクトルの座標を出力します。ngac1,ngac2 はw(i,j)が指定された値となるベクトルを出力します。ngac5a,ngac5sは配列で与えられた各レベルの範囲に対して ngaca, ngacs を呼び出します。
(1)指定した点(xx,yy) における z の値 zz を補間して求める。
subroutine ngvala(nx,ny,x,y,z,xx,yy,zz,i,j,eps)
: 全範囲
subroutine ngvals(nx,ny,x,y,z,xx,yy,zz,i,j,eps,i1,j1,i2,j2,nmsk)
: 指定範囲
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny)
: 格子点の位置の配列 (整合配列)
real
z(nx,ny) : 補間したい値の配列
real
xx,yy : 補間したい点の座標
real
zz : 補間値(output)
integer
i,j : (xx,yy)含む格子の番号
real
eps : 微係数評価時の格子サイズの打ち切り値
integer
i1,j1,i2,j2 : 評価する範囲
integer
msk(nx,ny) : 0 : マスク配列。msk(i,j)=0 の格子のみ評価する。
(2)指定した点 (xx,yy) を含む格子の番号を返す。
subroutine ngij(nx,ny,x,y,i1,j1,i2,j2,xx,yy,ii,jj)
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny)
: 格子点の位置の配列 (整合配列)
integer
i1,j1,i2,j2 : 評価する範囲
real
xx,yy : 補間したい点の座標
integer
ii,jj : (xx,yy)含む格子の番号
(ii,jj に予想値を入れて呼び出すとサーチが高速になる。)
(3)枠線の座標を出力する。(データフォーマット)
subroutine ngfrma(nd,fname,nx,ny,x,y)
: 全範囲
subroutine ngfrms(nd,fname,nx,ny,x,y,i1,j1,i2,j2,nmsk)
: 指定範囲
integer
nd : 出力装置番号
character*80
fname : 出力ファイル名のプリフィックス
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny)
: 格子点の位置の配列 (整合配列)
integer
i1,j1,i2,j2 : 評価する範囲
integer
msk(nx,ny) : 0 : マスク配列。msk(i,j)=0 の格子のみ評価する。
(4)格子線の座標を出力する。(データフォーマット)
subroutine ngrida(nd,fname,nx,ny,x,y)
: 全範囲
subroutine ngrids(nd,fname,nx,ny,x,y,i1,j1,i2,j2,nmsk)
: 指定範囲
integer
nd : 出力装置番号
character*80
fname : 出力ファイル名のプリフィックス
integer
nx,ny : 配列の大きさ
real x(nx,ny),y(nx,ny)
: 格子点の位置の配列 (整合配列)
integer
i1,j1,i2,j2 : 評価する範囲
integer
msk(nx,ny) : 0 : マスク配列。msk(i,j)=0 の格子のみ評価する。
(5) 配列の最小値、最大値を返す。
subroutine ngrnga(nx,ny,x,xmin,imin,jmin,xmax,imax,jmax)
subroutine ngrngs(nx,ny,x,xmin,imin,jmin,xmax,imax,jmax,
i1,j1,i2,j2,nmsk)
integer
nx,ny : 配列の大きさ
real
x(nx,ny) : 評価する配列
real
xmin : 最小値
integer
imin,jmin : 最小値の格子番号
real
xmin : 最大値
integer
imin,jmin : 最大値の格子番号
integer
i1,j1,i2,j2 : 評価する範囲
integer
msk(nx,ny) : 0 : マスク配列。msk(i,j)=0 の格子のみ評価する。
(6)文字列の長さを返す。
integer function nglen(s)
character*80 s
: 文字列
character*80 型の変数 s の最初の空白の位置を返します。
(7)自然数を文字列に変換する。
subroutine ngsti(n,s)
integer
n : 自然数
character*80 s
: 文字列
123 を '123' に変換する。
(8) カラーマップを作成する。
subroutine ngclm(nc,red,green,blue)
integer
nc : 色数
integer red(nc),green(nc),brue(nc)
: RGB各成分の輝度(0〜255)
最大値-赤、中間値-緑、最小値-青 となるような色数 nc のカラーテーブルを作成する。
(9) Ngraph用スクリプトの出力
subroutine ngslin(nd,fname,zval,ir,ig,ib,ileg,ix,iy)
:
line
タイプのスクリプト
subroutine ngsrec(nd,fname,zval1,zval2,ir,ig,ib,ileg,ix,iy)
:
rectangle_fill
タイプのスクリプト
subroutine ngarws(nd,fname,zval1,zval2,ir,ig,ib,ileg,ix,iy)
arrow
タイプのスクリプト
integer
nd : 出力装置番号
character*80
fname : 設定するデータファイル名
real zval,zval1,zval2
: 凡例として設定する数値
integer
ir,ib,ig : 色
integer
ileg : 1 : 凡例あり, 0 : 凡例なし
integer
ix,iy : 凡例の位置
(10) Ngraph用 大きさ参照ベクトルの出力
subroutine ngsarw(nd,fac,ix,iy,ref)
integer
nd : 出力装置番号
real
fac : ベクトルの長さの倍率
integer
ix,iy: 表示する位置
real
ref : 参照用ベクトルの大きさ