OpenLB
ナビゲーションに移動
検索に移動
OpenLBプロジェクトは、格子ボルツマン法を実装するためのC++パッケージを提供しています。このパッケージは、数値流体力学など、幅広いマルチフィジックス輸送問題に対応します。ソースコードは公開されており、読みやすく、モジュール化され、プラットフォームに依存しない方法で構築されています。これにより、学術アプリケーションと高度なエンジニアリングアプリケーションの両方で、迅速な実装が可能になります。また、新しい物理モデルを追加するための拡張も容易です。
インストール
Windows+WSL
まずWSLをインストールする。[1]
OpenLBをダウンロードする。[2]ダウンロードしたら圧縮ファイルを解凍する。
WSLを起動する。
WSL内にmakeをインストールする。
sudo apt update
sudo apt install make gcc g++ openmpi-bin libopenmpi-dev
WSL内で解答した圧縮ファイルのフォルダに移動する。 makeを実行します。
make
これでOpenLBのコンパイルは完了です。
インストールの確認
試しに簡単なソルバをコンパイルして計算してみます。
cd examples/laminar/cavity2d
makeします。
make
計算を実行してみます。
./cavity2d
cavity2dフォルダ内にtmpフォルダが作成され、その中に計算結果が保存されています。
vtkDataフォルダの中にあるcavity2dvtk.pvdをParaViewで読み込み、計算が実行されていることを確認してください。
GPUのみで計算実行
WSL
CUDAのインストール
Windows側でNVIDIAのドライバーを入れておき、nvidia-smiコマンドが実行できることを確認する。
cudaをインストールする。[3]
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda-repo-wsl-ubuntu-13-2-local_13.2.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-13-2-local_13.2.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-13-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-2
インストール出来たら環境変数を追加する。
echo export PATH=${PATH}:/usr/local/cuda-13.2/bin >> ~/.bashrc
echo export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-13.2/lib64 >> ~/.bashrc
OpenLBの再コンパイル
config.mkをconfig/gpu_only.mkを参考に書き換える。
GPUによってパラメータの変更は必要。
(RTX2060の場合)
# Example build config for OpenLB using CUDA on single GPU systems
#
# Tested using CUDA 11.4
#
# Usage:
# - Copy this file to OpenLB root as `config.mk`
# - Adjust CUDA_ARCH to match your specifc GPU
# - Run `make clean; make`
# - Switch to example directory, e.g. `examples/laminar/cavity3dBenchmark`
# - Run `make`
# - Start the simulation using `./cavity3d`
CXX := nvcc
CC := nvcc
CXXFLAGS := -O3
CXXFLAGS += -std=c++20 --forward-unknown-to-host-compiler
PARALLEL_MODE := NONE
PLATFORMS := CPU_SISD GPU_CUDA
# for e.g. RTX 30* (Ampere), see table in `rules.mk` for other options
CUDA_ARCH := 75
FLOATING_POINT_TYPE := float
USE_EMBEDDED_DEPENDENCIES := ON
再コンパイルする。
make clean
make
ソルバのコンパイル
ソルバも再コンパイルする。
make clean
make
実行
実行はCPU版と同じ。
./<solver>