これも1980年発行という古い本。sasaburoさんに紹介されて読んでみた。具体的な弾性体力学を扱っていた「有限要素法入門」とは対照的に、抽象的な数学を用いて一般的な微分方程式を解く手法として有限要素法を説明している。これによって色んな物理現象を有限要素法で解くことが出来る。本書は大学で学ぶ解析学や線形代数の知識を前提にしているので「有限要素法入門」と比べると少し敷居が高いかも知れない。
明解な論理で、洗練されており、無駄がない。そのため密度が高くページ数の割に内容が濃い。まるで良く出来た教科書のような素晴らしい良書。
#概要
この本は最初の敷居がなかなか高めだと思う。最初から多次元に一般化されたPoisson方程式の境界値問題が出てくる。そんなに難しいことを言っているわけではないのだが、有限要素法に具体的なイメージを持っているとこの抽象的な入り方に少し戸惑ってしまうかもしれない。直後に弱形式や変分原理が出てくる。物理の問題でいうところの仮想仕事の原理や最小作用の原理を一般化したもの。これは有限要素法の基礎となる重要な概念なのだが自分にとってはこのあたりの理解が最も難しかった。最初の30ページぐらいがこの本の山場だと思う。逆に言えばここさえしっかり理解すればあとはそれほど難しい概念は登場しない。
次はRitz-Galerkin法の説明となる。弱形式や変分原理で表した線形微分方程式を近似的に解く手法である。このために解となる関数をある適当な基底関数群の和で表す。要するにTaylor展開やFourier展開を一般化したようなものである。それぞれの基底関数についての重み係数が満たす式を連立方程式で表し、それを解けば元の微分方程式の解が得られる。連立方程式は行列で表現し、コンピュータで機械的に解くことが出来るので、このやり方はコンピュータと相性が良い。
次はついに有限要素法の解説。有限要素法は要するにRitz-Glerkin法の一種である。最も簡単なものでは基底関数群としてシンプルな山形関数を使う。結果としてこれは微分方程式の解を折れ線グラフで近似したと言える。この方法だと1次元だろうと2次元だろと3次元だろうと計算したい領域を適当に分けて分けた領域である有限個の「要素」についての行列をいくつも作り、それらを組み合わせた大きい行列を作るという非常に機械的な方法で解くべき行列が作れる。
あとは微分方程式が変わったり、次元が増えたり、基底関数の次数を増やしたり、要素の形を変えたりしたときの説明が続く。しかしこれは多少式が複雑になるというだけで基本的な考え方は何も変わらない。最初に基礎を乗り越えておけば大部分の問題について同じように適用できる。これが抽象化された数学の素晴らしい点である。
#本書の特徴
本書も前回の「有限要素法入門」も同じ入門書なのに、全然アプローチが違うのが面白い。本書は物理屋には少し敷居が高いが数学の得意な人にとっては入りやすいかも。
また演習問題もバランス良く入っていて大変良い。ある程度自分で手を動かして計算することで理解が深まる。これを読む人はぜひ全問解いてみて欲しい。
ここで扱っている問題は単純なケースだが考え方は広く適用できて汎用性がある。時間を含まない2階の線形微分方程式の3次元解析プログラムであれば何でも作れそう。ただし3次元は計算よりも入力や表示を実装するのが面倒かも知れない。
#有限要素法プログラムを改良してみた
本書で新たに学んだことではないのだが、前回作った2次元弾性解析プログラムを少し変更して、GUIで自作したメッシュを読み込めるようにしてみた。こういう不規則で自由な形状に簡単に対応できるのが有限要素法の強み。
コードはGitHubに置いた。
https://github.com/MhageGH/FEM-exmaple