学術会合報告
『ソフトウェアセミナー:FreeFem++による有限要素プログラミング -上級編-』に参加して
2016年09月16日
内海 晋弥
うちうみ しんや
早稲田大学大学院 基幹理工学研究科
2016年6月4日と5日に早稲田大学西早稲田キャンパスにて,日本応用数理学会主催による『FreeFem++による有限要素プログラミング -上級編-』が開催された.講師の鈴木厚氏(大阪大学)により,並列計算を行う領域分割法に関する理論とそれを実現するFreeFem++のソースコードが解説された.本講演の講演資料とのソースコードは鈴木氏のwebページに掲載されている.入門編,中級編と合わせて参照されたい.
- Finite element programming by FreeFem++ — advanced course
- Finite element programming by FreeFem++ — intermediate course
- Introduction to finite element computation by FreeFem++
– towards numerical simulation of fluid flow problems
FreeFem++はパリ第6大学Jacques-Louis Lions研究所のグループが中心となって開発している,有限要素法を用いて偏微分方程式の数値計算を行うためのソフトウェアである.複雑なプログラムコードを書くこと無しに,数学的表記に近い言葉で有限要素計算の手続きを記述できることが1つの特長である.これまでにも本ソフトの開発者の一人である大塚厚二氏によって関連のセミナーが行われていた(その開催報告).鈴木氏によるセミナーは,最近では上記の通り3回行われているが,ここでは「上級編」についての報告を行う.FreeFem++の解説を行っている和書『有限要素法で学ぶ現象と数理』(大塚厚二,高石武史著,共立出版,2014.その書評)の第3.3節の後に続く内容である.
2日間の中心的な話題は領域分割法とそのFreeFem++での実装法である.1日目はPoisson問題の有限要素計算から始められ,重なりがある部分領域への分割を使ったSchwarzのアルゴリズムと,それを連立一次方程式に対する反復解法の前処理として用いる方法が解説された.2日目は重なりのない部分領域への分割を使ったBNN前処理やFETI法が解説された.また,FreeFem++外部の機能を取り入れるダイナミックローディングが解説された.これによって四面体メッシュを生成するTetGenや部分領域への分割を行うMETISなどのプログラム,数値計算ライブラリ内の連立一次方程式ソルバーを読み込むことができる.さらに,並列計算のためのMPI関数を使ったプログラムの注意点が説明された.
逐次計算と比較すると並列計算や部分領域への分割は敷居が高いが,本セミナーによって知ったFreeFem++のプログラムコードと関連のソフトウェア内の機能を使えば手が出しやすいものになると感じた.プログラムを組む苦労の大部分が取り除かれて,アイデアに集中できると思う.FreeFem++の高度な利用法が広まれば,偏微分方程式の大規模な計算例が豊富に生まれるようになり,情報交換が活発になり現象の理解が深まることが期待される.鈴木氏は上記webページで多くのソースコードを公開していて,それらをそのまま実行するだけでも多くの発見があり,パラメータや領域を変えるだけでも観察できることが多い.
参加者の間では活発な議論が行われていた.本講演ではPoisson問題を扱っていたが,他の問題の中にはまだ研究課題が残されているという話が講演者からあった.また,これからもFreeFem++の適応事例が報告される場が設けられるという話が参加者からあった.報告者も是非そのような場に参加したいと思った.