偏微分方程式の数値解法には、 差分法 (finite difference method, FDM) と有限要素法 (finite element method, FEM) という二大手法があります。
有限要素法は、 解析学の世界でスタンダードとなっている弱解の方法を応用したもので、 微分方程式の弱定式化の議論とほぼ並行した形で近似解の議論がなされ、 数学者になじみやすいものです。 また有限要素法は、 プログラムの自動生成がしやすいという特徴を持っています1。 このため、従来から、 プログラムを自動生成するシステムを開発する試みが色々なされてきました。
FreeFem++ は、 パリ第6大学 J. L. Lions 研究所の Frédéric Hecht, Oliver Pironneau, A. Le Hyaric, 広島国際学院大学の大塚厚二氏らが開発した、 2次元, 3次元問題を有限要素法で解くための、 一種の PSE (problem solving environment) で、 http://www.freefem.org/ff++/ からソースコード、 マニュアル (400ページ超, 幸い英文)、 主なプラットホーム (Windows, Mac, Linux) 向けの 実行形式パッケージが公開されています。
FreeFem++ では、 ユーザーが境界曲線を指定することで定義した2次元領域に対して、 自動的に三角形要素分割を生成し、 弱形式により記述された問題に対して、 種々の有限要素(関数)空間を用いて弱解を求め、 可視化することが可能になっています (最近では3次元領域の問題も解けるようになっているようですが、 筆者はそれについてほとんど知らないので、 言及するのを止めておきます。)。
問題の領域や弱形式などは専用の言語で記述した短いプログラム (ものによっては 20〜30 行程度) として与え、 内部で C++ のコードに変換し (千行程度になる?)、それをコンパイル、 実行することでシミュレーションを行います。
すべての問題がこのソフトで扱えるわけではありませんが、 扱える問題は結構幅広く、その場合は、 C 言語のようなプログラミング言語で一からプログラムを書くのに比べて、 桁違いに短い時間でシミュレーション実行までたどり着けます。
最近、 大塚・高石「有限要素法で学ぶ現象と数理―FreeFem++」 共立出版 (2014) という解説書が出版され、 そのサポートサイト 「有限要素法で学ぶ現象と数理」 が出来ました。 有益な情報が日本語で得られるようになりました。