動的メッシュ — CAE用語解説
動的メッシュ
先生、バルブや弁が動くCFD解析をするとき、メッシュも動かさないといけないんですか?
理論と物理
動的メッシュの基本概念
「動的メッシュ」って、メッシュが動くってことですか?でも、CAEではメッシュは計算領域を分割した固定の格子ですよね。どういう意味なんですか?
良い質問だ。確かに通常のFEMやCFDではメッシュは固定だ。動的メッシュは、計算領域の形状や境界が時間とともに変化する問題で、それに追従してメッシュ自体を変形・再生成する技術を指す。例えば、ピストンがシリンダ内を動く内燃機関のシミュレーションでは、ピストンの動きに合わせて燃焼室のメッシュを圧縮・伸長させる必要がある。
メッシュを動かすと、要素のひずみが発生して計算が破綻しませんか?どのようにして品質を保つんですか?
その通りで、単純な変形だけではすぐに要素が歪んでヤコビアンが負になる。そこで主に3つの手法を使い分ける。1つ目は「メッシュ・スムージング」。節点位置を再調整するだけだから計算コストは低いが、変位が大きいと限界がある。2つ目は「メッシュ・リメッシュ」。歪んだ領域のメッシュを部分的に作り直す。Ansys Fluentの動的メッシュでは、歪み度合いの閾値を例えばスキュー度0.7に設定して自動実行できる。3つ目は「メッシュの貼り合わせ」。領域全体を動く部分と固定部分に分け、インターフェースで情報をやり取りする。
支配方程式は、メッシュが動くことで変わりますか?普通のナビエ-ストークス方程式ではダメなんですか?
変わる。メッシュが動く座標系で物理法則を記述する必要がある。一般に「任意ラグランジュ・オイラー(ALE)定式化」を用いる。固定メッシュのオイラー記述と、物質とともに動くラグランジュ記述の中間だ。連続の式は次のようになる。
ここで、$\mathbf{v}$は流体速度、$\mathbf{v}_g$はメッシュ(格子)速度だ。メッシュが動いていなければ$\mathbf{v}_g = 0$で通常の式に戻る。
数値解法と実装
主要な手法とアルゴリズム
先ほど出たスムージング、リメッシュ、貼り合わせの具体的なアルゴリズムは何ですか?
それぞれ代表的なものを説明しよう。
スムージング: 「ラプラシアン・スムージング」が基本。節点の位置を隣接節点の平均位置に移動させる。単純だが、境界近くでは適用を制限する必要がある。
リメッシュ: 歪みが閾値を超えた要素を検出し、その周辺領域でメッシュを削除して新たに生成する。Ansys Fluentでは「ローカル・リメッシュ」と呼ばれ、三角形/四面体要素に適用される。四角形/六面体要素には向かない。
貼り合わせ: 「スライディングメッシュ」と「動的レイヤー」が代表的だ。
スライディングメッシュと動的レイヤーはどう使い分けるんですか?
運動の種類による。
スライディングメッシュ: 回転運動に適する。例えばターボ機械で、ローター領域とステーター領域のメッシュを独立させ、インターフェースで毎タイムステップデータを補間して受け渡す。メッシュ自体は変形せず、相対位置だけが変わる。
動的レイヤー: 往復直線運動に適する。メッシュの層(レイヤー)を追加・削除する。ピストンが上死点に近づくと、隙間が狭すぎて要素のアスペクト比が悪くなる。そこで、最小隙間が設定値(例: 0.2mm)を下回る直前に、最も歪んだ要素の層を削除する。逆にピストンが下がるときは層を追加する。これにより、要素数をほぼ一定に保てる。
タイムステップの進め方で特別な考慮点はありますか?メッシュが変わると、前のステップの解を新しいメッシュに写像する必要がありますよね?
その通りで、これが動的メッシュ計算の重要なポイントだ。リメッシュが発生したタイムステップでは、古いメッシュ上の物理量(速度、圧力、温度など)を、新しいメッシュの節点/セル中心に「保守的補間」で写像する。質量、運動量、エネルギーが保存されるように重み付け計算が行われる。この補間誤差が累積しないよう、リメッシュの頻度やトリガー条件は慎重に設定する必要がある。COMSOL Multiphysicsでは「メッシュ変更時の保存的補間」という設定項目で制御できる。
実践ガイド
設定のワークフローとチェックポイント
実際にAnsys Fluentで動的メッシュを設定するとき、最初に何を確認すべきですか?
まず、運動の定義だ。どの壁面が、どのように動くかを「動的メッシュゾーン」として定義する。プロファイルは「剛体運動」か「変形」かを選択する。往復運動なら、UDF(ユーザ定義関数)で変位プロファイルを記述するのが一般的だ。次に、メッシュ手法の選択。領域の形状と運動に応じて、スムージング/リメッシュ/レイヤーのうちどれを有効にするか決める。複数を組み合わせることも多い。
パラメータ設定で失敗しやすいポイントはありますか?
いくつかある。
1. リメッシュのトリガー: 「サイズレンジ」を狭く設定しすぎると、頻繁にリメッシュが発生して計算が遅くなり、補間誤差も蓄積する。逆に緩すぎると、歪んだメッシュのまま計算が進み発散する。初期メッシュの最小・最大サイズの2〜3倍の範囲に設定するのが目安だ。
2. 動的レイヤーのパラメータ: 「レイヤー分割・合体の基準」である「分裂係数」と「合体係数」のデフォルト値は0.2と0.7だが、急激な運動では0.15と0.8などに調整して、レイヤーの追加・削除をより敏感に行う必要がある。
3. タイムステップサイズ: メッシュが動く速度に対して十分小さい値を設定する。例えばメッシュが1ステップで移動する距離が、最小セルサイズの20%を超えないようにする。
計算が発散した場合、最初に疑うべき設定は何ですか?
まず、最初の数ステップで発散するなら、初期メッシュの品質とタイムステップサイズを疑え。動的メッシュを有効にする前の、静止状態での定常計算が収束することを必ず確認すること。次に、動的メッシュの「イベントファイル」や「メッシュ統計」の出力を確認し、リメッシュが異常に頻繁に起きていないか、レイヤーが一気に何層も削除されていないかをチェックする。また、動く壁面に隣接するメッシュの最初の層の厚さ(y+を適正に保つ厚さ)が、動的レイヤーによって極端に薄くならないかも重要だ。
ソフトウェア比較
各ソルバーの実装と特徴
Ansys Fluent、STAR-CCM+、OpenFOAMでは、動的メッシュの対応状況に違いはありますか?
大きな違いがある。
Ansys Fluent: 歴史が長く機能が豊富。GUIでの設定が比較的充実している。スムージング/リメッシュ/レイヤーに加え、6DOF(6自由度)ソルバーと連携して物体の運動を追従できる。ただし、複雑な変形や大規模なリメッシュでは計算コストが高い。
STAR-CCM+: 「オーバーセットメッシュ」(別名:干渉メッシュ)が強力だ。背景メッシュと複数の物体メッシュを独立に作成し、重ね合わせて、干渉部分の情報を補間する。これにより、複雑な相対運動(例えば、車のドアの開閉やロボットアームの動作)を、メッシュの大規模な再生成なしに扱える。動的メッシュのトリミング機能も直感的だ。
OpenFOAM: 「dynamicFvMesh」ライブラリとして提供される。柔軟性が最大の特徴で、ユーザがカスタムの運動やメッシュ制御アルゴリズムをC++で実装できる。ただし、すべての設定が辞書ファイルによるコード記述になるため、習得難易度は高い。
構造解析ソフト(Abaqus, LS-DYNA)にも「動的メッシュ」はありますか?
用語は同じでも中身は異なる。構造解析では主に「アダプティブメッシュリファインメント」を指すことが多い。これは、応力集中部など解の勾配が急峻な領域で、計算途中にメッシュを自動的に細かくする(リファインする)技術だ。一方、流体でいう「動的メッシュ」に近いのは、Abaqus/Explicitの「ALE(任意ラグランジュ・オイラー)定式化」だ。これは流体-構造連成(FSI)や爆発・衝撃問題で、構造物の大変形によりメッシュが極端に歪むのを防ぐために使われる。メッシュは物質から独立して動き、変形は物質点に追従させる。また、LS-DYNAでは「ALE法」や「SPH法(粒子法)」が大変形問題のメッシュ歪み回避策として用意されている。
メッシュの貼り合わせ手法「Morpher」や「RBF」というのを聞いたことがあります。これらはどのソフトの機能ですか?
それらは主にAnsys MechanicalやSiemens NX Nastranなどの構造解析ソフトで、形状最適化やパラメトリック変形の結果を、元のCAD形状にスムーズに伝播させるために使われる「形状モーフィング」技術だ。RBF(動径基底関数)は、制御点の変位から全域の節点変位を補間する関数で、非常に滑らかな変形を生成できる。CAEの前処理段階で、設計変更に伴うメッシュの自動更新に利用される。流体の動的メッシュとは目的が少し異なるが、メッシュを制御された方法で変形させるという点では共通している。
トラブルシューティング
よくあるエラーと対策
計算中に「Negative cell volume detected」というエラーが出て止まります。どう対処すればいいですか?
動的メッシュで最も頻出するエラーだ。メッシュの歪みが激しく、要素のヤコビアンが負になったことを意味する。対策は以下の順で試す。
1. タイムステップサイズの縮小: メッシュの移動速度に対してステップが大きすぎる。例えば、1e-4秒から1e-5秒にしてみる。
2. スムージングパラメータの緩和: Fluentでは「Spring Constant Factor」のデフォルトは1.0だが、0.5など小さくするとスムージングが強く働き、歪みを分散できる。
3. リメッシュ条件の厳格化: 「Minimum Length Scale」を少し大きくし、「Maximum Cell Skewness」を0.8から0.7などに下げる。これにより、歪みが小さいうちにリメッシュが発動する。
4. 初期メッシュの見直し: 動き始める前のメッシュに、すでに歪んだ要素が含まれていないか確認。特に動く境界に直交するメッシュが作られているか。
動的レイヤーを使っていると、計算が進むにつれてインターフェース近くのメッシュがどんどん粗くなっていきます。なぜですか?
これは「レイヤー合体」が「レイヤー分割」よりも頻繁に起きている状態だ。レイヤーが削除される(合体する)条件は、層の厚さが「合体高さ」を下回った時だ。この「合体高さ」が「分割高さ」に対して相対的に大きすぎる設定になっている可能性がある。Fluentでは、これらは「合体係数」と「分裂係数」で制御される。デフォルトは0.7と0.2だが、メッシュが粗くなるなら、合体係数を0.75→0.8に上げ、分裂係数を0.2→0.15に下げてみる。これにより、レイヤーが削除されにくく、追加されやすくなる。また、境界層メッシュの最初の層の厚さ自体が十分でない可能性もある。
スライディングメッシュで、インターフェースをまたぐ物理量(特に渦)が不連続になってしまいます。原因は?
主に2つの原因が考えられる。
1. インターフェースのメッシュ非整合: 回転側と固定側のインターフェースで、メッシュの密度や位置が大きく異なると、補間精度が落ちる。可能なら両側のインターフェースメッシュを同じ分割数にし、かつメッシュサイズも近づける。
2. 補間スキームの精度不足: デフォルトの補間法は一次精度のことが多い。Ansys Fluentでは「Mesh Interface」の設定で、「Interface Interpolation Method」を「Second Order」に変更できる。計算コストは上がるが、渦やせん断層のような勾配の大きい物理量の受け渡し精度が向上する。
3. タイムステップが粗い: インターフェースの相対運動が1ステップで大きすぎると、補間の際の情報の「すれ違い」が大きくなる。回転速度に対して、1ステップの回転角が2〜3度以内になるようにタイムステップを設定するのが目安だ。
関連トピック
なった
詳しく
報告