例題16: 衝撃波まわりの適応細分化(AMR・M=2 楔)
例題8 と同じマッハ 2 の楔まわりの流れを、粗いベースメッシュ + AMR (適応メッシュ細分化) で解きます。衝撃波の圧力遷移帯に入ったセルだけを 計算中に自動で細分化し、離れたセルは自動で粗く戻す——「細かくすべき場所を 解きながら見つける」動的メッシュ機能の例題です。
| 項目 | 内容 |
|---|---|
| 解析タイプ | 圧縮性流れ・External・AMR(適応細分化) |
| ソルバ | rhoPimpleFoam(非定常・transonic 定式化・AMR は非定常専用) |
| 乱流モデル | k-ε |
| ジオメトリ | 半頂角 14.0° の楔翼(例題8 と同一・準 2D) |
| 流入条件 | M∞ = 2.0(静圧 101,325 Pa・静温 300 K・U∞ = 694 m/s) |
| AMR 設定 | 監視 field p・帯域 115–190 kPa・最大 2 段細分化・上限 80 万セル |
| メッシュ | ベース 5 mm(初期 約 125,000 セル)→ AMR で衝撃波帯のみ 1.25 mm |
| 実行規模(目安) | 4 コア・約 3 時間・1 クレジット |
所要時間は目安です。実行環境・メッシュ規模・混雑状況により変動します。
この例題で学べること
- AMR の設定方法 — 監視 field(ここでは圧力)と細分化帯域 [下限, 上限] の決め方: 自由流圧 101 kPa と衝撃波背後圧 212 kPa (θ-β-M 理論)の中間の遷移帯を挟むように取る
- 粗大化(unrefine)条件の使い分け — 「帯域の外に出たら粗大化」 モードにすると、衝撃波が通過した後の領域が自動で粗く戻り、 セル数上限を衝撃波の解像だけに使える
- 最大セル数 = 課金の上限 — AMR は実行中にメッシュが成長するため、 課金は「最大セル数」設定を基準に確定する(80 万セル → Basic 1 クレジット)
- 細分化予算の設計 — 監視帯域が「定常的に」覆う領域(この例では 後縁の膨張扇・ウェイク)が大きいと、セル上限が常時飽和して肝心の 衝撃波に予算が回らない。この例題はドメインを下流で切り詰めて 帯域の定常需要を上限の半分程度に設計してある(詳細は下の 「自分の問題に応用するには」)
実行手順
- ex16_amr_shock.ofb.zip をダウンロードする
- StreamWright サイドバーの 📂 Load Project (.ofb.zip) にドラッグ&ドロップする

- 各タブで設定を眺める(変更は不要です)
- 🎯 解析タイプ: 圧縮性流れ + 追加機能「📏 AMR(適応細分化)」
- 4️⃣ Physics: マッハ数入口 M = 2.0(例題8 と同一)と 「📐 AMR」設定(監視 field p・帯域 115,000–190,000・ 粗大化 = 帯域の外に出たら・最大 2 段・上限 800,000 セル)。 生成される dynamicMeshDict のプレビューも確認できます
- 5️⃣ Control: 非定常 2 ms(流過時間の約 6 倍)・maxCo 0.8
- 6️⃣ Run タブ → ケースサマリを確認 → 🚀 Generate & Run

- 4 コアで約 3 時間で完了します
期待される結果
実行が正常に終われば、以下とほぼ同じ数値になります(見本: sample_report.html)。
| 量 | CFD (AMR) | 理論 / 期待値 | 差 |
|---|---|---|---|
| 衝撃波後の圧力 p₂(probe ±y 平均) | 211.4 kPa | 211.8 kPa | −0.2% |
| 衝撃波後の温度 T₂(probe) | 379 K | 374.8 K | +1.2% |
| 衝撃波角 β(2 断面の p ジャンプ位置から実測) | 43.7° | 44.1° | −0.3° |
| セル数 | 初期 125,351 → 最終 530,581 | 上限 800,000 以下 | ✓ |
| 品質チェック | 合格(PASSED・NG=0) | — | — |

ログには Refined from X to Y cells / Unrefined from ... が繰り返し
現れます。起動直後は初期過渡の圧力波を追って一時的にセル数が増え
(瞬間最大 約 66 万)、波がドメインを抜けると定在した斜め衝撃波の帯を
中心に細分化された状態に落ち着きます。
結果の可視化例(Post Processor タブ)— 楔の先端から理論角 β ≈ 44° で 斜め衝撃波が伸びる様子:


