10.5 サンプル・プログラム

testplot.edp

// testplot.edp --- plot() の使い方を試す

// メッシュを描く
int m=20;
mesh Th=square(m,m,[-1+2*x,-1+2*y]);
plot(Th,wait=1);

// [return] で次のプロット
// p        で以前のプロット

// 等高線を描く
//  N で本数を増やせる
//  n で本数を減らせる
//  f で塗りつぶしのOn/Off
//  3 で2D/3Dの切り替え

func real f(real x, real y)
{
  // ここは色々複雑なことが書ける。
  return 1.0;
}

func u=x*x-y*y;
func v=2*x*y;
// plot(f); // plot() は func を描画できない。範囲指定がないので当たり前。

fespace Vh(Th,P1);
Vh fh,uh,vh;
// fh=f; // f() は代入できない
uh=u;
vh=v;
// 等高線
plot(uh,wait=1);    // plot() は fespace のオブジェクトは描画できる
plot(uh,vh,wait=1); // plot() は2つのオブジェクトを同時に描画できる

// 鳥瞰図
real [int] levels =-1.0:0.01:1.0;
plot(uh,dim=3,viso=levels,fill=true,wait=true);

// ベクトル場を描く
plot([uh,vh],wait=1);

load "plotPDF"  // without semicolon
plotPDF( "foobar", Th, uh);



桂田 祐史