クエット流れ(平行平板間せん断流)
理論と物理
概要
先生、クエット流れって最も基本的な粘性流れの一つと聞きましたが、V&Vではどう使うんですか?
上板が速度 $U$ で移動する平行平板間の定常層流だ。線形速度分布 $u(y) = Uy/h$ が厳密解になる。Navier-Stokes方程式の最も単純な非自明解であり、CFDソルバーの粘性項の実装検証に使う。ASME V&V 20のCode Verification手順の出発点に最適だ。
なぜこれがCode Verificationの出発点なんですか?
速度場が空間的に線形だから、任意の離散化スキーム(有限体積法、有限要素法、差分法)で厳密に解けるはずだ。もし数値解が理論解と一致しなければ、離散化や境界条件の実装にバグがあることが直ちに判明する。圧力勾配付きの一般化クエット流れ(Couette-Poiseuille流れ)に拡張すれば、放物線分布も検証できる。
支配方程式
具体的な式を教えてください。
定常・非圧縮・完全発達流れの仮定で、Navier-Stokes方程式は
純クエット流れでは $dp/dx = 0$ だから
せん断応力 $\tau$ は高さによらず一定。壁面せん断応力の理論値は $\tau_w = \mu U/h$ で、CFDソルバーの壁面摩擦係数出力の検証に直接使える。
圧力勾配がある場合は?
一般化クエット流れ(Couette-Poiseuille流れ)では
第2項がPoiseuille成分で放物線分布になる。$dp/dx$ の符号によって順流・逆流の重畳パターンが変わり、離散化スキームの非線形項の精度検証に使える。
ベンチマーク数値例
具体的な検証パラメータを教えてください。
$h = 0.01$ m、$U = 1$ m/s、$\mu = 0.001$ Pa·s(水相当)、$\rho = 1000$ kg/m³。Re = $\rho U h/\mu = 10000$ だが層流解を強制する。
理論値: $u(y) = 100y$(y は m)、$\tau_w = 0.1$ Pa。
OpenFOAMのsimpleFoamで5セル/高さ方向のメッシュでも速度場は厳密一致する。これはFVMの線形補間が線形速度場を正確に表現できるためだ。一致しなければ境界条件の実装に問題がある。
各項の物理的意味
- 保存量の時間変化項:対象とする物理量の時間的変化率を表す。定常問題では零となる。【イメージ】浴槽にお湯を張るとき、水位が時間と共に上がる——この「時間あたりの変化速度」が時間変化項。バルブを閉じて水位が一定になった状態が「定常」であり、時間変化項はゼロ。
- フラックス項(流束項):物理量の空間的な輸送・拡散を記述する。対流と拡散の2種類に大別される。【イメージ】対流は「川の流れがボートを運ぶ」ように流れに乗って物が運ばれること。拡散は「インクが静止した水中で自然に広がる」ように濃度差で物が移動すること。この2つの輸送メカニズムの競合が多くの物理現象を支配する。
- ソース項(生成・消滅項):物理量の局所的な生成または消滅を表す外力・反応項。【イメージ】部屋の中でヒーターをつけると、その場所に熱エネルギーが「生成」される。化学反応で燃料が消費されると質量が「消滅」する。外部から系に注入される物理量を表す項。
仮定条件と適用限界
- 連続体仮定が成立する空間スケールであること
- 材料・流体の構成則(応力-歪み関係、ニュートン流体則等)が適用範囲内であること
- 境界条件が物理的に妥当かつ数学的に適切に定義されていること
次元解析と単位系
| 変数 | SI単位 | 注意点・換算メモ |
|---|---|---|
| 代表長さ $L$ | m | CADモデルの単位系と一致させること |
| 代表時間 $t$ | s | 過渡解析の時間刻みはCFL条件・物理的時定数を考慮 |
数値解法と実装
OpenFOAMでの実装
OpenFOAMでクエット流れを設定する手順を教えてください。
simpleFoamを使う。ケースの構成は:
constant/transportProperties:nu 1e-06(動粘性係数)0/U: 上壁fixedValue uniform (1 0 0)、下壁fixedValue uniform (0 0 0)、前後面empty0/p: 入口・出口fixedValue uniform 0system/fvSchemes:div(phi,U) Gauss linearで十分
2Dメッシュ(blockMeshで1セル×N_y×1セル)で解く。N_y = 5でも速度分布は厳密一致する。
移動壁の境界条件はOpenFOAMではどう指定しますか?
fixedValueで壁面速度を直接指定する。movingWallVelocityという境界条件もあるが、これはメッシュが移動するALE計算用であり、壁面が固定位置で速度のみ指定する場合はfixedValueで良い。
Ansys Fluentでの実装
Fluentではどうですか?
壁面境界条件でMoving Wall optionを有効にし、Speed = 1 m/sを設定する。定常ソルバー(Pressure-Based, Coupled or SIMPLE)で解く。離散化はSecond Orderを選択。
Fluentの場合、内部的にはRhie-Chow補間による圧力-速度カップリングが使われるが、クエット流れでは圧力勾配がゼロだからこの補間の精度は問題にならない。壁関数は使わず、Laminar modelを指定する。
乱流モデルを入れるとどうなりますか?
Re = 10000で乱流モデルを有効にすると、層流理論解からずれる。k-εモデルは壁近傍で乱流粘性を生成し、速度プロファイルが非線形になる。これは乱流モデルの挙動であってコードのバグではない。Code Verificationでは必ずLaminarモデルで実行し、理論解との一致を確認する。
メッシュ収束の特徴
クエット流れのメッシュ収束はどういう特性を示しますか?
線形速度場だから、線形以上の離散化スキームで理論的には1セルで厳密解が得られる。実際にはFVMの面補間(linear, upwind等)の次数に依存する。
| スキーム | 必要セル数 | 速度誤差 |
|---|---|---|
| upwind(1次) | 1セルで厳密 | 0(線形場に対して) |
| linear(2次) | 1セルで厳密 | 0 |
| QUICK(3次) | 1セルで厳密 | 0 |
全スキームで厳密一致する。これはクエット流れの特殊性で、非線形の速度場(Poiseuille流れ)では差が出る。
それなら検証の意味がないのでは?
いや、「厳密一致するはずなのにしない」場合にバグが検出できる。境界条件の内部補間、壁面速度の取り扱い、圧力方程式のゼロ勾配条件など、実装の細部でミスが潜んでいることがある。また、非一様メッシュ(バイアスメッシュ)での精度検証にも使える。
低次要素
計算コストが低く実装が簡単だが、精度は限定的。粗いメッシュでは大きな誤差が生じる可能性がある。
高次要素
同一メッシュでより高い精度を達成。計算コストは増加するが、必要な要素数は少なくなる場合が多い。
ニュートン・ラフソン法
非線形問題の標準的手法。収束半径内で2次収束。$||R|| < \epsilon$ で収束判定。
時間積分
実践ガイド
V&V手順書
クエット流れのV&V検証を自動化するにはどうすればいいですか?
Pythonスクリプトで以下を自動化する。
1. blockMeshDictを自動生成(メッシュ密度をパラメトリック変更)
2. simpleFoamを実行
3. postProcessingからU_profileを抽出
4. 理論値 $u(y) = Uy/h$ との比較
5. L2ノルム誤差を算出し、$10^{-10}$ 以下であることを確認
判定基準が極めて厳しい($10^{-10}$)のは、この問題では離散化誤差がゼロになるはずだからだ。残るのは浮動小数点の丸め誤差と反復法の収束残差のみ。
Poiseuille流れへの拡張も同じフレームワークで?
その通り。圧力勾配を入口・出口の圧力差で与えれば、放物線分布の理論解との比較に切り替わる。判定基準はメッシュ依存になり、GCIベースの評価に切り替える。この段階でupwindとlinearの差が顕著になるから、離散化スキームの精度比較が意味を持つ。
壁面摩擦の検証
壁面せん断応力の検証はどう行いますか?
クエット流れの壁面せん断応力は $\tau_w = \mu U/h$ で一定。CFDソルバーの壁面摩擦係数(skin friction coefficient)$C_f = \tau_w / (0.5\rho U^2) = 2\mu/(\rho U h) = 2/\text{Re}_h$ と比較する。
Fluentでは Wall Fluxes → Skin Friction Coefficient で出力。OpenFOAMでは wallShearStress function objectを使う。いずれも理論値と5桁以上一致するはずだ。
壁関数を使った場合はどうなりますか?
壁関数は乱流の壁法則($u^+ = y^+$ の粘性底層、$u^+ = (1/\kappa)\ln(y^+) + B$ の対数則)に基づくから、層流のクエット流れには不適切だ。壁関数付きで解くとせん断応力に系統的な誤差が入る。層流検証では必ずLaminar viscous modelを使うこと。
非ニュートン流体への拡張
非ニュートン流体のクエット流れにも理論解はありますか?
べき乗則流体 $\tau = K\dot{\gamma}^n$ のクエット流れは理論解が存在する。速度プロファイルは
$n = 1$ でニュートン流体(線形)、$n < 1$ で擬塑性(剪断減粘)、$n > 1$ でダイラタント。OpenFOAMの非ニュートンモデル(powerLaw、Carreau-Yasuda等)の検証に使える。
検証パラメータはどう設定しますか?
$n = 0.5$(擬塑性)と $n = 1.5$(ダイラタント)の2ケースを実施する。理論値との一致を確認してから、実際のレオロジーデータ(高分子溶液や血液など)に進む。非ニュートンモデルのパラメータ入力(OpenFOAMの transportProperties での viscosityModel powerLaw の設定)が正しいことを、この簡単な検証で保証する。
解析フローのたとえ
解析フローは「科学実験」に似ている。仮説(解析モデル)を立て、実験(計算実行)し、結果を検証し、仮説を修正する——このPDCAサイクルが品質の高い解析を生む。
初心者が陥りやすい落とし穴
最もよくある失敗は「結果の検証を怠る」こと。美しいコンター図が得られても、それが物理的に正しいとは限らない。必ず理論解、実験データ、またはベンチマーク問題との比較を行うこと。
境界条件の考え方
境界条件は「実験の治具」に相当する。治具の設計が不適切であれば実験結果が無意味になるように、CAEでも境界条件が現実を正しく表現しているかが最も重要。
ソフトウェア比較
ソルバー間クロスチェック
各ソルバーの結果を比較してもらえますか?
5セル/高さ方向のメッシュでの速度プロファイル比較だ。
| ソルバー | スキーム | u(h/2) [m/s] | 理論値との差 |
|---|---|---|---|
| OpenFOAM (simpleFoam) | linear | 0.50000 | < $10^{-12}$ |
| Ansys Fluent | 2nd order | 0.50000 | < $10^{-10}$ |
| STAR-CCM+ | 2nd order | 0.50000 | < $10^{-10}$ |
| COMSOL | FEM P2 | 0.50000 | < $10^{-14}$ |
全ソルバーで機械精度レベルの一致。COMSOLは二次有限要素で線形場を厳密に表現するから丸め誤差も極小になる。
差が出る可能性があるのはどんな場合ですか?
壁面近傍の速度補間方法がソルバーによって異なるため、壁隣接セルでのグラディエント計算に微小な差が出ることがある。特にOpenFOAMのcorrected snGrad と uncorrected snGrad で壁面フラックスの精度が変わる。非直交メッシュでは差が拡大するから、skewness > 0 のメッシュでの比較テストも有用だ。
OpenFOAMのfvSchemesの影響
OpenFOAMの離散化設定で結果が変わることはありますか?
クエット流れの場合、div(phi,U) のスキームは upwind でも linearUpwind でも limited linear でも結果は同じ(線形場に対して全て厳密)。差が出るのは非直交メッシュでの laplacian(nu,U) のスキーム選択だ。
Gauss linear corrected: 非直交補正あり。推奨Gauss linear uncorrected: 非直交補正なし。直交メッシュでは問題ないが非直交で精度低下Gauss linear limited 0.5: 非直交補正を制限。安定性重視
直交メッシュならどのスキームでも同じですか?
その通り。クエット流れ + 直交メッシュは全てのスキームが同じ結果になる。これこそがCode Verificationの起点として優れている理由だ。ここから非直交メッシュや非線形問題に進むことで、各設定の影響を段階的に切り分けられる。
並列計算の検証
並列計算で結果が変わることはありますか?
領域分割の境界でのプロセッサ間通信が正しく実装されていれば、逐次実行と完全に一致するはずだ。ただし浮動小数点の加算順序が変わることで丸め誤差レベル($10^{-15}$オーダー)の差は出る。
クエット流れを2分割・4分割・8分割で実行し、結果が$10^{-10}$以内で一致することを確認する。これは並列化の回帰テストとしても有用で、MPIライブラリのバージョンアップ時に走らせるべきだ。
選定で最も重要な3つの問い
- 「何を解くか」:クエット流れ(平行平板間せん断流)に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
- 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
- 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。
先端技術
Taylor-Couette流れ
同心円筒間のクエット流れ(Taylor-Couette流れ)も検証に使えますか?
非常に重要なベンチマーク問題だ。内円筒が角速度 $\Omega$ で回転する場合、速度分布は
$A$ と $B$ は境界条件から決まる定数。Re数を上げるとTaylor渦が発生し、定常軸対称解から3次元非定常解への遷移が起きる。臨界Taylor数 $\text{Ta}_c$ の予測精度が検証指標になる。
Taylor渦の遷移はどう検証するんですか?
DiPrimaとSwinney(1981)の実験データが参照になる。臨界Taylor数は $\text{Ta}_c \approx 41.2$(半径比 $\eta = 0.5$)。FEAやCFDでの固有値解析、または非定常シミュレーションでのトルク変化から臨界値を特定する。OpenFOAMではpimpleFoamで時間発展させ、軸方向の速度成分が成長し始めるRe数を探る。
振動クエット流れ(Stokesの第2問題)
壁面が振動する場合の理論解もありますか?
Stokesの第2問題(振動平板)の厳密解がある。壁面速度 $U_0\cos(\omega t)$ に対して
$\delta = \sqrt{2\nu/\omega}$ がStokes層の厚さ。非定常CFDソルバーの時間積分精度の検証に最適だ。
時間刻みの設定はどうすべきですか?
振動周期 $T = 2\pi/\omega$ の100分の1以下の時間刻みが目安。Crank-Nicolson(2次精度)やBDF2(2次精度)の時間離散化の精度を、$\Delta t$ の系統的変化で確認する。時間方向のRichardson外挿で時間離散化誤差を推定できる。
乱流遷移の基礎研究
層流から乱流への遷移もクエット流れで研究されているんですか?
平面クエット流れの乱流遷移は線形安定性理論では予測できない(全てのRe数で線形安定)という興味深い性質がある。実際には Re $\approx$ 350 で遷移が起きるが、これは有限振幅擾乱によるサブクリティカル遷移だ。DNSで遷移過程を再現し、実験データ(Tillmark and Alfredsson, 1992)と比較する研究が活発に行われている。
V&Vの観点からはどう使えますか?
乱流DNS/LESコードの検証に使える。遷移Re数の再現性、統計量(平均速度分布、Reynolds応力)の実験値との一致がValidation指標になる。ただし遷移は初期擾乱に敏感だから、統計的な比較が必要だ。これはCode Verificationではなく、Solution Verificationの領域だ。
トラブルシューティング
速度が理論値と一致しない場合
線形であるはずの速度プロファイルが非線形になっています。何が原因ですか?
以下を順に確認する。
1. 乱流モデルの確認: Laminar model になっているか。k-εやk-ωが有効だと乱流粘性が加わり非線形になる
2. 境界条件の確認: 壁面速度が正しく設定されているか。特にOpenFOAMでは0/Uの上壁・下壁の設定を確認
3. 入口・出口条件: 圧力勾配がゼロであることを確認。入口速度境界条件を使っている場合、出口条件との組み合わせで意図しない圧力勾配が発生することがある
4. 重力の確認: 重力が有効になっていると静水圧勾配が生じる(水平流れなら影響なし、垂直流れなら影響大)
壁面速度が正しいのに微小な誤差がある場合は?
反復法の収束残差を確認する。simpleFoamのデフォルト残差基準が$10^{-5}$程度だと、速度場にその程度の誤差が残る。residualControlでUの基準を$10^{-8}$以下に設定すれば機械精度近くまで追い込める。
OpenFOAMの2D設定の注意点
OpenFOAMで2D計算する場合の設定で気をつけることはありますか?
blockMeshで z 方向を1セルにし、前後面にempty境界条件を設定する。よくあるミスは:
- z方向のセル数を2以上にしてemptyを忘れ、3D計算になってしまう
- empty面のパッチタイプをwall等にしてしまい、摩擦が加わる
- 前後面のメッシュが平面でない(blockMeshの座標入力ミス)
2D計算でも解は同じですよね?
クエット流れのような2D問題であれば、3D(z方向に複数セル + symmetry)で解いても同じ結果になるべきだ。一致しなければempty境界条件の実装に問題がある。これも一種の回帰テストとして有用だ。
収束が遅い場合
SIMPLEアルゴリズムでなかなか収束しないことがあります。
クエット流れは本質的に単純だからSIMPLEで十分収束するはずだ。収束が遅い場合:
- 初期条件を理論解に近い値(例えば一様に $U/2$)にする
- 緩和係数を確認。Uの緩和は0.7、pの緩和は0.3が標準
- 行列ソルバーの設定を確認。UにはsmootherSolver + GaussSeidel、pにはPCG + DICが標準
10反復以内に$10^{-6}$以下に収束しなければ設定に問題がある。この問題で100反復以上かかることはあり得ない。
Fluent や STAR-CCM+ でも同様ですか?
同様だ。これらのソルバーはデフォルト設定でクエット流れを数十反復で収束させる。収束しない場合はまず単位系の確認だ。Fluentはデフォルトでm, kg, sだが、mmで入力してしまうと物性値のオーダーがずれて収束が極端に遅くなることがある。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——クエット流れ(平行平板間せん断流)の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告