Spalart-Allmarasモデル
Spalart-Allmarasの理論基礎
概要
先生、Spalart-Allmarasモデルって航空分野でよく使われるって聞いたんですけど、どういうモデルなんですか?
Spalart-Allmaras(SA)モデルは、修正渦粘性 $\tilde{\nu}$ に対する1本の輸送方程式だけで乱流を記述する1方程式モデルだ。1992年にPhilippe SpalartとSteven Allmarasが発表した。航空機の翼周り流れに特化して開発され、NASAの標準乱流モデルの一つになっている。
1方程式ってことは、k-epsilonの2方程式より軽いんですか?
その通り。輸送方程式が1本少ない分、計算コストが低く収束も速い。壁面近傍の挙動が良好で、付着境界層や弱い逆圧力勾配下の流れに対して高い精度を発揮する。
支配方程式
具体的な方程式を教えてください。
修正渦粘性 $\tilde{\nu}$ の輸送方程式は次の通りだ。
各項の物理的意味はこうだ。
| 項 | 式 | 物理的意味 |
|---|---|---|
| 生成項 | $c_{b1}\tilde{S}\tilde{\nu}$ | 平均速度勾配による乱流生成 |
| 散逸項 | $c_{w1}f_w(\tilde{\nu}/d)^2$ | 壁面距離 $d$ に依存する破壊 |
| 拡散項 | $\frac{1}{\sigma}[\nabla\cdot((\nu+\tilde{\nu})\nabla\tilde{\nu}) + c_{b2}(\nabla\tilde{\nu})^2]$ | 分子拡散+乱流拡散 |
渦粘性の計算
$\tilde{\nu}$ から渦粘性 $\nu_t$ をどう求めるんですか?
ダンピング関数 $f_{v1}$ を使って次のように計算する。
壁面近傍($\chi \ll 1$)では $f_{v1} \to 0$ となり、$\nu_t$ が自動的に減衰する。これがSAモデルの大きな特徴で、別途Low-Reダンピング関数を追加する必要がない。
モデル定数
定数はいくつありますか?
以下が標準的な定数だ。
| 定数 | 値 | 定数 | 値 |
|---|---|---|---|
| $c_{b1}$ | 0.1355 | $c_{b2}$ | 0.622 |
| $\sigma$ | 2/3 | $\kappa$ | 0.41 |
| $c_{w1}$ | $c_{b1}/\kappa^2 + (1+c_{b2})/\sigma$ | $c_{w2}$ | 0.3 |
| $c_{w3}$ | 2.0 | $c_{v1}$ | 7.1 |
定数が多いように見えますけど、$c_{w1}$ は他の定数から導出されるんですね。実質的に独立な定数は6個くらいですか。
その通り。しかも壁面距離 $d$ が唯一の幾何学的入力で、乱流長さスケールの方程式を別途解く必要がない。これが1方程式モデルのシンプルさだ。
「1方程式で翼を解く」——PhilipとAmir の賭け
1992年にPhilip SpalartとSteven Allmarasが発表したSAモデルは、「渦粘性そのものの輸送方程式を1本だけ解く」というコンセプトで設計されました。当時のCFDコミュニティは「方程式を2本解かないと乱流は計算できない」という思い込みがあり、1方程式アプローチは懐疑的に受け取られました。しかし翼面境界層の計算精度は2方程式モデルに勝るとも劣らず、航空業界に急速に普及しました。NASAの外部空力CFDガイドラインで長年推奨されてきたのも、この1方程式の軽さと堅牢さが理由です。
Spalart-Allmarasの数値計算手法
FVMでの離散化
SAモデルをCFDソルバーでどう離散化するんですか?
有限体積法(FVM)での離散化は、他のスカラー輸送方程式と同じ枠組みだ。対流項と拡散項を面フラックスに変換して離散化する。
ただしSAモデル特有の注意点がある。非線形拡散項 $c_{b2}(\nabla\tilde{\nu})^2$ は標準的な拡散項の形式に収まらないため、ソース項として処理するか、保存形に書き直す工夫が必要だ。
壁面距離 $d$ の計算
壁面距離ってどうやって計算するんですか?全セルから最近壁面までの距離が必要ですよね?
そうだ。壁面距離の計算には主に2つの方法がある。
| 手法 | 計算量 | 精度 | 並列化 |
|---|---|---|---|
| 幾何学的探索(Brute Force) | $O(N_{cell} \times N_{wall})$ | 正確 | 通信コスト大 |
| ポアソン方程式法 | $O(N_{cell})$ | 近似 | 容易 |
ポアソン方程式法では $\nabla^2 \phi = -1$ を解いて $d \approx |\nabla\phi| + \sqrt{|\nabla\phi|^2 + 2\phi}$ で推定する。Fluentはデフォルトでこちらを使っている。大規模並列計算では幾何学的探索より効率的だ。
境界条件
壁面と遠方場でどんな境界条件を設定するんですか?
| 境界 | 条件 | 備考 |
|---|---|---|
| 壁面 | $\tilde{\nu} = 0$ | 完全な粘着条件 |
| 入口 | $\tilde{\nu}_{\text{in}} = 3\nu$ 〜 $5\nu$ | 低乱流度の外部流 |
| 遠方場 | $\tilde{\nu}_{\infty} / \nu = 3$ 〜 $5$ | NASA推奨値 |
入口の $\tilde{\nu}$ 設定は結果に影響する。NASA Turbulence Modeling Resourceでは $\tilde{\nu}/\nu = 3$ を推奨しているが、風洞実験との比較では乱流強度に応じて調整が必要だ。
数値安定性のテクニック
SAモデルで計算が不安定になることはありますか?
$\tilde{\nu}$ が負値になると物理的に無意味だ。対策として以下が使われる。
- Negativity clipping: $\tilde{\nu} < 0$ の場合にゼロにクリップ
- SA-neg variant: Allmaras et al. (2012) が提案した負値許容版。$\tilde{\nu} < 0$ でも安定に計算できるよう生成項・破壊項を修正
- ソース項の陰的線形化: $S_{\tilde{\nu}} = S_c + S_p \cdot \tilde{\nu}$ の形に分解し、$S_p < 0$ 部分を係数行列に組み込む
SA-negバリアントはOpenFOAMにも実装されてますか?
OpenFOAMのv2306以降では SpalartAllmaras クラスに負値処理が含まれている。FluentでもSA-negは対応済みだ。
SAモデルの壁距離——小さな入力の大きな影響
Spalart-Allmarasモデルは壁面からの距離 $d$ が唯一の幾何学的入力で、この $d$ の精度がモデル全体の精度を左右します。複雑な形状、例えば翼とフラップの隙間や機体・エンジンの接合部では、壁距離の計算が難しくなります。特に内部壁(キャビティの内面)を「外壁」として誤認識すると、壁距離が過大になり局所的に渦粘性が大きく見積もられる。SAモデルを使うときは壁距離フィールドを必ず可視化して確認する癖が、計算精度を守る現場の鉄則です。
Spalart-Allmarasの実務適用
SAモデルの適用範囲
SAモデルを使うべき場面と避けるべき場面を教えてください。
明確な棲み分けがある。
| 適している用途 | 理由 |
|---|---|
| 翼型周りの空力解析(NACA翼、航空機翼) | 開発目的そのもの。付着境界層で高精度 |
| ロケットノズル内部流 | 壁面近傍で安定、高Re対応 |
| タービン翼列の基本検討 | 計算コストが低く多ケース検討向き |
| DES/DDESのRANS領域 | SA-DES, SA-DDESとして広く利用 |
メッシュ要件
SAモデルに必要なメッシュ解像度は?
SAモデルは壁面近傍まで解くことを前提に設計されている。Low-Reダンピング関数 $f_{v1}$ が内蔵されているため、$y^+ \approx 1$ が理想だ。
| パラメータ | 推奨値 |
|---|---|
| 壁面第1層 $y^+$ | 1以下 |
| 境界層内の層数 | 20層以上 |
| 成長率 | 1.1〜1.2 |
| 流れ方向の解像度 | 翼弦長あたり200セル以上 |
壁関数と組み合わせることもできますか?
できるが非推奨だ。SAモデルの強みは壁面挙動の正確さにあるから、壁関数で省略すると利点が失われる。壁関数を使いたいなら、k-epsilon系やSST k-omegaの方が適している。
DES/DDESとの連携
SA-DESについて教えてください。
Spalart et al. (1997) が提案したDetached-Eddy Simulation(DES)は、SAモデルの壁面距離 $d$ を修正して、壁から離れた領域でLES的な挙動をさせるハイブリッド手法だ。
ここで $\Delta$ はグリッド幅、$C_{\text{DES}} = 0.65$ だ。壁近傍では $d < C_{\text{DES}}\Delta$ なのでRANS、壁から離れると $C_{\text{DES}}\Delta < d$ となりLES的な振る舞いになる。
DDESはDESとどう違うんですか?
Delayed DES(DDES)はSpalart et al. (2006) の改良版で、境界層内でLESモードに不用意に切り替わる "Grid-Induced Separation" 問題を防ぐ。遅延関数 $f_d$ を導入して境界層内ではRANSを維持する。航空分野ではDDESが事実上の標準だ。
SAモデルが宇宙往還機の熱環境評価に使われる理由
スペースシャトルの再突入時の空力加熱解析でもSpalart-Allmarasモデルが活躍しました。1方程式という軽さが膨大なパラメータスタディを可能にし、再突入角度・速度・姿勢の組み合わせを網羅的にCFDで評価できたからです。計算リソースが限られていた1990年代〜2000年代には、2方程式より25〜30%速いSAの計算速度優位は決定的でした。「シンプルさは力である」というUNIX哲学をSAモデルが体現しているとも言えます。
Spalart-Allmarasのソフトウェア比較
ソルバー別の実装比較
SAモデルの実装はソルバーごとに違いがありますか?
モデル方程式自体は同じだが、バリアントの対応状況やDES連携に差がある。
| 機能 | Ansys Fluent | Ansys CFX | STAR-CCM+ | OpenFOAM |
|---|---|---|---|---|
| Standard SA | 対応 | 対応 | 対応 | 対応 |
| SA with rotation/curvature | 対応(SA-RC) | 対応 | 対応 | 対応 |
| SA-neg(負値許容) | 対応 | -- | 対応 | 対応 |
| SA-DES | 対応 | 対応 | 対応 | 対応 |
| SA-DDES | 対応 | 対応 | 対応 | 対応 |
| SA-IDDES | 対応 | -- | 対応 | 対応 |
NASA検証ケースでの比較
各ソルバーでSAモデルの結果は一致しますか?
NASA Turbulence Modeling Resourceが提供する検証ケース(Flat Plate, NACA 0012, DPW等)では、正しく設定すれば各ソルバーの結果はほぼ一致する。ただし以下の点で差が出ることがある。
| 差異の原因 | 影響 |
|---|---|
| 壁面距離の計算方法 | 複雑形状でセル単位の $d$ が異なる |
| 対流スキームの精度 | 2次風上 vs. MUSCL vs. TVDスキーム |
| ソース項の線形化方法 | 収束性と安定性に影響 |
| 遷移処理 | Fully turbulent vs. trip条件 |
Fluentで設定するときの手順を教えてください。
1. Models > Viscous > Spalart-Allmaras (1 Equation) を選択
2. Options で Strain/Vorticity-Based Production を選択(推奨は Vorticity)
3. Curvature Correction を有効にする場合は SA Options で Rotation/Curvature Correction にチェック
4. 入口BCで Modified Turbulent Viscosity を $3\nu$ 〜 $5\nu$ に設定
OpenFOAMでの設定例
OpenFOAMではどう設定しますか?
constant/turbulenceProperties で以下のように指定する。
```
RAS {
model SpalartAllmaras;
turbulence on;
printCoeffs on;
}
```
初期条件の nuTilda は 0/nuTilda ファイルで設定。内部場は $3\nu$ 〜 $5\nu$、壁面は fixedValue uniform 0 だ。
SAモデルは航空系の第一選択で、DES/DDESへの拡張性が高いのが強みですね。産業用途ではSST k-omegaとの二択になることが多いと。
その認識で正しい。壁面近傍を丁寧に解きたい航空系ならSA、壁関数との併用や熱解析まで含むならSST k-omegaという棲み分けだ。
NASAのSA検証ページ——公式ベンチマークが世界に与えた影響
NASAのTurbulence Modeling Resourceウェブサイトは、SAモデルを含む主要RANSモデルのリファレンス実装と検証データを公開しています。このサイトが整備されたことで「私の計算はNASAの参照解と一致している」と言えるようになり、ソルバー間比較の標準基盤が生まれました。Fluent・OpenFOAM・SU2などのソルバー開発者も、このNASAベンチマークで自実装を検証しています。Spalart本人もこのサイトの整備に関与しており、自分のモデルを「公式の尺度」にした研究者は珍しいと言えます。
Spalart-Allmarasの先端研究
回転・曲率補正(SA-RC)
SAモデルの回転・曲率補正ってどういうものですか?
Shur et al. (2000) が提案した修正で、生成項に回転・曲率の効果を含める。回転関数 $f_{r1}$ を乗じて、
$f_{r1}$ はストレインレートテンソルとローテーションレートテンソルの比から計算される。凸面側(安定化効果)で乱流を抑制し、凹面側(不安定化効果)で乱流を増強する。
どういう場面で効きますか?
翼端渦、U字管内流、ターボ機械翼列など曲率の強い流れで改善が見られる。NASAのCommon Research Model(CRM)の翼端部でSA-RCを使うと、標準SAより実験との一致が改善されることが報告されている。
SA-QCR(Quadratic Constitutive Relation)
SA-QCRも聞いたことがあるんですけど。
標準のBoussinesq仮定(線形渦粘性モデル)では、レイノルズ応力テンソルがストレインレートに比例する。SA-QCR(Spalart, 2000)はこれに二次項を追加して異方性を部分的に再現する。
ここで $a_{ij}$ は正規化レイノルズ応力の異方性テンソル、$C_{cr1} = 0.3$ だ。
翼-胴体接合部のコーナー渦や翼根の二次流れの予測が改善される。NASAのDrag Prediction Workshop(DPW)では標準SAよりSA-QCRの方が抗力予測が実験に近いことが示されている。
機械学習による改良
SAモデルをAIで改良する研究はありますか?
ある。代表的なアプローチは以下の2つだ。
1. Field Inversion and Machine Learning (FIML): Parikh-Duraisamy (2016)。実験データとの差を最小化するように生成項の補正係数 $\beta(\mathbf{x})$ を場全体で逆推定し、その $\beta$ をMLで一般化する
2. PINN (Physics-Informed Neural Network): SAの輸送方程式を物理制約としてNNに組み込み、少数のDNS/LESデータからモデル定数を最適化する
FIMLは実用段階ですか?
まだ研究段階だが、Boeing等が航空機設計への適用を検討している。壁面距離関数を通じたSAモデルの構造がFIMLと相性が良く、他のRANSモデルより改良しやすいと言われている。
SA-noftモデル
他にバリアントはありますか?
SA-noft(no $f_{t2}$ term)は遷移項 $f_{t2}$ を除去した簡略版で、完全乱流の計算では標準SAとほぼ同等の結果を与える。NASAのTurbulence Modeling Resourceでは、特に理由がなければSA-noftを推奨している。これはFluentの標準実装でもある。
SAモデルとDES——「壁はRANS、渦はLES」の発想
Spalart-Allmarasモデルは、Detached Eddy Simulation(DES)という画期的な手法の出発点にもなりました。DES(1997年提案)はSAの壁距離 $d$ を修正して境界層内ではRANSとして、剥離域ではサブグリッドモデルとして動作させるハイブリッド手法です。「1つのモデルの切替だけでRANSとLESを繋ぐ」という発想は当時非常に斬新で、SAモデルの設計者Spalartが自身のモデルを拡張した形になります。今日のDES・DDES・IDDESの全ての起源にSAモデルがあります。
Spalart-Allmarasのトラブル対応
よくある問題と対策
SAモデルで計算がうまくいかないとき、何を確認すればいいですか?
1. nuTilda が負値になる
症状: 計算中に $\tilde{\nu}$ が負値に発散し、NaN/Infが発生
原因: 初期条件が不適切($\tilde{\nu}$ の初期値がゼロまたは非常に小さい)、メッシュ品質が悪い、逆流が入口境界で発生
対策:
- 初期値を $\tilde{\nu} = 3\nu$ 〜 $5\nu$ に設定
- SA-negバリアントを使用(Fluentでは自動対応)
- 入口の $\tilde{\nu}$ 値を上げる($10\nu$ 程度に増やして安定化後に戻す)
- メッシュ品質指標(スキューネス < 0.85)を確認
2. 壁面距離の計算エラー
壁面距離がおかしいとどうなりますか?
症状: 散逸項 $c_{w1}f_w(\tilde{\nu}/d)^2$ が異常値を取り、渦粘性が過大または過小
原因: 複数の壁面が近接する領域(隙間、薄い構造)で壁面距離が正しく計算されない
対策:
- FluentではSolve > Initialize > Wall Distance を再計算
- OpenFOAMでは
wallDistの method をmeshWave(デフォルト)からPoissonに変更してみる - 隙間が非常に狭い場合は形状を簡略化
3. 自由せん断層の過大予測
噴流のスプレッド角がおかしいんですけど。
症状: ジェットの拡がり率が実験より20〜30%大きい
原因: SAモデルは自由せん断流に対してキャリブレーションされていない。壁面距離 $d$ が大きい領域で散逸が不足し、渦粘性が過大になる
対策:
- 噴流・混合層の解析にはSST k-omegaまたはk-epsilon Realizableを使う
- DES/DDESに切り替えて自由せん断層をLESで解く
4. 遷移位置が実験と合わない
症状: 翼面の層流-乱流遷移位置が実験と異なる
原因: 標準SAモデルは完全乱流を仮定。遷移を予測する機能がない
対策:
- 遷移を考慮したいならSA + $\gamma$-$Re_\theta$ 遷移モデルを使う
- Fluentでは Transition SST が利用可能
- trip条件で遷移位置を手動指定する方法もある(NASAケースではよく使われる)
検証用ベンチマーク
SAモデルの結果を検証するのに適したベンチマークは?
NASA Turbulence Modeling Resource (https://turbmodels.larc.nasa.gov/) が最も信頼できる。以下のケースが推奨だ。
| ケース | 検証項目 | 実験データ |
|---|---|---|
| Flat Plate | $C_f$ 分布 | Wieghardt (1951) |
| NACA 0012 | $C_p$, $C_L$-$\alpha$ | Gregory-O'Reilly (1970) |
| RAE 2822 | 遷音速 $C_p$ | Cook et al. (1979) |
| DPW (CRM) | 巡航条件の $C_D$ | NASA CRM実験 |
まずFlat Plateで $C_f$ が理論値($C_f = 0.058 Re_x^{-0.2}$)と一致するか確認して、それからNACA翼に進むのが王道ですね。
ν̃が負になる問題——OpenFOAMユーザーが最初に踏む地雷
SAモデルの作業変数 ν̃(修正渦粘性)は理論上は非負ですが、数値計算中に負値になることがあります。これが起きると渦粘性が負になり計算が発散します。OpenFOAMのSpalartAllmarasソルバーでは、負値を対処するSA-neg変形が導入されましたが、古いバージョンではこの対処が不十分で初心者が頻繁に詰まりました。「OpenFOAMのSAでnu_tがおかしい」という質問はCFDフォーラムの定番トピックで、最初のセルのy+を正しく設定してν̃の初期値を適切にすることが解決への近道です。
関連トピック
なった
詳しく
報告