有限要素法で学ぶ現象と数理−FreeFem++数理思考プログラミング (共立出版)のサポートサイトです.掲載したサンプルコードはここ からダウンロードできます.

基本事項

全体に影響する記号(対応する本書で使う記法も併記)
//行末
`//'から行末まではコメント文(日本語可)
/*文*/
`/*'と`*/'で囲まれた文章はコメント文(日本語可)
"
`"'で囲まれた部分は文字リテラル(日本語不可)
{;}
命令は“;”で区切られ,変数の寿命は{}の中
x, y, z
3次元問題で参照している座標
x, y
2次元問題で参照している座標
P
現在の位置を表し,座標はP.x,P.y,P.z
label
現在の位置が境界上なら境界番号を戻す
region
現在の位置が領域内なら領域番号を戻す
N
境界上の外向き単位法線ベクトル(N.x,N.y,N.z)
true
ブール代数の真
false
ブール代数の偽
pi
π円周率(倍精度16桁)
i
虚数5+iは5+1i.出力は(5,1)となる.
基本の型と配列(ベクトル) 検証法はプログラム例[calculus.edp]参照
int
整数 4バイト整数
real
実数 倍精度浮動小数
complex
複素数 ペアになった実数型.例:complex zz=3+4i;
int[int]
整数の配列 例:int[int] a(5); 配列確保
real[int]
実数の配列 ベクトル.例:real[int] x=[1., 2.5]確保と代入
real[int,int]
実数の2重配列 行列.例:real[int,int] A(3,4)
complex[int]
複素数の配列 複素数ベクトル.例:complex[int] zz=[1,2+3.4i]
string
文字列 "で囲んだ文字リテラルに日本語不可
int[string]
連想配列 例:int[string] a; a["ffempp"]=2001;

数学関数

初等関数
平方根 sqrt(x)/べき乗 x^a/三角関数 sin(t),cos(t),tan(t)
逆三角関数 asin(t),acos(t),atan(t)/双曲線関数 sinh(t),cosh(t),tanh(t)
座標→角度 atan2(y,x)-πからπの値を戻す/指数関数 exp(x)/自然対数 log(x)
常用対数 log10(x)
数の操作
天井関数 ceil(x) (実数xに対してx以上の最小の整数(切り上げ)
床関数 floor(x) (実数xに対してx以下の最大の整数(切り捨て))
四捨五入 rint(x) (xに近い整数)
実部 real(ζ) (複素数ζの実部)/ 虚部 imag(ζ) (複素数ζの虚部)
偏角 arg(ζ) (複素数ζの偏角)/ 共役複素数 conj(ζ) (ζ=a+biならば conj(ζ)はa-bi)
特殊関数
第1種ベッセル関数 j0(x), j1(x), jn(n,x) (0次,1次,n次ベッセル関数)
第2種ベッセル関数 y0(x), y1(x), yn(n,x) (0次,1次,n次ベッセル関数)
ガンマ関数 tgamma(x), lgamma(x) (ガンマ関数値Γ(x)ln|Γ(x)|)
誤差関数 erf(x)/ 相補誤差関数 erfc(x) (=1-erf(x))

演算 (FreeFem++の計算された数値解は,たとえば記号 u で表される.これを「有限要素関数」と呼ぶことにする.
+ (対象) 数,文字列,(有限要素)関数,ベクトル,行列
- (対象) 数,(有限要素)関数,ベクトル,行列
* (対象) 数,(有限要素)関数,ベクトル,行列
/ (対象) 数,(有限要素)関数,ベクトル
合成
( ) (対象)(有限要素)関数.例exp(u^2+3*sqrt(x)),uは有限要素関数

ベクトルと行列

ベクトルと行列での演算等 a={a1,a2}は列ベクトル,b=(b1,b2)は行ベクトルで表す.
ここには,付録Aの全てを書く予定ですが,以下は未完です.

FreeFem++の関連情報

FreeFem++のサンプルコードは examples++[-分類]となっている.その分類は次のようになっている.
分類なし マニュアルにある基本的なサンプル.
3d 3次元問題のサンプル.
chapt3 O.Pironneau教授によるサンプル.その内容は Introduction to Scientific Computingにある第3章をFreeFem++に書き直したものを中心に,適宜追加した内容となっている.
eigen 固有値問題のサンプル.
mpi MPIによる並列計算例.
other examples++-other に格納されているサンプルコード.
tutorial マニュアルに掲載されたプログラム例が中心になっている.
load FreeFem++の本体に無い機能を追加するためのサンプル.
なお,本書でFreeFem++のサンプルを引用する場合は tutorial/a_tutorial.edp のように記述する.