第6話 H1勾配法の登場とその背景 その1「形状最適化」
前回までの4回の記事で、ノンパラメトリック最適化の難しさとその解決法としての \(H^{1}\) 勾配法の位置付けについて解説しました。 ここからは、\(H^{1}\) 勾配法が具体的にどのような方法なのか解説していきます。
\(H^{1}\) 勾配法は当初、形状最適化だけに適用されていて「力法」と呼ばれていました。 さらに、その力法に先立って提案されていた形状最適化の方法が「成長ひずみ法」です。 \(H^{1}\) 勾配法や力法は、数学的ないくつかの概念に基づいて説明されることが多いので、エンジニアの方には難解なのですが、成長ひずみ法は非常に直感的で分かりやすい方法でした。 この記事ではまず成長ひずみ法の解説から始めます。
動物の骨や植物の幹、枝、茎等は、力学的に合理的な形状をしているように見えます。 例えば、植物の枝は先端が細くて根元に近いほど太くなっています。 枝に作用する自重や外力によって生じるモーメントは根元に近いほど大きくなりますから、それに耐え得る断面係数を稼ぐためだと考えれば、枝の形状はとても合理的で、ある意味で最適化された形状だと言えます。 人間の背骨も同様で、頚椎や胸椎よりも荷重が大きく作用すると考えられる腰椎の方が明らかに太くて断面積の大きな形になっています。
特に人間の骨については様々な観点で研究されていますが、少なくとも骨の成長には何らかの力学的な因子が関与していることは、経験的にも間違いないでしょう。 「宇宙飛行士の骨量は減少する」とか「適度に運動する方が骨の成長が速い」と言われることからも分かります。 このような生物の成長の過程を計算機上で模擬することによって、最適な形状を得ようとする方法が成長ひずみ法です。
成長ひずみ法では、応力の高い部分は大きくなり、応力の低い部分は小さくなると仮定します。 有限要素モデルさえあれば、応力は有限要素法によって計算できます。 それに加えて、応力に応じて「大きくなる」「小さくなる」という挙動も温度差による熱膨張や収縮として模擬すれば、これも有限要素法で計算することができます。 さらに熱膨張や収縮の結果として起こる形状変化を成長の一段階だと考えて、有限要素モデルを更新します。 これも各節点の座標に熱膨張、収縮で計算された変位を足せば良いので、簡単に自動化できます。 つまり、有限要素モデルの更新も含めて、全ての過程を計算機上で自動的に行うことができるのです。
まとめると、成長ひずみ法は次のような手順になります。
- 予め与えられた境界条件(外力、拘束条件等)で生じる応力を有限要素法で解析する。
- 1. の応力に応じて各部に膨張や収縮(初期ひずみ)を与え、その時の変形を有限要素法で解析する。
- 2. で得られた変位を節点座標に足すことで、有限要素モデルを更新する。
- 1. に戻る。
この成長ひずみ法は、エンジニアの方にも受け入れやすいのではないでしょうか。 応力が大きい部分は太く厚くしてより大きな荷重に耐えるようにしつつ、応力の小さい部分は細く薄くして材料の無駄を減らすことで、全体として軽くて強い構造にしようとするのは、実際の設計では常套手段と言えます。 それをある意味で自動化した方法と言えます。
また、成長ひずみ法を使うと「波打ち現象」に悩まされることもありません。 成長ひずみは、わざわざ 2. の手順を踏んで有限要素モデルを更新する、という所に特徴があるのですが、実は 2. の手順を踏むことで波打ち現象を回避していたことが、後になって理論的に明らかになりました。 この特徴は、力法あるいは \(H^{1}\) 勾配法にも踏襲されることになります。
2. の手順において、「応力」の具体的な値として、Mises 応力や主応力等が採用されました。 また、応力以外にも主ひずみやひずみエネルギー密度(応力とひずみの積)等も考えられます。 研究者の立場から言えば、どの値を採用すればより良い形状が得られるのか、興味深いところではありますが、逆に言えば、どの値を使うべきか明確で無いところに理論的な物足り無さを感じます。
成長ひずみ法は、現在でもバイオメカニクスの分野で骨の成長シミュレーションの方法として利用されていますが、構造物の形状最適化手法という観点ではまだ理論的に不十分でした。 成長ひずみ法を理論的に正確に修正したものが「力法」です。
力法では、成長ひずみ法で曖昧だった「応力」の代わりに「感度」を使って形状を変化させます。 詳細はこの連載の中で順を追って解説していきますが、感度は目的・制約関数の微分ですから、目的・制約関数毎に一意に求めることができます。 例えば、OPTISHAPE-TS でお馴染みの「コンプライアンス」の感度は、大雑把に言えばひずみエネルギー密度そのものになりますから、有限要素法で計算することができます。
また、成長ひずみ法のように各部が熱膨張、収縮するような解析の変わりに、表面を法線方向に(静水圧のように)押したり引張ったりするような解析を行います。 この修正は理論的に出てきたもので、一見分かり難いのですが、形状の変化は本質的に「表面の各点を法線方向に移動させることによって生じるもの」だと考えると、直感的にも納得できるのではないでしょうか。
力法の手順をまとめると、次のようになります。
- 有限要素法で感度を解析する。
- 感度に比例して各部の表面を垂直方向に押したり引張ったりする荷重を与え、その時の変形を有限要素法で解析する。
- 2. で得られた変位を節点座標に足すことで、有限要素モデルを更新する。
- 1. に戻る。
「力法」というネーミングは、2. の手順でわざわざ表面に垂直な「力」をかけた時の変位を求める解析を行うことに由来します。 実際、力法以前の形状最適化では感度に比例して節点を直接移動させようとしていました。 その結果、波打ち現象に苦しめられたのです。 力法では 2. の手順を踏むことで波打ち現象を避けることができたのです。
ちなみに力法は、英語の場合「Traction Method」と呼ばれます。 時々、なぜ「Force Method」と呼ばないのか、という質問がありますが、有限要素法の一種で日本語で「応力法」と呼ばれる方法が既に英語圏では「Force Method」と呼ばれていたことから、それとの重複を避けるために「Traction Method」になったようです。
*****
次回は、トポロジー最適化における \(H^{1}\) 勾配法について解説していきます。
★ご意見・ご感想はこちらへ★
https://www.quint.co.jp/cgi-bin/qrepo-impr.cgi