8.1 buildmesh()

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

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

border C(t=0,2*pi) { x=cos(t); y=sin(t); }

int C0=1;
border Gamma1(t=0,pi)    { x=cos(t); y=sin(t); label=C0; }
border Gamma2(t=pi,2*pi) { x=cos(t); y=sin(t); label=C0; }

border C1(t=0,1) { x=t; y=0; }
border C2(t=0,1) { x=1; y=t; }
border C3(t=0,1) { x=1-t; y=1; }
border C4(t=0,1) { x=0; y=1-t; }

mesh Th1=buildmesh(C(50));
mesh Th2=buildmesh(Gamma1(25)+Gamma2(50));
mesh Th3=buildmesh(C1(20)+C2(20)+C3(20)+C4(20));

plot(Th1,wait=true,ps="Th1.eps");
plot(Th2,wait=true,ps="Th2.eps");
plot(Th3,wait=true,ps="Th3.eps");

図 1: C(50)
\includegraphics[width=4cm]{fig/Th1.eps}
図 2: Gamma1(25)+Gamma2(50)
\includegraphics[width=4cm]{fig/Th2.eps}
図 3: C1(20)+C2(20)+...
\includegraphics[width=4cm]{fig/Th3.eps}

有限個のJordan閉曲線で囲まれた多重連結領域を三角形分割することもできる。
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}



桂田 祐史