6 メッシュ buildmesh(), readmesh(),...

メッシュはかなり奥が深い。少し「変わったこと」をしようと思うと、 マニュアル5章を読むことになると思われる。


buildmesh() を使ってメッシュを作ることが出来る。

mesh 名前 = buildmesh(境界の名前(分割の指定));

mesh Th = buildmesh(C(50));

mesh Th = buildmesh(a(50)+b(-30));
sampleMesh.edp
border a(t=0,2*pi){ x=cos(t); y=sin(t);label=1;}
border b(t=0,2*pi){ x=0.3+0.3*cos(t); y=0.3*sin(t);label=2;}
plot(a(50)+b(+30),wait=true,ps="border.eps");
mesh ThWithoutHole = buildmesh(a(50)+b(+30));
mesh ThWithHole	= buildmesh(a(50)+b(-30));
plot(ThWithoutHole,wait=1,ps="Thwithouthole.eps");
plot(ThWithHole,wait=1,ps="Thwithhole.eps");

\includegraphics[width=0.32\textwidth]{eps/border.eps} \includegraphics[width=0.32\textwidth]{eps/Thwithouthole.eps} \includegraphics[width=0.32\textwidth]{eps/Thwithhole.eps}

sqaure() $ [0,1]\times[0,1]$
mesh Th = square(10,10);

実は square() で長方形 $ [a,b]\times[c,d]$ も分割できるようで、

mesh Th = square(m, n, [a+(b-a)*x,c+(d-c)*y])
とすれば良い。
// [1,3]×[2,5] を 20×30 分割
mesh Th = square(20,30, [1+2*x, 2+3*y]);
plot(Th);
図 1: [1,3]×[2,5] を 20×30 分割
\includegraphics[width=10cm]{eps/rectangle.eps}

なお、square() で作ったメッシュは、 下の辺、右の辺、上の辺、左の辺 (反時計回り) の順に 1, 2, 3, 4 というラベルがつけられている。


作ったメッシュは savemesh() を使ってファイルに保存出来る。
savemesh(Th, "Th.msh");

readmesh() を使ってメッシュをファイルから読み込むことが出来る。
mesh Th = readmesh("mymesh.sh");

region パラメーターとは?



Subsections
桂田 祐史
2018-01-17