分離反復法 — CAE用語解説
分離反復法
連成問題を分割して解く手法
流体と構造が相互に影響し合う問題って、どうやって計算するんですか?
理論と物理
分離反復法の基本概念
「分離反復法」という言葉をよく見かけますが、一体何を「分離」して、何を「反復」しているんですか?
良い質問だ。例えば、流体と構造が相互作用する「流体構造連成(FSI)」問題を考えよう。支配方程式は流体のナビエ-ストークス方程式と構造の運動方程式だ。これらを一度に連立して解く「直接連成」は計算コストが高い。代わりに、流体と構造の方程式を「分離」し、それぞれ独立に解いた後、境界でデータ(圧力、変位)を交換し、収束するまでそのプロセスを「反復」する。これが分離反復法の核心だ。
方程式を分離して解くメリットは何ですか?それぞれ既存の独立したソルバーが使えるから?
その通り。AnsysではFluent(流体)とMechanical(構造)を、SIMULIAではAbaqus/CFDとAbaqus/Standardを組み合わせられる。各分野で高度に最適化されたソルバーをそのまま流用できるのが最大の利点だ。メモリ使用量も、直接法が全体のマトリックスを必要とするのに対し、分離法では各物理ごとに小さなマトリックスで済む。
反復のたびにデータを交換するということは、タイムステップごとに何度も計算するんですか?計算時間はどうなるんでしょう。
そうだ。例えば1つのタイムステップ内で、流体ソルバーが構造から変位を受け取り、新しい圧力を計算し、それを構造に渡す。これを界面での力と変位が一致する(例えば、残差が1.0e-3以下になる)まで繰り返す。反復回数が増えれば当然時間はかかるが、全体のマトリックスを形成・分解するコストとトレードオフの関係にある。不安定な問題では、反復ごとにデータを「緩和」して、少しずつ更新する技術も使われる。
数値解法と実装
反復プロセスと収束制御
反復の具体的なアルゴリズムはどうなっているんですか?単純にデータを渡し合うだけ?
いや、単純交換では発散しやすい。基本的な手法は「ガウス-ザイデル法」に似ている。k回目の反復で、まず流体ソルバーが構造からの変位
「発散しやすい」とのことですが、対策はあるんですか?
重要なのは「アンダーリラクゼーション」だ。新しい値
収束判定は具体的に何を見るんですか?
界面でのデータ交換の残差(Residual)を見る。例えば、力の残差
実践ガイド
FSI解析のワークフローと設定
実際にAnsysでFSI解析をする時、分離反復法を設定する手順はどうなりますか?
まずWorkbenchでFluentとMechanicalのシステムを立ち上げ、System Couplingコンポーネントでつなぐ。次に、データ転送の「インターフェース」を定義する。例えば、構造側の変位を「入力」、流体側の圧力を「出力」として設定する。最も重要な設定は「Coupling Iteration」のパラメータで、最大反復回数(デフォルト10)と収束基準(デフォルト0.001)を決める。
最大反復回数に達しても収束しなかった場合はどうなりますか?
設定によるところが大きい。「Continue」を選べば警告を出しながら次のタイムステップに進むが、結果の信頼性は低い。「Stop」なら解析が中断される。実務では、まずタイムステップを小さくする(例えば1e-4秒から5e-5秒へ)、または先述の緩和係数を下げる(1.0から0.5へ)といった対策を取る。
データの受け渡しはタイムステップのどのタイミングで行われるんですか?流体と構造でタイムステップ幅が違っても大丈夫?
良い着眼点だ。分離法の強みの一つは、異なるタイムステップ幅が使えることだ。例えば、流体は小さなステップ(1e-4秒)で、構造は大きなステップ(1e-3秒)で解ける。この場合、System Couplingが「サブステップ」を管理する。構造の1ステップの間に、流体は10ステップ進み、その間に得られた界面力の時間平均値を構造に渡す、といった処理が可能になる。
ソフトウェア比較
各ベンダーの実装と特徴
分離反復法の実装は、Ansys、Abaqus、COMSOLでどう違うんですか?
大きく分けて二つのアプローチがある。一つはAnsysの「System Coupling」やSIMULIAの「Co-simulation」に代表される、独立ソルバーを外部で連携させる方式。もう一つはCOMSOL Multiphysicsに代表される、統合環境内で複数物理を扱い、内部で分離反復法(Segregated Solver)を適用する方式だ。
統合環境内の分離法とは?COMSOLは直接法じゃないんですか?
COMSOLはユーザーが選択できる。デフォルトは「完全連立(Fully Coupled)」だが、物理場が弱く連成している場合や、メモリ節約が必要な場合には「分離(Segregated)」ソルバーを選べる。例えば、熱伝導と静電場の問題で、熱が誘電率に与える影響が小さいなら、まず温度場を解き、その結果を使って静電場を解く、という2ステップの反復を内部で行う。
外部連携方式(Ansys)と内部方式(COMSOL)で、計算精度や速度に差は出ますか?
トレードオフがある。外部連携は各ソルバーの高性能さを活かせるが、データ転送のオーバーヘッドと、インターフェースでの情報ロス(補間誤差)が発生する。内部方式はデータ転送が効率的で誤差も小さいが、使用できる物理モデルとソルバーはその統合環境内に限定される。超高速の流体ソルバー(Fluent)と高度な非線形構造ソルバー(Abaqus)を組み合わせたいなら、外部連携が有利だ。
トラブルシューティング
発散と収束不良への対策
分離反復法の解析で、最初の数ステップでいきなり発散してしまうのですが、まず何を疑えばいいですか?
まず「初期条件」と「緩和係数」だ。特に構造の初期変位がゼロで、流体から大きな圧力がかかる場合、一気に変位が跳ねて発散する。対策として、最初の数ステップは流体圧力を段階的に増加させる「ランプ関数」を適用する。Ansys System Couplingでは、初期の緩和係数を0.1など非常に小さな値から始め、ステップを追うごとに1.0に近づける「Adaptive Relaxation」機能もある。
収束はするのですが、反復回数が多くて計算が遅いです。反復回数を減らす方法は?
界面データの予測子(Predictor)を改善する方法がある。単純に前のステップの値を使うのではなく、例えば2次エクストラポレーションを使うと、初期推定値が良くなり、収束までの反復回数を減らせる。Ansysでは「Order」設定で0次(定数)、1次(線形)、2次(放物線)から選べる。また、タイムステップ幅を適切に小さくすることも有効だ。ステップが大きすぎると、次のステップの推定が難しくなる。
「エネルギーが保存されていない」という警告が出ました。これは分離法に起因する問題ですか?
その可能性が高い。分離反復法では、反復が収束する前にタイムステップを進めてしまうと、界面で流体から構造への仕事の受け渡しに誤差が生じ、システム全体のエネルギーが保存されなくなる。これを「エネルギー漏れ」と呼ぶ。対策は、収束基準を厳しくする(1e-3から1e-4へ)、または「保守的インターポレーション」を採用することだ。後者は、データ転送時に力と変位の積(仕事)が保存されるように補間アルゴリズムを調整する方法で、一部の高度な連成ツールに実装されている。
関連トピック
なった
詳しく
報告