鈴木 厚
表記研究部会の活動として, 井出 貴範氏(アイシン・エィ・ダブリュ株式会社)の企画により 2016年2月11日(木), 12日(金)と6月4日(土), 5日(日)に開催された有限要素法ソフトウェアパッケージFreeFem++の講習会で講師を勤める機会をいただいた. 昨年2015年2月に開催された大塚 厚二教授(広島国際学院大学)による "FreeFem++で学ぶ現象と数理" につづく講習会である.
FreeFem++はO. Pironneau教授(パリ第六大学(ピエールマリーキュリー大学), J.-L.リオンス研究所, 以下 JLL研究所)が考案し(Pascal言語によって作られたMacFemが起源), 現在はF. Hecht教授(JLL研究所)によって開発がおこなわれている有限要素法記述言語であり, LGPLライセンスによって公開されている. FreeFem++は有限要素メッシュの生成, 離散化行列の線形ソルバーおよび可視化の一式を網羅しているため, ユーザーは数理モデルの構築, 時間発展の離散化, 非線形問題の解法に専念にできる. 弱形式の離散化プロセスを専用の C++言語に似た文法を持つスクリプト言語とデータ構造で記述するところが, 通常の専用あるいは汎用有限要素解析ソフトウェアとの大きな違いであり, 自由度が極めて高い. その反面, ソフトウェアを使いこなすためには有限要素法の数学的知識とスクリプト言語記述の知識が必要になる. マニュアルには種々の数理モデルを解くための, 数多くの例題がスクリプトと共に解説されている.
中級編では, 流れ問題の記述法を目的として, 大塚教授による解説書[1]の内容を補完しながら, 非圧縮性を取り扱うための混合法, 定常流れ場を求める非線形解法のためNewton法, 時間発展流れのための特性曲線有限要素法, またFreeFem++の目玉の機能である解適合格子の利用方法を解説し, 熱対流問題の時間発展の数値的定常解を非線形反復の初期値として計算する手法を紹介した. 特に非線形連立方程式では, Newton反復での行列の取り扱いが必要となるため, FreeFem++による剛性行列の記述方法と, 線形ソルバーの明示的利用法にも焦点をあてた.
上級編では大規模計算の実行に必要となる並列計算のためのアルゴリズムである領域分割法をFreeFem++のスクリプトを介して紹介した.領域分割法は1990年代に並列計算機の利用をめざして研究が始まった. 弱形式の離散化後の剛性行列を解くKrylov部分空間法の前処理として用いるものと, 分割された部分問題を解き, 部分領域の間の内部境界に自由度に縮約するものの二種に大別できる. 前者は部分領域に重なりのあるadditive Schwarz法, 後者は部分構造反復法の前処理付き改良版であるBDD法, あるいはFETI法が代表的な手法である. F. Nataf教授(JLL研究所)らによるモノグラフ[2]に解説されているMETISグラフ分割ソフトを用いた重なりのある領域分割を生成するFreeFem++スクリプトをもとに, またFETI法スクリプトを新規に用意し, これらの3種類のアルゴリスムを比較した. 分散並列環境での実行で必要となるMPIライブラリーによるデータ転送の記述方法も紹介した.
中級編は筑波大学 東京キャンパス文教校舎で行われ, アカデミック/学生の方/企業の方の内訳は8/5/14の合計27名, 上級編は早稲田大学 西早稲田キャンパスで行われ, 同内訳4/1/13の合計18名の参加を頂いた. 企業の方の参加を多く頂いたことは有限要素計算の産業での利用が期待されていること示していると思われる.
中級編と上級編の講習講習会資料(スライドPDFとスクリプト)は http://na.cs.tsukuba.ac.jp/acmi/?p=403 より入手できる.
最後に, それぞれの講習会で, 会場と講習会資料の印刷を提供いただいた, 櫻井 鉄也先生と高橋 大輔先生に感謝いたします.
[1] 有限要素法で学ぶ現象と数理 -- FreeFem++ 数理思考プログラミング --,
大塚 厚二, 高石 武史, 共立出版, 2014, ISBN 4320019539
[2] An Introduction to Domain Decomposition Methods Algorithms,
-- Theory, and Parallel Implementation --,
Victorita Dolean, Pierre Jolivet, Frédéric Nataf, SIAM, 2015, ISBN 1611974054
すずき あつし
大阪大学 サイバーメディアセンター
[Article: G1608B]
(Published Date: 2016/09/16)