感度解析
理論と物理
感度解析とは
先生、感度解析って何ですか?
設計変数の微小変化が目的関数にどの程度影響するかを定量化する。最適化の「方向」を決定するための情報。
感度の計算方法
| 方法 | 計算コスト | 精度 |
|---|---|---|
| 有限差分法 | 設計変数の数×FEM回数 | 近似(ステップサイズ依存) |
| 解析的感度(直接法) | 1回のFEM+追加計算 | 厳密 |
| 随伴法(Adjoint) | 1回のFEM+1回の随伴解析 | 厳密。設計変数が多いとき最効率 |
随伴法が最も効率的ですか?
トポロジー最適化のように設計変数が数万個の場合、随伴法は1回の追加計算で全変数の感度を得られる。有限差分法だと数万回のFEMが必要。
まとめ
感度解析の随伴法(Adjoint法)はFox & Kapoor(1968)
構造最適化の感度計算に使われる「随伴法(Adjoint method)」はFox & Kapoor(1968年、AIAA)が振動問題の固有値感度として最初に定式化した。随伴法の革命的な点は設計変数の数N_dに関わらず感度計算コストが一定(O(1))になることで、数千設計変数の問題でも効率的に感度を求められる。この特性が現代のトポロジー最適化(SIMP法)の実用化を支えており、OptiStructやABAQUS Topologyの内部では全てAdjoint感度が使われている。
各項の物理的意味
- 慣性項(質量項):$\rho \ddot{u}$、つまり「質量×加速度」。急ブレーキで体が前に投げ出された経験はありませんか? あの「持っていかれる感じ」がまさに慣性力です。重い物体ほど動き出しにくく、動き出したら止まりにくい。地震で建物が揺れるのも、地面が急に動いたのに建物の質量が「置いていかれる」から。静解析ではこの項をゼロにしますが、それは「ゆっくり力をかけるから加速度は無視できる」という仮定です。衝撃荷重や振動問題では絶対に省略できません。
- 剛性項(弾性復元力):$Ku$ や $\nabla \cdot \sigma$。ばねを引っ張ると「戻ろうとする力」を感じますよね? あれがフックの法則 $F=kx$ であり、剛性項の本質です。では質問——鉄の棒とゴム紐、同じ力で引っ張るとどちらが伸びるでしょうか? 当然ゴムです。この「伸びにくさ」がヤング率 $E$ であり、剛性を決めます。よくある勘違い:「剛性が高い=強い」ではありません。剛性は「変形しにくさ」、強度は「壊れにくさ」で、別の概念です。
- 外力項(荷重項):体積力 $f_b$(重力など)と表面力 $f_s$(圧力、接触力など)。こう考えてみてください——橋の上のトラックの重さは「中身全体にかかる力」(体積力)、タイヤが路面を押す力は「表面だけにかかる力」(表面力)。風圧、水圧、ボルトの締付力…すべて外力です。ここでありがちな失敗:荷重の方向を間違える。「引張」のつもりが「圧縮」になっていた——笑い話に聞こえますが、3D空間で座標系が回転していると実際に起こります。
- 減衰項:レイリー減衰 $C\dot{u} = (\alpha M + \beta K)\dot{u}$。ギターの弦を弾いてみてください。音は鳴り続けますか? いいえ、徐々に小さくなりますよね。振動エネルギーが空気抵抗や弦の内部摩擦で熱に変わるからです。車のショックアブソーバーも同じ原理——わざと振動エネルギーを吸収して乗り心地を良くしています。もし減衰がゼロだったら? 建物は地震の後いつまでも揺れ続けることになります。実際にはそうならないので、適切な減衰の設定が重要です。
仮定条件と適用限界
次元解析と単位系
| 変数 | SI単位 | 注意点・換算メモ |
|---|---|---|
| 変位 $u$ | m(メートル) | mm入力時は荷重・弾性率もMPa/N系に統一すること |
| 応力 $\sigma$ | Pa(パスカル)= N/m² | MPa = 10⁶ Pa。降伏応力との比較時に単位系の不一致に注意 |
| 歪み $\varepsilon$ | 無次元(m/m) | 工学歪みと対数歪みの区別に注意(大変形時) |
| 弾性率 $E$ | Pa | 鋼: 約210 GPa、アルミ: 約70 GPa。温度依存性に注意 |
| 密度 $\rho$ | kg/m³ | mm系ではtonne/mm³(= 10⁻⁹ tonne/mm³ for 鋼) |
| 力 $F$ | N(ニュートン) | mm系ではN、m系ではNで統一 |
数値解法と実装
感度解析のFEM
まとめ
自動微分(AD)は感度解析の実装コストを激減させた
複雑なCAEコードの感度(勾配)を手計算で導出するのは膨大なコストがかかるため、「自動微分(Automatic Differentiation, AD)」が1990年代から実用化された。ADはソースコードの演算グラフを解析して数値的な連鎖律適用を自動化する手法で、前進モードは設計変数1個当たりの感度計算、後退モード(Backpropagation)は目的関数1個当たりの全変数感度計算に適する。TensorFlowやPyTorchの自動微分エンジンはニューラルネットワーク学習と同じ技術で、OPENMDAO(NASA)等のCAE最適化フレームワークでも活用されている。
線形要素(1次要素)
節点間を線形補間。計算コストは低いが、応力の精度が低い。せん断ロッキングに注意(低減積分やB-bar法で緩和)。
2次要素(中間節点付き)
曲線的な変形を表現可能。応力精度が大幅に向上するが、自由度は約2〜3倍に増加。推奨:応力評価が重要な場合。
完全積分 vs 低減積分
完全積分:過剰拘束(ロッキング)のリスク。低減積分:アワーグラスモード(零エネルギーモード)のリスク。適材適所で選択。
アダプティブメッシュ
誤差指標(ZZ推定量等)に基づく自動細分化。応力集中部の精度を効率的に向上。h法(要素分割)とp法(次数増加)がある。
ニュートン・ラフソン法
非線形解析の標準的手法。接線剛性マトリクスを毎反復更新。収束半径内で2次収束するが、計算コストが高い。
修正ニュートン・ラフソン法
接線剛性マトリクスを初期値または数反復毎に更新。各反復のコストは低いが、収束速度は線形的。
収束判定基準
力の残差ノルム: $||R|| / ||F_{ext}|| < \epsilon$(一般に $\epsilon = 10^{-3}$〜$10^{-6}$)。変位増分ノルム: $||\Delta u|| / ||u|| < \epsilon$。エネルギーノルム: $\Delta u \cdot R < \epsilon$
荷重増分法
全荷重を一度に負荷せず、小刻みに増加させる。弧長法(Riks法)は荷重-変位関係の極値点を越えて追跡可能。
直接法 vs 反復法のたとえ
直接法は「連立方程式を筆算で正確に解く」方法——確実だが大規模問題では時間がかかりすぎる。反復法は「当て推量を繰り返して正解に近づく」方法——最初は大雑把な答えだが、反復するたびに精度が上がる。辞書で言葉を探すとき、最初のページから順番に探す(直接法)より、見当をつけて開き、前後に調整する(反復法)方が効率的なのと同じ原理。
メッシュの次数と精度の関係
1次要素は「定規で曲線を近似する」——直線の折れ線で表現するため精度に限界がある。2次要素は「フレキシブルカーブ」——曲線的な変化を表現でき、同じメッシュ密度でも格段に精度が向上する。ただし、1要素あたりの計算コストは増えるため、トータルのコスト対効果で判断する。
実践ガイド
感度解析の実務
最適化の前段階として感度を確認。どの設計変数が目的関数に最も影響するかを特定。
実務チェックリスト
ソボル指標でどの設計変数が重要かを定量化する
感度解析の実務では「どの設計変数が目的関数に最も影響するか」を特定することが重要で、分散ベースの大域的感度指標「ソボル指標(Sobol' indices)」が標準ツールとなっている。Ilya Sobol'(ロシア科学アカデミー)が1993年に提案したこの手法は、各設計変数の寄与率を1次・2次(交互作用)で分解する。トヨタのエンジン燃費最適化では10変数の圧縮比・点火時期・噴射量等のソボル解析を実施し、総変動の65%が圧縮比1変数に起因することを確認して効率的な最適化を行った事例がある。
解析フローのたとえ
解析の流れは、実は料理とそっくりです。まず材料を買い出し(CADモデルの準備)、下ごしらえをして(メッシュ生成)、火にかけて(ソルバー実行)、最後に盛り付ける(後処理で可視化)。ここで大事な問いかけ——料理で一番失敗しやすい工程はどこでしょう? 実は「下ごしらえ」なんです。メッシュの品質が悪いと、どんなに優秀なソルバーを使っても結果はめちゃくちゃになります。
初心者が陥りやすい落とし穴
あなたはメッシュ収束性を確認していますか? 「計算が回った=結果が正しい」と思っていませんか? これ、実はCAE初心者が最も陥りやすい罠です。ソルバーは与えられたメッシュで「それなりの答え」を必ず返します。でもメッシュが粗すぎれば、その答えは現実から大きくずれている。最低3段階のメッシュ密度で結果が安定することを確認する——これを怠ると「コンピュータが出した答えだから正しいはず」という危険な思い込みに陥ります。
境界条件の考え方
境界条件の設定は、試験の「問題文を書く」のと同じです。問題文が間違っていたら? どんなに正確に計算しても答えは間違いますよね。「この面は本当に完全固定なのか」「この荷重は本当に一様分布なのか」——現実の拘束条件を正しくモデル化することが、実は解析全体で最も重要なステップだったりします。
ソフトウェア比較
ツール
OpenMDAOはNASAが2010年代にオープンソース公開
OpenMDAO(Open Multidisciplinary Design, Analysis, and Optimization)はNASAエームズ研究センターが2010年代に開発しオープンソース公開したMDO(多分野連成設計最適化)フレームワークだ。随伴法・自動微分・複素数ステップ差分を統一的なAPIで提供しており、MIT・Stanford・TUDelftなど主要航空宇宙工学科での設計最適化教育ツールとして広く採用されている。ボーイングは737 MAXの翼形状最適化にOpenMDAOを活用したと2017年AIAA SciTech Forum発表で開示した。
選定で最も重要な3つの問い
- 「何を解くか」:感度解析に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
- 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
- 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。
先端技術
感度解析の先端
複素数ステップ差分法は有限差分より1000倍精度が高い
感度計算の数値的手法として有限差分法は汎用的だが、ステップ幅hを小さくするほど丸め誤差が増大する「ステップ幅のジレンマ」がある。複素数ステップ差分法(Complex Step method)はJoaquim Martins(2003年)が航空宇宙設計感度計算に適用して普及させた手法で、虚部方向に微小量ihを加えて感度を計算するため、h→0の極限でも丸め誤差がゼロになる。現在はSU2(スタンフォード大学開発の航空CFD最適化ツール)に標準実装されており、有限差分では達成できない機械精度感度が得られる。
トラブルシューティング
感度解析のトラブル
感度の符号ミスで最急降下法が最急上昇になる
勾配ベース最適化で「目的関数が最小化でなく最大化する方向に動いてしまう」現象は、感度(勾配)の符号が逆転していることが主因だ。特にFEAコードとの有限差分接続時、変位と荷重の符号規則の不整合により感度が実際と逆符号になることがある。診断法は少数の設計変数で感度の符号を手計算(扰動解析)と比較する「Gradient Verification Test」で、OpenMDAOは開発初期フェーズでのgradient checkを標準ワークフローとして要求している。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——感度解析の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告