4 FAQ (よくされる質問)

「境界値 $ V_n$ を場合分けを含む関数としたいが、 FreeFEM がプログラムを受け付けてくれません。どうすればいいですか?」

(FreeFEM ってしょうがないですね…) 例えば以下の2つの解決策がある。

(a)
弱形式には複数の int1d() が指定できるので、 境界 $ \Gamma=\rd\Omega$ $ \Gamma=\Gamma_{1}\cup\Gamma_{2}\cup
\Gamma_{3}\cup\cdots$ と分割して、 その部分 $ \Gamma_{j}$ ( $ j=1,2,3,\cdots$) ごとに (場合分けを含まない) 境界値 $ V_{nj}$ を与えるようにプログラムを書く。
 -int1d(Th,Gamma1)(Vn1)-int1d(Th,Gamma2)(Vn2)-int1d(Th,Gamma3)(Vn3)--…
(b)
例えば (x>1 && y>0) のような条件式は、条件が成り立つならば $ 1$, 成り立たないならば0という値を持つので、ifを使わずに、 式だけで場合分けを含む関数が記述できる。

次のサンプル・プログラム potential2d-2026.edp では、 (b) を用いているが、 ある程度以上複雑になった場合は、(a) を用いることを勧める。 付録の sample1.edp を見て下さい。



桂田 祐史