AMR の効果(同じベースメッシュの AMR OFF と比較)
同じ .ofb で「📏 AMR」のチェックを外すだけの比較実行では、ベース 5 mm セルのまま衝撃波がなまります(y = 60/100 mm の水平線上で圧力の 10–90% 立ち上がり距離 = 数値的な衝撃波厚みを比較):
| AMR OFF(5 mm 固定) | AMR ON | 効果 | |
|---|---|---|---|
| 衝撃波角 β(理論 44.1°) | 37.0°(−7.1° も外れる) | 43.7°(−0.3°) | 角度誤差 1/20 以下 |
| 衝撃波厚み(y=60 mm) | 34.2 mm | 18.1 mm | ×1.9 シャープ |
| 衝撃波厚み(y=100 mm) | 測定不能(なまりすぎて 10–90% 未達) | 21.1 mm | 外側でも衝撃波を維持 |
| 衝撃波後圧力 p₂(probe) | −0.8〜−1.5% | −0.1〜−0.3% | — |
| セル数 | 125,351(固定) | 最終 530,581 | 必要な場所だけ増加 |
粗メッシュ(OFF)では、衝撃波が楔から離れるにつれてなまって弱まり、 衝撃波角そのものが 7° も浅く測定されます。AMR は衝撃波帯を追いかけて 細分化することで、遠方まで衝撃波の強さと角度を保ちます。
📋 比較条件: 上表の 2 ケースは、AMR のチェック以外の設定はすべて同一です (同じ .ofb・同じベースメッシュ 5 mm・同じ数値スキーム(一次風上)・ 同じソルバー rhoPimpleFoam・同じ終了時刻 0.002 s・同じ時間刻み設定 maxCo 0.8 / maxDeltaT 1×10⁻⁵ s)。 結果として差が出るのは次の 2 点です: セル数(125,351 固定 → 最終 530,581)と、実際に選ばれる Δt(可変時間刻みなので、細分化された 領域では Co 数を保つために AMR ON 側の Δt が小さくなります)。 つまりこの比較は「同一の設定条件で、局所解像度だけを AMR に決めさせた ときの差」を示しています。
理論値との照合(この解析は正しいか?)
半頂角 δ = 14.0°・M∞ = 2.0 の斜め衝撃波(弱解)は θ-β-M 関係式から β = 44.1°・p₂ = 211.8 kPa・T₂ = 374.8 K(例題8 参照)。
この例題では probe 照合(例題8 と同じ)に加えて、衝撃波角そのものを 検証します: y = 60 mm と y = 100 mm の 2 本の水平サンプル線上で圧力が (p₁+p₂)/2 を横切る x 位置を検出し、tan β = Δy/Δx から β を実測—— AMR が細分化した衝撃波が理論角どおりの位置に立っていることを直接 確かめられます(実測 43.7°・理論差 −0.3°)。
📏 なお、細分化後も衝撃波の遷移幅は 1〜2 cm あります。これは 圧力ベースソルバー + 一次風上スキームが斜め衝撃波を捕獲するときの 数値的な幅(セル寸法の 10 倍強)で、セルサイズに比例して薄くなります。 AMR の価値は「同じ幅をずっと少ないセル数で達成する」ことにあります。
自分の問題に応用するには
- VOF の界面追跡: 監視 field を alpha.water・帯域 0.001–0.999 にすると 水面まわりだけを細分化できます(粗大化は既定の「下限を下回ったら」を 使い、水側の細分化を維持します)
- どこに衝撃波が立つかわからない問題: ノズル内衝撃波・遷音速バフェット など、事前に細密領域を決められない問題こそ AMR の出番です
- 細分化予算の設計: 監視帯域が「一時的に通過する」領域は粗大化で
戻りますが、「定常的に帯域内」の領域(この例の膨張扇・ウェイクの
ような連続変化領域)は細分化されたままになります。ログの
Refined/Unrefinedとセル数推移を見て、上限セル数に常時張り付く場合は 帯域を狭める・ドメインを見直す・上限を引き上げるのいずれかで 「定常需要 < 上限」にしてください - 上限セル数の決め方: 細分化は数ステップ分まとめて実行されるため、 上限を一時的に 2〜3 割超えることがあります。課金ティア境界 (100 万セル)の近くに上限を置く場合は余裕を見てください
- 自分のジオメトリで解くには: 物体の形状だけを用意する外部流れの構成は ジオメトリ準備ガイド 第2章(外部流れ) にまとめています
ジオメトリ: fixtures/compressible/supersonic(例題8 と共用・ドメインは 下流切り詰め版)。この例題の整備で圧縮性 AMR を製品開放した(機能 マトリクス・rhoPimpleFoam 自動切替・correctFluxes (phi none)・ pcorr/rhoFinal ソルバーエントリ・transonic/upwind の transient 展開・ 粗大化条件 outside_band 追加。2026-07-25)