この文書では、Windows11上でLBM(格子ボルツマン法)流体解析ツールFluidX3Dを活用する方法を紹介します。
格子ボルツマン法の概要
まず「格子ボルツマン法(LBM:Lattice Boltzmann Method)」は、流体を連続体として扱うのではなく、格子点上で粒子の移動と衝突を計算する手法であり、その特徴から高い計算効率と柔軟性が期待されています。
特に、計算が局所的で独立性が高いため、GPUや大規模並列計算環境で性能を最大限に引き出せる点は大きな利点です。
また、複雑形状の境界処理が比較的容易で、多相流、粒子混相流、熱流体、反応を伴う流れなどさまざまな拡張モデルが開発されていることから、応用分野は工学から生体、材料科学まで広がっています。
格子生成もシンプルで、実験や既存シミュレーションとの連携がしやすい点も注目されています。総じて、LBMは計算流体力学の新たな可能性を切り開く有望な手法です。
FluidX3Dの概要
今回利用する「FluidX3D」は、格子ボルツマン法(LBM)に基づく高速な流体シミュレーションエンジンで、特にGPUでの計算に最適化されている点が大きな特徴です。OpenCLを用いて実装されているため、NVIDIAだけでなくAMDやIntelなど、幅広いGPU環境で動作します。
また、メモリ使用量が非常に少なく、同じGPUでも他のCFDソルバと比較して高い解像度の計算が可能です。単相流だけでなく、多相流や熱輸送も扱うことができ、研究用途から教育、さらには実用的な解析にも応用範囲が広がっています。
オープンソースとして公開されているため、コードの理解や拡張が容易であり、流体シミュレーションの基盤技術を学びたい人にとっても優れた教材となります。
FluidX3D活用の注意点
ただし利用においては、注意点があります。開発者はこのFluidX3Dをオープンソースとはしていません。以下のQ&Aの解説をよく確認してください。
「オープンソース」という技術的な用語は、利用に制限なく自由に使えることを意味しますが、私はその形態には納得していません。FluidX3Dは私が自分の時間を使って開発したものであり、私が補償を受けないまま他の誰かが利益を得ることは望んでいません。特に、他のCFDソフトウェアの価格を考えればなおさらです。
私が選んだライセンスの技術的な分類は「ソース公開・無償・非営利利用」です。ソースコードは自由に入手でき、使用、改変、再配布も可能ですが、それによって利益を得たり販売したりしないこと、そして軍事目的に使用しないことが条件となります(詳細はライセンスを参照してください)。
よって、個人利用・学術研究・教育学習などの非営利活動は良いと思いますが、業務利用・設計開発・軍事利用は許可されていません。
FluidX3D公式サイト
https://github.com/ProjectPhysX/FluidX3D
この記事は、以下の記事を参考(ほぼそのまま)にしています。ありがとうございます。
FLuidX3Dの特徴
FluidX3Dは、上記の制限があるものの、高性能な格子ボルツマン法(LBM)流体シミュレーターであり、以下の優れた特徴を持っており、LBMツールとして期待されています。
- OpenCLを基盤としたGPUやCPUなど、対応デバイス上で高い並列計算性能を発揮します。特定のGPUベンダーに依存せず、NVIDIA・AMD・Intelなど幅広い環境で動作します。
- コンパクトな実装で、軽量でメモリ効率に優れ、単精度演算による高速度と高解像度シミュレーションを両立しています。
- FluidX3Dはリアルタイム可視化機能を内蔵しており、計算過程を即座に3D表示可能です。これにより流体の挙動を直感的に把握でき、解析・調整をその場で行うことができます。
- 可視化と計算を同時に行いながらも高いパフォーマンスを維持し、教育・研究・工学分野でのインタラクティブな流体解析ツールとして注目されています。
FluidX3Dを利用する環境
以下の公式ドキュメント「FluidX3D Documentation - How to get started?」によると、「Windows / Linux / Androd」での導入手順が説明されています。この記事では、Windowsの手順を示します。続編の記事では、Linuxの手順を予定しています。
https://github.com/ProjectPhysX/FluidX3D/blob/master/DOCUMENTATION.md
WindowsとGPUドライバの状態
必須ではないと思いますが、ここではWindows Updateを繰り返して、最新の状態にしています。ちなみに、コマンドwinver.exeを実行すると、「バージョン24H2(OSビルド 26.100.7019)」となっていました。
FluidX3Dは、OpenCLを用いてGPUによる高速処理が可能です。ここで検証したPCでは、NVIDIAコントロールパネルを見ると、「NVIDIA GeForce RTX 3060 Laptop GPU」が搭載され、ドライバーは「バージョン581.57」となっています。
なお、ドライバはビルドとの関係があると思うので、最新版が良いと思います。OpenCLを活用しているため、AMDやIntelのGPUも活用することができます。この場合にも、最新のドライバを導入しておいてください。
FluidX3Dの導入手順
先に示した公式ドキュメントの「0. Install GPU Drivers and OpenCL Runtime」を参考に進めます。まず、「▶(click to expand section)」をクリックして展開します。
この中で、「Windows」の「GPUs・CPUs」の2つの項目の「▶」で展開して、指示通りに進めてゆきます。
WindowsのGPUの対応
以下のように、GPUドライバをダウンロードしてインストールする指示です。ここにはOpenCLのランタイムも含まれているとのことです。上記の環境で記したように、導入したら再起動しておきます。
「Download and install the AMD/Intel/Nvidia GPU Drivers, which contain the OpenCL Runtime.」
WindowsのCPUの対応
以下のように、OpenCのランタイムをダウンロードしてインストールする指示です。このOpenCLは、AMD/Intelの両方のCPUで動作するとのことです。導入したら再起動しておきます。
「Download and install the Intel CPU Runtime for OpenCL (works for both AMD/Intel CPUs).」
具体的な手順を示します。
まず、Intel CPU Runtime for OpenCLのリンクにアクセスし、「2025.2 ReleaseーWindows」の項目にある、インストールファイル「w_opencl_runtime_p_2025.2.0.768.exe」をクリックして、ダウンロードしておきます。
ダウンロードファルダに、このファイル(80.3MB)が保存されています。これはインストーラーファイルとなっているので、ダブルクリックして、以下の手順でインストールを進めます。
・デバイス変更の許可:「はい」
・Extract the product package to folder:そのまま「Extract」
・Intel CPU Runtime for OpenCL Applications Setup:「Next」
・End-User License Agreement:「I accept...」をチェックし、「Install」
・OpenCL Application Setup Wizard:「Finish」
成功したら、再起動する。
FluidX3Dの入手
次に公式ドキュメントの「1. Download FluidX3D」を参考に進めます。ここでは「Download and unzip the source code, or clone with」とあり、コマンドgitを用いていますが、Windowsでここでしか使わないので、自分は簡単な方法で進めます。
まず公式githubサイトに接続します。
https://github.com/ProjectPhysX/FluidX3D
右上の緑色のボタン「<> Code ▼」でメニューを出して、「Download ZIP」から入手します。ダウンロードフォルダに、FLuidX3Dのソースコードファイル「FluidX3D-master.zip(22MB)」が保存されます。
本記事では、インストールは、C:\OpenCAE内に行うために、Cドライブにフォルダ「OpenCAE」を作っておきます。まず、ダウンロードしたファイルをフォルダ「OpenCAE」に移動します。
このファイルを右クリックしてメニュー「すべて展開」を選択し、フォルダーの指定を「C:\OpenCAE\」としてから、「展開」すると、FluidX3D-masterフォルダができます。この中に、FluidX3Dのファイルがすべて含まれています。
Visual Studio Community版の導入
FluidX3Dは、単体のアプリケーションというより、利用者が必要とする問題解決のプログラムをC++で作成して、それをコンパイルする必要があります。
つまり、インストール作業はなくて、代わりにソースコードを利用者がコンパイルすることが前提となり、何らかの開発環境が必要になります。
Windowsの場合には、「Visual Studio Community版」が無償で利用できるので、FluidX3Dではこれを用いて、OpenCLを用いたコンパイルを行います。
なお、ソースコードは工夫されており、安易に作業ができるよう工夫していますが、C++のプログラミング経験は、セットアップやコンパイルに有用です。
最初は、提供された例題ファイルを、公式ドキュメントの「2. Compiling the Source Code」の手順を参考にコンパイルして、動作確認を行ってみます。
Windows上でコンパイルに用いるVisual Studio Community版を入手を以下のサイトから、ダウンロードします。
https://visualstudio.microsoft.com/ja/vs/community/
ウエブページの下のほうに進み、「Visual Studio Community」の項目で、「無料ダウンロード」をクリックします。すぐに終わり、ダウンロードフォルダに、インストール用ファイル「VisualStudioSetup.exe」が保存されます。
このファイルをダブルクリックして、以下の手順でインストールを進めます。
・デバイス変更の許可:「はい」
・Visula Studio Installer:「続行」(インストーラーの準備を待つ)
・インストーラーのワークロード:「C++によるデスクトップ開発」を選択し、オプションはそのままで「インストール」する。(ダウンロードとインストールを結構な時間待つ)
・インストールが完了しました:「OK」
・Visula Studio Installer:右上「×」で終了する
Visula Studioを起動するので、「スタート → すべて → Visual Studio 2022」を選択し、以下のように設定します。
・Visula Stuidoにサインインする:ここでは「後でアカウントをスキップした追加します。」で進めます
・エクスペリエンスのカスタマイズ:開発設定・全般 配色テーマ・濃色
・「Vusual Studio の開始」で起動し、確認したら右上「×」で終了します。
すぐに起動するためには、デスクトップにリンクを作ると便利です。
FluidX3Dのビルドと動作確認
これで準備ができたので、FluidX3Dをビルドして、動作確認を行います。まず、「Visual Studio 2022」を起動します。
黒いウインドウが表示されたら、右側の「開始する」から、「プロジェクトやソリューションを開く」を選択します。
先にインストールしたフォルダ「C:\OpenCAE\FluidX3D-master」を開いて、「FluidX3D.sln」を選択して「開く」です。
黒いウインドウで「このプロジェクトはWebからダウンロードされました」と注意が出ますが、「信頼して続行」で進めます。
「ソリューション操作の再ターゲット」が聞かれますが、「Windows SDKバージョン:10.0」「プラットフォームツールセット」v4.3へのアップグレード」のままで、「OK」で進めます。
ウインドウの右側の「GitHub Copilotチャット」を右の「×」で閉じると、「ソリューションエクスプローラー」が表示されます。
ここで「▶FluidX#D」の「▶」を押すと、ファイルが展開されるので、この中の「setup.cpp」を選択すると、ソースプログラム全体が表示されます。
最初のファイルの状態は「benchmak」を実行する設定になっています。
ここで、上から2段目のツールバーの「▶ローカルWindowsデバッガー」をクリックして、ビルドを開始します。終了すると、黒い端末が起動して、ベンチマークが実行されます。
下のほうのMLUPsの表示が動きながら処理が進み、最後に一番下に「Info: Peak MLUPs/s = 3590」と出たら終了です。このウインドウ内で、2回任意のキーで閉じます。
この「MLUPs」は、「Million Lattice Updates per Second」の意味で、1秒間に百万格子を更新する単位の計算速度のベンチマーク値になっています。
なおこの実行形式は、ファルダ「FluidX3D-master\bin」の中に、「FluidX3D.exe」としてあります。これは「FluidX3D.pdb」とセットで実行されます。
この値は、公式ウエブに一覧表がまとめられており、比較検討することができます。
https://github.com/ProjectPhysX/FluidX3D
以上で、基本的な動作確認ができました。FluidX3Dには、以下の充実したマニュアルがあるので、それを参考にしながら活用手順を紹介してゆきます。
https://github.com/ProjectPhysX/FluidX3D/blob/master/DOCUMENTATION.md