OneLab、もしくはGmsh/GetDPソフトウェアはベルギーのリエージュ大学のChristophe Geuzaine教授らが中心となって開発が続けられている、オープンソースの有限要素法の求解システムである[3]。 Gmshは2次元、3次元のプリ・ポストプロセッサで、有限要素法の非構造格子を生成することが出来、また簡略的に計算結果も表示することができる。プリプロセッサ、いわゆるモデラーとしては、市販のものに比べるとかなり見劣りがするが、最新版では、OpenCASCADE[4]エンジンも使われるようになって実用性が高まった(らしい)。
GetDPはテキストベースのスクリプトファイル(拡張子はpro)を入力し、その命令に従って有限要素法によって離散化し、Petscなどの連立一次方程式(Linear System)ソルバを使って求解するようになっている。 つまり、Gmshで形状の定義と、計算領域や境界の区分、番号付けを行い、GetDPでは、それらのID番号を受けて、計算領域などを指定し、支配方程式を指定して数値解を求める、という流れとなる。
具体的な利用の流れは以下の通りである。
Gmshが基本的にHuman Machine Interfaceになっている。
%>
gmsh foo.geo
とすることで、gmshの形状定義スクリプトがfoo.geoに格納される。
GmshからGetDPを呼ぶことが出来る。 その時には、
%>
gmsh foo.pro
とし、Gmshのウィンドウにある「Run」ボタンをクリックすることで、メッシュ生成からポスト処理まで実行される。 この時、Geometryファイルは、foo.geoという名称である必要がある。
また、getdpはコマンドラインからも実行させることが出来る。 この時は、オブションをコマンドラインオプションとして指定することができる。 また、.geo、.proファイルに選択メニューがある場合は、インタラクティブに処理することが出来る。
Gmsh/GetDPの特徴としては、以下の項目が当てはまるだろう。 Gmshについては以下の通りである。
- Pros
-
- モデリングの様子は3次元可視化されることにより確認できる。
- テキストベースなので、カット&ペーストなど、テキストエディタで編集することが出来る。
- メッシュに対し、位相幾何学的な手法で、計算領域内に条件を満たした境界を簡単に作成できる(ホモロジー)。
- Tree Cotree Gaugeに対応している。
- Cons
-
- 境界や領域に対し、ID番号を指定して区別するが、形状が複雑化すると確認しづらい。
- Gmshで形状の定義に数字を使うので、直接編集するときには番号を付け直さなければならない。
- グラフィック上でコピー&ペーストができない。
GetDPについては以下の通りである。
- Pros
-
- Whitneyの基本要素をサポートしている。
- 数学的な表記法を用いているので、支配方程式の弱形式との親和性が高い。
- 電磁気学的問題に対してのサポートがしっかりしている。
- Cons
-
- 流体力学などに必要な要素には対応していない(現在の所)。
- エラーが出ても詳しい情報が手に入らない。
- 有限要素法の知識が求められる。
市販のソフトウェアにおける直感的な使いやすさ、エラーが起きたときの親切なメッセージなどは望むべくもないが、オープンソースなので、頑張れば突き止めることは可能かもしれない。 情報交換の場として、開発者の主催するメーリングリストがあるが、全ての質問には答える工数がないのらしく、半分ほどに答えてくれている。 2017年の9月6日に開発者の一人、Patrick Dularさんが亡くなったのも弱冠の懸念事項かもしれない。
OneLabのサイトではたくさんの例題が上げられているが、複雑すぎて分かりづらい。 そこで、ここではできるだけ簡略化されたモデルを中心に説明していく。 質問、感想などは、Three Wellsのフォーラムにいれていただければ、出来るだけ答えたいと思う。
habe at 3wells-computing.com