作成: 2001-05-06 (書きかけ) / 微更新: 2002-07-12
基本的には、 適当なプログラミング言語(FORTRANなど)で 場のデータを作成し、 それをGNUPLOTで読み込んで図示することになる。 ただし、場がスカラー場であって しかも簡単な式で書けるような場合には、 データを作成しなくても GNUPLOTで直接作図することができる。
スカラー場を描くには、FORTRANか何かでデータファイルを作成し、 それをGNUPLOTのsplotコマンドによってグラフ化する。
たとえば
ψ = cosx sinhyを図示したいとしよう。 そのための具体的な手順を、演習室の場合に即して説明すると、 以下のようになる。
まずXを起動し、 ktermを2つ開いておく(1つはFORTRAN用で、もう1つがGNUPLOT用)。 次に、FORTRAN用のktermで、 たとえばpsi01.fのようなプログラムを 書いて実行する。 すなわち
% mule psi01.f &のような手順をふむことにより、 psi01.dat というデータファイルができる(ただし、これは 一例に過ぎないので、ファイル名などは適当に変えてかまわない)。 データファイルの冒頭部分を
% f77 psi01.f -o psi01
% ./psi01 > psi01.dat
% head psi01.datとして表示させてみると、基本的に
x y psiというデータ形式になっていることが分かる。 ただし、#で始まる行はコメント行(注釈行)であり、 データには影響しない。
データファイルを作成したら、もうひとつのktermでGNUPLOTを起動し、
splot 'psi01.dat'のように入力すると、 z = psi(x,y) のグラフを鳥瞰図として表示してくれる。
なお、今の例のように 場の形が簡単な関数で書ける場合は
psi(x,y) = cos(x)*sinh(y)のように関数形をGNUPLOTに直接入力し、
splot psi(x,y)のようにして描画することもできる。 領域(x,y)を制限したい場合や、 データ点の個数を増やしたい場合は、
set isosamples 50;のようにして調整すればよい。
splot [-5:5][0:3] psi(x,y);
鳥瞰図ではなく、(x,y)平面上の等値線として表示したい場合は、まず
set view 0,0; set noztics; # XY面のみ表示のような設定をGNUPLOTに入力し、 そのあとで splotコマンドを実行する。 設定を解除するには resetコマンドを用いる。 等高線の本数を増やすには
set nosurface; # 等値面を面として表示しない
set contour base; # 等値面をXY面に表示
set cntrparam levels auto 10などとする。
まず、ベクトル場 (u,v) = ( u(x,y), v(x,y) ) のデータファイルを
x y u vの形式で用意する。 たとえば、次のようなプログラムを実行してみよう:
(u, v) = ( A sinx cosy, B cosx siny )のデータを出力する FORTRANプログラム(vect01.f):
% f77 vect01.f -o vect01
% ./vect01 > vortex.dat
% ./vortex.pl > vortex.dat※ スクリプトというのは簡易プログラムのことで、 FORTRANプログラムなどと違ってコンパイルが不要である。
データファイルを作成したら、別のkterm上でGNUPLOTを起動し、
plot 'データファイル名' with vectorのようにしてみよう。 矢印のたくさん描かれている図が表示されたら、 ひとまず成功である。
どうしてもうまくいかない場合は、 GNUPLOTのバージョンが古いということが考えられるので、 起動時のメッセージを確認してみよう。 もしも ver.3.5 以下なら、 ベクトル場の描画がサポートされていない可能性がある。
描画した結果を見ると、矢印の長さが長すぎたり、 縦横の縮尺がおかしかったりするかもしれない。 そのへんの調整をするには、
xmin = -3.0; xmax = 3.0 ;のように いろいろオプションをつければよい。 (もちろん、 タイトルは内容に応じて変えること! いくら例にあるからといって、 titleを「Rankine渦」にしたままで 図を提出するのは、はっきり言ってまぬけである。 また「題名に偽りあり」ということにもなる。)
ymin = -2.5; ymax = 2.5 ;
set size ratio (ymax-ymin)/(xmax-xmin);
adj = 0.8; # 矢印の長さの調整: 次の行を見よ
plot [xmin:xmax] [ymin:ymax] 'vortex.dat' \
using 1:2:(adj*$3):(adj*$4) title "Rankine vortex" with vector