この文書では、WSL2のDocker上でLBM(格子ボルツマン法)流体解析ツールVirtualFluidsを活用する方法を紹介します。
VirtualFluidsは、ドイツのブラウンシュヴァイク工科大学(iRMB)で開発されている、格子ボルツマン法(LBM)をベースにしたオープンソースの流体解析(CFD)ソフトウェアコードです。従来のナビ・ストークス方程式を直接解く手法とは異なり、微視的な粒子集団の「衝突」と「移動」に基づくメソスケールのアプローチを採用しています。
この記事では、VirtualFluidsの重要機能の1つとして、「Cumulant衝突モデル※」 に注目します。 VirtualFluidsは、従来のBGKモデルに加えて、Cumulant(キュムラント)に基づく衝突モデルを利用できます。Cumulantモデルは、分布関数をキュムラント空間に変換して衝突計算を行う手法であり、各次数のキュムラントを適切に緩和させます。通常のBGKモデルでは、すべての非保存モーメントを基本的に同じ緩和時間で扱いますが、Cumulantモデルでは異なる成分の緩和を制御できます。これにより、数値安定性の向上や高Reynolds数流れへの適用が期待できます。
※ LBMのキュムラント(Cumulant)とは、格子ボルツマン法(LBM)の衝突項において、速度分布関数を統計学的なキュムラント空間に変換して緩和処理を行う高度な数値計算モデル(Cumulant LBM / CLBM)のことです。
さらに言い換えると、キュムラントとは、確率論や統計学において分布の「形状」の特徴を数学的に表す指標のことです。平均値や分散といった馴染みのある統計量も、すべてキュムラントの一部(またはそこから導かれるもの)です。
身近な統計量との関係で言うと、確率分布の形状を表す際、次数(1次、2次、3次…)が上がるごとに、より詳細な特徴を示します。
• 1次キュムラント = 平均値(分布の中心がどこにあるか)
• 2次キュムラント = 分散(分布がどれくらい広がっているか)
• 3次キュムラント = 歪度(の分子)(分布が左右にどれくらい歪んでいるか)
• 4次キュムラント = 尖度(の分子)(分布の裾野がどれくらい厚いか、または尖っているか)
格子ボルツマン法(LBM)で重宝される理由:流体力学(LBM)の文脈でキュムラントが強力なのは、ガリレイ不変性(観測者が動いても物理法則は変わらないという性質)を厳密に満たせるからです。
粒子速度の統計量を「完全に独立したパーツ」として扱えるため、流れの速度(平均値)が変化しても、高次のノイズ(数値的なゴミ)が混ざらず、激しい流れ(高レイノルズ数)でも計算が破綻しにくくなります。
参考文献
VirtualFluids公式サイト:https://irmb.gitlab-pages.rz.tu-bs.de/VirtualFluids/
VirtualFluids公式GitHubリポジトリ
なお、VirtualFluidsに関する技術的な詳細を記述した論文が、以下で公開されています。
「VirtualFluids – open source parallel LBM solver」
https://www.sciencedirect.com/science/article/pii/S0010465525003121
VirtualFluidsで学ぶCumulant LBM ― 高精度・高安定・高効率な流体解析へのアプローチ
そこで、「VirtualFluidsで学ぶCumulant LBM ― 高精度・高安定・高効率な流体解析へのアプローチ」と題して、VirtualFluidsを使って、Cumulant LBMの仕組みと効果を実際の計算で理解することを、目指します。全体は20章で、3つの記事に分割して解説します。
対象読者: LBM初学者~CAE技術者・研究者
記事の方向性: 理論+ソースコード+実験
主な解析環境: VirtualFluids GPU版
記事のゴール: 効果的なLBMの実現方法を理解する
1. はじめに VirtualFluidsに注目する理由
2. 全体構成 CPU・GPU、D3Q27、Cumulantなど
3. LBMの基本 分布関数、Collision、Streaming
4. BGKとMRT 衝突モデルの基本的な違い
5. Cumulantの原理 中心モーメントからCumulantへの変換
6. K15・K16・K17 3種類のモデルの開発経緯と技術的な違い
7. Cumulantの効果 数値安定性・精度・計算効率
【03:Cumulantの技術と実践】 VirtualFluidsのGPU環境構築とCumulant LBMの実行
目的:実際に動かす「GPU環境構築とCumulant LBMの解析」
主題:VirtualFluidsを使って、Cumulant LBMによる流体解析を実行する。
8. Chimera Transformation Cumulant変換の計算効率と数値誤差
9. Esoteric Twist Streamingのメモリ効率化
10. 格子細分化 コンパクト補間とマルチ解像度
11. 境界条件と乱流モデル Bounce Back、Smagorinsky、AMDなど
12. GPU環境構築 Docker、CUDA、CMake、ビルド
13. Driven Cavity 基本的な流れの解析
14. Taylor-Green Vortex 渦の減衰と数値精度の確認
【04:Cumulantの応用と評価】 Cumulant LBMの高精度化・高速化と実用流体解析への展開
目的:効果を検証する「高精度化・高速化・実用解析への展開」
主題:Cumulant LBMの特徴を活用して、効果的な流体解析を実現する。
15. Sphere in Channel 3次元球周りの流れ
16. Ahmed Body 自動車空力解析と格子細分化
17. BGKとCumulantの比較 精度・安定性・計算時間
18. パラメータ最適化 緩和率・粘性係数・格子解像度
19. 効果的なLBMの設計 精度・安定性・GPU効率の総合評価
20. まとめと展開 AI・CAE・サロゲートモデルへの応用
1. はじめに
流体解析(CFD:Computational Fluid Dynamics)では、Navier-Stokes方程式を数値的に解く方法として、有限体積法(FVM)、有限要素法(FEM)、有限差分法(FDM)などが広く利用されています。
これらに対して、格子ボルツマン法(LBM:Lattice Boltzmann Method)は、流体を微視的な粒子の分布として扱い、粒子の衝突と移動を繰り返すことで、巨視的な流れを再現する数値計算手法です。
LBMには、次のような特徴があります。
- 計算アルゴリズムが比較的単純である。
- 格子点ごとの局所的な計算が中心となる。
- GPUによる並列計算と相性がよい。
- 複雑な形状や非定常流れを扱える。
- 流体解析と機械学習を組み合わせた研究にも応用できる。
一方、LBMでは衝突モデルの選択が数値計算の安定性や精度に大きく影響します。代表的な衝突モデルにはBGKモデルやMRTモデルがありますが、近年は、より高次のモーメントを利用するCumulant(キュムラント)衝突モデルも注目されています。今回紹介するVirtualFluidsは、Cumulant衝突モデルを主要な特徴の一つとするオープンソースのLBMソルバーです。
本記事では、VirtualFluidsの技術的な特徴を整理しながら、Cumulant LBMの仕組みと、数値精度・計算効率を高めるための技術について解説します。
2. VirtualFluidsの全体構成
VirtualFluidsは、ドイツのブラウンシュヴァイク工科大学などの研究グループによって開発されている、オープンソースの格子ボルツマン法ソルバーです。2025年に公開された論文では、VirtualFluidsの主要な特徴として、次の技術が紹介されています。
「VirtualFluids公式論文(2025)」VirtualFluids – open source parallel LBM solver
- Cumulant衝突モデル
- コンパクト補間による格子細分化
- GPUおよび大規模並列CPUへの対応
- 効率的なStreamingアルゴリズム
- 数値誤差を抑制するモーメント変換
VirtualFluidsでは、3次元流体解析にD3Q27格子モデルが利用されています。D3Q27は、3次元空間に27方向の離散速度を設定する格子モデルです。
2.1 D3Q27格子モデル
D3Q27では、1つの格子点において、次の27方向の分布関数を扱います。
- 静止方向:1方向
- 軸方向:6方向
- 面対角方向:12方向
- 立体対角方向:8方向
合計で27方向です。各方向の分布関数を $f_i$ と表します。
D3Q27の27方向の離散速度
D3Q27は、3次元流れの速度分布を表現するための格子モデルであり、各方向の分布関数を用いて密度や速度などの巨視的な物理量を計算します。
2.2 VirtualFluidsの計算構成
VirtualFluidsでは、流体解析を実行するために、複数の数値計算技術が組み合わされています。
| 技術 | 役割 |
|---|---|
| D3Q27 | 3次元の離散速度モデル |
| Cumulant | 衝突計算 |
| Chimera Transformation | 分布関数と中心モーメントの高速変換 |
| Esoteric Twist | Streamingとメモリアクセスの効率化 |
| Grid Refinement | 局所的な格子細分化 |
| GPU並列計算 | 大規模な流体解析 |
これらは、それぞれ異なる計算上の課題を解決する技術です。
特に、Cumulantは衝突計算、Chimera Transformationはモーメント変換、Esoteric Twistは分布関数のデータ配置と伝播処理を担当します。
3. LBMの基本的な計算手順
Cumulantモデルを理解する前に、まず一般的なLBMの計算手順を整理します。LBMの基本処理は、次の2つです。「Collision(衝突)・Streaming(伝播)」
この部分の解説は、以下の記事も、参考にしてください。
LBM流体解析ツールXLBの活用【00A:LBMの基礎の直観的理解(STEP 0-6】
LBM流体解析ツールXLBの活用【00B:LBMの基礎の直観的理解(STEP 7-12】
3.1 分布関数
LBMでは、格子点における粒子の分布を分布関数 $f_i$ で表します。分布関数は、方向 $i$ に移動する粒子の存在量を表すものです。D3Q27では、1つの格子点に27個の分布関数が存在します。これらを利用して、密度と速度を求めます。
密度:$\rho=\sum_i f_i$ 速度:$\boldsymbol{u}=\frac{1}{\rho}\sum_i f_i\boldsymbol{c}_i$
ここで、$\rho$:流体密度、$f_i$:方向 $i$ の分布関数、$\boldsymbol{u}$:流体速度、$\boldsymbol{c}_i$:方向 $i$ の離散速度、です。
3.2 Collision(衝突)
Collisionでは、格子点に存在する分布関数を局所的に更新します。粒子の分布を平衡状態に近づける処理です。このとき、どのような方法で分布関数を更新するかを決めるのが衝突モデルです。代表的なものとして、BGK、MRT、Cumulantがあります。
3.3 Streaming(伝播)
Streamingでは、衝突後の分布関数を、それぞれの離散速度の方向に隣接する格子点へ移動させます。例えば、右方向の分布関数は右隣の格子点へ、上方向の分布関数は上隣の格子点へ移動します。この処理によって、隣接する格子点間で情報が伝わります。
3.4 LBMの計算サイクル
LBMの計算サイクルとしては、「分布関数 → Collision → Streaming → 密度・速度の計算 → 次の時間ステップ」となり、この計算を時間ステップごとに繰り返すことで、流体の時間発展を求めます。
4. BGKモデルとMRTモデル
LBMでは、衝突計算の方法によって数値特性が変わります。ここでは、代表的なBGKモデルとMRTモデルを紹介します。
4.1 BGKモデル
BGK(Bhatnagar-Gross-Krook)モデル は、単一緩和時間を使用する衝突モデルです。基本式は次のようになります。$f_i^*=f_i-\omega(f_i-f_i^{eq})$
ここで、$f_i$:衝突前の分布関数、$f_i^*$:衝突後の分布関数、$f_i^{eq}$:平衡分布関数、$\omega$:緩和率、です。
BGKモデルでは、すべての分布関数に共通する1つの緩和率を使用します。このため、計算アルゴリズムが比較的単純で、実装しやすいという特徴があります。
一方、すべてのモードを同じ緩和率で扱うため、複雑な流れや低粘性条件では数値安定性が課題になる場合があります。
4.2 MRTモデル
MRT(Multiple Relaxation Time)モデル は、複数の緩和時間を利用する衝突モデルです。分布関数をモーメント空間に変換して、それぞれのモーメントに異なる緩和率を設定します。
基本的な考え方は次のとおりです。$\boldsymbol{m}=M\boldsymbol{f}$、$\boldsymbol{m} S(\boldsymbol{m}-\boldsymbol{m}^{eq})$
ここで、$\boldsymbol{f}$:分布関数ベクトル、$M$:モーメント変換行列、$\boldsymbol{m}$:モーメントベクトル、$S$:緩和率を並べた行列、です。BGKと比較して、各モーメントの緩和を個別に調整できることが特徴です。
4.3 BGKとMRTの比較
| 項目 | BGK | MRT |
|---|---|---|
| 緩和時間 | 1種類 | 複数 |
| 計算方法 | 分布関数空間 | モーメント空間 |
| 実装 | 比較的簡単 | やや複雑 |
| 安定性 | 条件に依存 | 調整の自由度が高い |
| パラメータ | 少ない | 多い |
MRTは、BGKよりも自由度の高い衝突計算を実現します。Cumulantモデルは、さらに異なるモーメント表現を利用する衝突モデルです。
5. Cumulant衝突モデルの計算原理
ここが本記事の中心となる部分です。Cumulantモデルは、分布関数を直接緩和するのではなく、分布関数から計算した中心モーメントを、さらにCumulantに変換して衝突計算を行います。
5.1 分布関数から中心モーメントへ
まず、分布関数から中心モーメントを計算します。3次元の場合、中心モーメントは次のように表せます。$\sum_i f_i(c_{ix}-u_x)^a(c_{iy}-u_y)^b(c_{iz}-u_z)^c$
ここで、$a,b,c$:モーメントの次数、$c_{ix},c_{iy},c_{iz}$:離散速度の各成分、$u_x,u_y,u_z$:流体速度、です。中心モーメントは、流体の局所速度を基準にして分布関数の特徴を表す量です。
5.2 中心モーメントからCumulantへ
中心モーメントには、分布の高次の情報が含まれています。しかし、中心モーメントには、低次のモーメントの組み合わせによって生じる成分も含まれます。Cumulantは、こうしたモーメント間の統計的な依存関係を整理する量です。
例えば、1次元の確率分布に対して、平均を $\kappa_1$、分散を $\kappa_2$ とすると、3次Cumulantは3次中心モーメントに対応します。
4次Cumulantは、次のように表されます。$\kappa_4=\mu_4-3\mu_2^2$
ここで、$\mu_2$:2次中心モーメント、$\mu_4$:4次中心モーメント、です。
つまり、Cumulantは単純な中心モーメントとは異なり、低次モーメントの組み合わせを取り除いた表現になっています。このような表現を利用して衝突計算を行うことが、Cumulantモデルの基本的な考え方です。
5.3 Cumulant空間での衝突計算
Cumulant空間では、各Cumulantを平衡値に向かって緩和させます。基本的な表現は次のとおりです。【 $\kappa_i$ 】: $\omega_i(\kappa_i-\kappa_i^{eq})$
ここで、$\kappa_i$:衝突前のCumulant、$\kappa_i^{eq}$:平衡Cumulant、$\omega_i$:各Cumulantの緩和率、$\kappa_i^*$:衝突後のCumulant、です。
重要なのは、Cumulantの種類によって緩和率や平衡値の設定を変えられることです。特に、高次Cumulantの緩和方法が数値計算の特性に影響します。
5.4 逆変換
衝突計算が終わったら、Cumulantから中心モーメントへ戻し、さらに分布関数へ変換します。その後、Streamingを実行します。
分布関数 → 中心モーメントへの変換 → Cumulantへの変換 → Cumulant空間での衝突計算 → 中心モーメントへの逆変換 → 分布関数への逆変換 → Streaming
このように、Cumulantモデルでは衝突計算の前後に複数の変換処理が必要です。VirtualFluidsでは、これらの変換処理を効率的に実行するためにChimera Transformationが利用されています。
6. Cumulantモデルの発展:K15・K16・K17
VirtualFluidsでは、Cumulant衝突モデルとしてK15、K16、K17という3種類が紹介されています。これらは、モデルが発表された論文の年代に由来する名称です。
| モデル | 主な特徴 |
|---|---|
| K15 | オリジナルのCumulant法 |
| K16 | 定密度流れ向けのCumulant法 |
| K17 | 拡散項の4次精度収束を実現するCumulant法 |
6.1 K15:オリジナルのCumulantモデル
K15は、Geierらによって2015年に発表されたCumulant LBMです。中心モーメントをCumulantに変換し、それぞれのCumulantを適切に緩和させます。従来のBGKモデルのように、すべての分布関数を単一の緩和率で処理するのではなく、Cumulant空間で各モードを扱うことが特徴です。
6.2 K16:定密度流れ向けのCumulantモデル
K16は、2016年に発表された定密度流れ向けのCumulant法です。K15と同じCumulantの考え方を基礎としながら、定密度流れを扱うための定式化を採用しています。K15とK16は、単純な精度の優劣で比較するモデルではなく、対象とする流れや定式化の違いを理解する必要があります。
6.3 K17:拡散項の4次精度収束を実現するモデル
K17は、2017年に発表されたCumulantモデルです。特徴は、拡散項に関して4次精度の収束を実現するためのCumulantの緩和処理を採用していることです。特に、3次Cumulantの緩和率や4次Cumulantの平衡値の設定が重要になります。通常のLBMでは、格子を細かくしても、数値誤差の影響によって期待した収束性が得られない場合があります。K17では、この問題に対して高次Cumulantの処理を工夫しています。
6.4 K15とK17の違い
| 比較項目 | K15 | K17 |
|---|---|---|
| 基本方式 | Cumulant | Cumulant |
| 開発年 | 2015 | 2017 |
| 特徴 | 基本的なCumulant法 | 拡散項の4次精度収束 |
| 高次Cumulant | 基本的な緩和処理 | 修正された緩和・平衡値 |
| 主な目的 | Cumulantによる衝突計算 | 数値精度の向上 |
K17はK15を単純に高速化したモデルではありません。数値誤差の収束特性を改善するために、衝突計算の一部を変更したモデルです。なお、4次精度収束は特定の理論条件と評価対象に関する性質であり、すべての流れやすべての誤差指標が自動的に4次精度になるという意味ではありません。
7. CumulantモデルがLBMにもたらす効果
Cumulantモデルの効果を理解するためには、数値安定性、数値精度、計算効率の3つに分けて考えると分かりやすくなります。
7.1 数値安定性
LBMでは、粘性係数が小さくなると、「緩和時間※」が1に近づき、計算が不安定になる場合があります。また、高次モードの振る舞いも数値安定性に影響します。Cumulantモデルでは、各Cumulantに適切な緩和率を設定できるため、高次モードの数値的な振る舞いを調整できます。これにより、特定の条件において数値安定性を改善できる可能性があります。ただし、Cumulantを使用すれば必ず計算が安定するというわけではありません。格子解像度、境界条件、Reynolds数、緩和率などを適切に設定する必要があります。
※格子ボルツマン法(LBM)における緩和時間(Relaxation time、記号: τ)とは、非平衡状態にある粒子分布関数が局所的な平衡状態(マックスウェル・ボルツマン分布など)へと向かって緩和(回復・収束)する速さや割合を決定するパラメータのことです。
7.2 数値精度
K17の特徴は、拡散項の4次精度収束を目指した定式化です。これは、格子を細かくしたときの計算誤差の減少を評価する上で重要です。例えば、同じ物理現象を格子数を変えて計算し、解析解との誤差を比較します。誤差を E、格子幅を h とすると、収束次数 p は、次の関係で評価できます。$E \propto h^p$
pが大きいほど、格子幅を小さくしたときの誤差の減少が速いことを意味します。K17の拡散項に関する4次精度収束は、このような評価と関連しています。
7.3 計算効率
Cumulantモデルでは、分布関数からCumulantへの変換と逆変換が必要になります。そのため、衝突計算の演算量だけを見ると、BGKモデルより複雑です。一方、VirtualFluidsではChimera Transformationなどの計算技術を利用して、変換処理の演算量やメモリ使用量を抑えています。また、Esoteric TwistによってStreamingと衝突計算を効率的に組み合わせ、GPUのメモリアクセスを効率化しています。このように、VirtualFluidsでは衝突モデルだけでなく、データ配置や変換処理も含めて計算効率を高めています。
7.4 Cumulant LBMの効果の整理
| 評価項目 | 技術的な特徴 | 期待される効果 |
|---|---|---|
| 数値安定性 | Cumulantごとの緩和 | 高次モードの制御 |
| 数値精度 | K17の高次Cumulant処理 | 拡散項の4次精度収束 |
| 変換効率 | Chimera Transformation | 演算量・メモリ使用量の削減 |
| メモリ効率 | Esoteric Twist | Streamingの効率化 |
| 空間解像度 | Grid Refinement | 必要な領域への計算資源の集中 |
| 並列計算 | GPU・CPU並列化 | 大規模計算への対応 |
LBMの衝突モデル「BGK・MRT・Cumulant」の直感的理解
BGK・MRT・Cumulantの違いを理解するには、数式から入るよりも、「流体の分布情報を、どのような単位に分解して、どのように平衡状態に近づけるのか」 という視点から比較すると理解しやすくなります。
今回は、LBMを初めて学ぶ人を対象に、次の3段階で理解できる教材にまとめます。「1. まず、衝突計算(Collision)とは何かを理解する。2. BGK・MRT・Cumulantの計算方法を比較する。3. 3つのモデルの違いを、図と身近なイメージで理解する。」
【LBMの衝突モデルを理解する:BGK・MRT・Cumulantの違い】
1. そもそも、LBMの衝突計算とは何か?
LBM(格子ボルツマン法)では、流体を小さな粒子の集まりとして考えます。各格子点には、粒子が移動する方向ごとに分布関数が格納されています。例えば、2次元のD2Q9モデルでは、粒子の移動方向は9方向です。流体の粒子は、各方向に移動しながら、周囲の粒子と相互作用します。この相互作用を数値的に表現するのがCollision(衝突計算)です。衝突計算では、現在の分布関数を局所的な平衡分布関数に近づけます。その後、Streaming(伝播)によって、粒子の分布情報を隣接する格子点へ移動させます。
LBMの基本的な計算サイクル
分布関数 → Collision(衝突) → 衝突後の分布関数 → Streaming(伝播) → 次の時間ステップ
2. BGKモデル:全員が同じルールで緩和する
BGKモデルは、最も基本的な衝突モデルです。イメージとしては、9方向の粒子が、それぞれ異なる方向に進んでいても、全員が同じ緩和ルールに従って平衡状態に近づく方法です。例えば、クラス全員が同じペースで目標に近づくようなものです。
計算式
$f_i^{post} = f_i - ω(f_i - f_i^{eq})$
ここで、$f_i$:衝突前の分布関数、$f_i^{post}$:衝突後の分布関数、$f_i^{eq}$:平衡分布関数、$ω$:共通の緩和率、です。ωが大きいほど、1回の衝突で平衡状態に近づく割合が大きくなります。
BGKの特徴
緩和率は基本的に1種類 計算式が簡単 プログラムを実装しやすい 低粘性や複雑な流れでは数値不安定性が問題になる場合がある
3. MRTモデル:役割ごとに異なるルールで緩和する
MRTモデルは、分布関数をモーメントという別の表現に変換してから衝突計算を行います。イメージとしては、クラス全員を一律に扱うのではなく、役割ごとにグループ分けして、それぞれに異なる目標や緩和速度を設定する方法です。
例えば、「流体の密度に関係するグループ・流体の運動量に関係するグループ・せん断変形に関係するグループ・高次の分布特性に関係するグループ」に分けて考えます。各モーメントに異なる緩和率を設定できます。
計算の流れ
分布関数 f → モーメント変換 M → モーメント m → 各モーメントを異なる緩和率で緩和 → 衝突後のモーメント → 逆変換 M⁻¹ → 衝突後の分布関数
MRTの特徴
複数の緩和率を利用する モーメントごとに緩和を調整できる BGKよりも調整の自由度が高い 変換行列などが必要になり、実装は複雑になる
4. Cumulantモデル:分布の特徴をさらに整理してから緩和する
Cumulantモデルは、MRTと同じように、分布関数を別の数学的表現に変換して衝突計算を行います。ただし、重要な違いがあります。MRTではモーメントを利用しますが、Cumulantでは、中心モーメントからさらにCumulantへ変換します。なぜ、このような変換をするのでしょうか?それは、分布の特徴を、低次の情報の組み合わせによる影響を取り除いた形で整理するためです。
例えば、1次元の確率分布を考えます。「1次モーメント:平均的な位置・2次中心モーメント:分布の広がり・3次中心モーメント:分布の左右非対称性・4次Cumulant:分布の広がり方の特徴を、2次の影響を考慮して表現したもの」4次Cumulantは、次の式で表せます。κ₄ = μ₄ - 3μ₂²
ここで、κ₄:4次Cumulant、μ₂:2次中心モーメント、μ₄:4次中心モーメント、です。
つまり、Cumulantは単純にモーメントを並べたものではなく、低次のモーメントとの関係を考慮した表現です。
Cumulantの計算の流れ
分布関数 f → 中心モーメント → Cumulant → 各Cumulantを平衡状態に向けて緩和 → 衝突後のCumulant → 中心モーメントへ逆変換 → 分布関数へ逆変換
Cumulantの特徴
中心モーメントからCumulantへ変換する 分布の統計的な特徴を整理して表現する 各Cumulantの緩和を調整できる 高次のモーメントの扱いを工夫できる 実装には変換式や逆変換式が必要になる
5. BGK・MRT・Cumulantを比較する
| 比較項目 | BGK | MRT | Cumulant |
|---|---|---|---|
| 基本となる表現 | 分布関数 | モーメント | Cumulant |
| 緩和方法 | 共通の緩和率 | 複数の緩和率 | Cumulantごとの緩和 |
| 変換処理 | 基本的に不要 | モーメント変換 | 中心モーメント・Cumulant変換 |
| 計算の複雑さ | 小さい | 中程度 | 大きい |
| 調整の自由度 | 小さい | 大きい | 大きい |
| 数値安定性 | 条件に依存 | 調整により改善可能 | 高次成分の制御などにより改善可能 |
※密度・運動量などの保存量は、各モデルで適切に保存されるように扱います。また、Cumulantの緩和方法は実装によって異なります。
6. 3つのモデルを直感的に理解する
3つのモデルの違いは、流体の分布情報をどのように整理して衝突計算するかにあります。
BGK:全員に同じルール 粒子の分布情報をそのまま扱い、共通の緩和率で平衡状態に近づけます。
MRT:役割ごとに異なるルール 分布情報をモーメントに変換し、それぞれのモーメントに異なる緩和率を設定します。
Cumulant:分布の特徴を整理してから調整 中心モーメントをCumulantに変換し、低次のモーメントの影響を考慮した表現で衝突計算します。
7. 最後に覚えておきたいこと
BGK・MRT・Cumulantは、いずれもLBMのCollisionを実行するためのモデルです。違いは、衝突計算に利用する数学的な表現と、緩和の方法にあります。
「BGK:分布関数を直接緩和する。」「MRT:モーメントに変換して、それぞれを緩和する。」「Cumulant:中心モーメントからCumulantに変換して、それぞれを緩和する。」
重要なのは、3つのモデルが異なるのは、粒子の移動方向ではなく、衝突計算の方法であるという点です。 Streamingの基本的な考え方は、これらのモデルで共通しています。
3つのモデルの違いを流れで理解する
特に重要なのは、次の3つの処理経路の違いです。
① BGK:直接緩和
分布関数 f:9方向の粒子の分布情報 → 共通の緩和率 ω:全方向を同じルールで緩和 → 衝突後の分布関数
② MRT:モーメントごとに緩和
分布関数 f → モーメント変換:モーメント m:密度・運動量・高次モーメントにそれぞれに緩和率を設定 → 逆変換;衝突後の分布関数
③ Cumulant:統計的な特徴を整理して緩和
分布関数 f → 中心モーメント:局所流速を基準にした分布情報 → Cumulant:低次モーメントの影響を整理した表現 → Cumulantごとに緩和:各成分の平衡値と緩和率を設定 → 逆変換:衝突後の分布関数
もう一つ大切なポイント:Cumulantはなぜ使うのか?
BGKからMRT、Cumulantへと進むと、衝突計算の表現方法が変わり、緩和の自由度が高くなります。ただし、単純にCumulantが常に優れているということではありません。
- BGK:簡単に実装でき、基本的なLBMの学習に適している。
- MRT:モーメントごとの緩和を調整でき、数値安定性の改善に役立つ。
- Cumulant:高次の分布特性を整理して扱うことで、特に複雑な流れや高レイノルズ数の計算で有効な場合がある。
まとめ
今回は、VirtualFluidsの特徴と、Cumulant衝突モデルの基本原理について解説しました。重要なポイントは次のとおりです。
- LBMではCollisionとStreamingを繰り返して流体の時間発展を計算する。
- BGKは単一緩和時間、MRTは複数緩和時間を利用する。
- Cumulantモデルでは、中心モーメントをCumulantに変換して衝突計算を行う。
- K15は基本的なCumulant法、K16は定密度流れ向け、K17は拡散項の4次精度収束を目指したモデルである。
- VirtualFluidsではChimera TransformationやEsoteric Twistなどを組み合わせて、計算効率を高めている。
Cumulant LBMの性能を理解するためには、衝突モデルだけでなく、モーメント変換、Streaming、格子構造、GPU計算を含めた全体の計算構成を理解することが重要です。
参考資料・執筆時に参照する公式情報
本文の技術的な根拠として、以下の参考文献をご紹介します。
-
VirtualFluids公式論文(2025):全体構成、Cumulant、Chimera Transformation、Esoteric Twist、格子細分化の説明に使用します。
VirtualFluids – open source parallel LBM solver -
K17の公式APIドキュメント:実際のK17衝突計算、緩和率、乱流モデルの実装を確認できます。
VirtualFluids K17 API -
K17のソースコード:C++の実装を確認するための資料です。
K17CompressibleNavierStokes.h -
公式ソースコード:
VirtualFluids ソースコード配布





