Open Source Lattice Boltzmann Code

Copyright ©2013- Takeshi Seta All Rights Reserved. test test2 test3 test4
The programs below are available for your non-commercial use only. We are all volunteers, so you can't expect us to answer your question.

※商用利用でなければ基本的に自由に使って頂いて構いません。なお、個別のお問い合わせにはお答えできないことを、予めご了承ください。

1.C Programming Language

格子ボルツマン法をC言語で作成したプログラムです。GCCコンパイラを使っています。
  1. Cavity flow (Cumulant)
    キャビティー・フローをキュムラント法を適用した格子ボルツマン法で計算するプログラムです。
      ✓ Source Code lbm_caviCUMULANT.c
         The source code is written in C programming language.
         Compiler
          > gcc -o lbm_caviCUMULANT.out lbm_caviCUMULANT.c -lm
          > ./lbm_caviCUMULANT.out
    
    Re = 10,000 (Velocity Magnitude, Cumulant)

    Re = 100,000 (Velocity Magnitude, Cumulant)
    境界条件の設定には、ハーフウェイ・バウンスバック法を使用しています。ソースコードを lbm_caviSRT.c という名前で保存した後、上記のようにLinux上でコンパイルして実行して下さい。
    格子点数を \(101 \times 101\) としており、レイノルズ数を 10,000 とした場合の格子ボルツマン法での計算結果を示します。動画はParaViewで作成しました。さらに、レイノルズ数を 100,000 にしても発散することなく計算が可能です。
    本キュムラント法を適用した格子ボルツマン法の計算結果は、内田孝紀教授(九州大学:詳細ページ)がYouTubeに公開されているキャビティー・フローの計算結果(動画リンク)とほぼ等しい結果が得られているように見えます。
    平衡分布関数は Martin Geier (2015) の論文の Appendix A (544ページ) のように、 \(f_\alpha^{eq} - \omega_\alpha\) と考えており、ハーフウェイ・バウンスバック法において以下のように適用しています。
    \(f_\alpha^{eq} = \omega_\alpha \left[ 1 + \left(3( \mathbf{c}_\alpha \cdot \mathbf{u} ) + \frac{9 (\mathbf{c}_\alpha \cdot \mathbf{u})^2}{2} - \frac{3 \mathbf{u} \cdot \mathbf{u}}{2} \right) \right] - \omega_\alpha\) \(= \omega_\alpha \left(3( \mathbf{c}_\alpha \cdot \mathbf{u} ) + \frac{9 (\mathbf{c}_\alpha \cdot \mathbf{u})^2}{2} - \frac{3 \mathbf{u} \cdot \mathbf{u}}{2} \right)\)
    境界条件については、さらに検討が必要そうです。ちなみに、初期条件は \(f_\alpha=0\) で与えています。
    Martin Geier, Martin Schönherr, Andrea Pasquali, Manfred Krafczyk, The cumulant lattice Boltzmann equation in three dimensions: Theory and validation, Computers & Mathematics with Applications, Volume 70, Issue 4, 2015, 507-547


  2. Cavity flow (Single Relaxation Time)
    キャビティー・フローをSRT衝突則を適用した格子ボルツマン法で計算するプログラムです。境界条件の設定に、ハーフウェイ・バウンスバック法を用いました。ソースコードを lbm_caviSRT.c という名前で保存した後、下記のようにLinux上でコンパイルして実行して下さい。
    キュムラント法との数値的安定性を比較・検証するために、格子点数を \(101 \times 101\) として、SRT衝突則を適用した格子ボルツマン法で計算を行った結果を示します。動画はParaViewで作成しました。
    なお、格子点数を \(101 \times 101\) から変更しないで、レイノルズ数を 10,000 に引き上げると、SRT衝突則では数値的に発散します。
      ✓ Source Code lbm_caviSRT.c
         The source code is written in C programming language.
         Compiler
          > gcc -o lbm_caviSRT.out lbm_caviSRT.c -lm
          > ./lbm_caviSRT.out
    
    Re = 1,000 (Velocity Magnitude, SRT)
  3. Poiseuille flow
    ポアズイユ流の格子ボルツマン法での計算プログラムです。境界条件の設定には、バウンスバック法および Q. Zou and X. He, Phys. Fluids 9, 1591 (1997) の方法を使用しています。ソースコードを lbm_Poiseuille.c という名前で保存した後、下記のようにLinux上でコンパイルして実行して下さい。
      ✓ Source Code lbm_Poiseuille.c
         The source code is written in C programming language.
         Compiler
          > gcc -o lbm_Poiseuille.out lbm_Poiseuille.c
          > ./lbm_Poiseuille.out
    
  4. Poiseuille flow + OpenGL
    OpenGLを利用し、グラフィックス描写を追加したプログラムです。ソースコードを lbm_PoiseuilleOpenGL.c という名前で保存した後、下記のように「-lglut」オプションを追加してLinux上でコンパイルして実行して下さい。
      ✓ Source Code lbm_PoiseuilleOpenGL.c
         The source code is written in C programming language.
         Compiler
          > gcc -o lbm_PoiseuilleOpenGL.out lbm_PoiseuilleOpenGL.c -lglut
          > ./lbm_PoiseuilleOpenGL.out
    

2.Android Version of the Lattice Boltzmann Method

格子ボルツマン法のAndroid向けプログラムです。APKファイル(*.apk)をダウンロードし、インストールすれば起動できます。
作成には、Eclipse(日本語版)とJavaを利用しています。ソースコードも公開しています。
なお、本HPからAPKファイルをインストールするためには、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。インストール終了後、「提供元不明のアプリ」のチェックを外しておくと、セキュリティの関係上安全です。
apkファイルをAndroid端末(実機)にインストールする方法は、(参考リンク)をご参考ください。
  1. Particulate flow under gravity (Interactive Computational Fluid Dynamics)
    スマートフォンを傾けることで、粒子が移動・沈降するAndroid用のプログラムです。
    流体は格子ボルツマン法、剛体は Smoothed profile method(滑らかな界面方法)で計算しています。
    本プログラムは、金森隆様(KANAMORI SYSTEM Inc.)、鈴木邦明様((株)スズキシステムズ)、古宮規義様((株)アークリキッドデザイン)のご協力により作成されました。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
         LBMSurfaceView.java
     
      ✓ Android application
         package file (APK): 
         LBM_Gravity.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     
    密度 1.0 [g/cm³]、動粘性係数 0.1 [cm²/s] の流体の中に、密度 1.25 [g/cm³] の重い粒子を 3.0 [cm] × 3.0 [cm] の容器に投入しています。重力加速度の大きさは 981 [cm/s²] です。
    S. Jafari, R. Yamamoto, and M. Rahnama, Phys. Rev. E 83, 026702 (2011) の論文を参考にしています。
    LBMSurfaceView.java の追加の仕方(図1図2):
    「jp.seta.lbm_gravity」を右クリック ➔ 「新規」 ➔ 「クラス」 ➔ 「名前を LBMSurfaceView と同じにする」 ➔ 「完了」

  2. Particulate flow (Interactive Computational Fluid Dynamics)
    粒子と流体との相互作用を計算するAndroid用のプログラムです。画面をタップすると粒子が湧き出ます。
    流体は格子ボルツマン法、剛体は Smoothed profile method で計算しています。
    本プログラムは、金森隆様(KANAMORI SYSTEM Inc.)、鈴木邦明様((株)スズキシステムズ)、古宮規義様((株)アークリキッドデザイン)のご協力により作成されました。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         LBM_Particle.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     
    密度 1.0 [g/cm³]、動粘性係数 0.1 [cm²/s] の流体の中に、密度 0.7 [g/cm³] の軽い粒子を 0.5 [cm] × 0.5 [cm] の容器に投入しています。
    重力の影響は無視しています。
    S. Jafari, R. Yamamoto, and M. Rahnama, Phys. Rev. E 83, 026702 (2011) の論文を参考にしています。

  3. A circular ripple (Interactive Computational Fluid Dynamics)
    スマートフォンの画面をタップすると波紋が広がるAndroid用のプログラムです。
    波紋が広がる様子を格子ボルツマン法により計算しています。タップと連動するインタラクティブな数値流体力学(Computational Fluid Dynamics, CFD)ソフトです。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         LBM_Touch.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     

  4. Natural convection
    自然対流を格子ボルツマン法で計算するAndroid用のプログラムです。
    左壁は高温に、右壁は低温に、上下の壁は断熱境界に設定すると、浮力により自然対流が発生する様子が観察できます。
    格子点数は 51 × 51 で、レイノルズ数(またはレイリー数)を 1,000 から 100,000 の間で変更可能です。
    Y. Peng, C. Shu, and Y. T. Chew, Phys. Rev. E 68, 026701 (2003) の論文を参考にしています。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         LBM_Natural_Convection.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     

  5. Lid-driven cavity flow
    Lid-driven cavity flow(キャビティ流)を格子ボルツマン法で計算するAndroid用のプログラムです。
    正方形の容器の上壁を一定速度で駆動させることで、内部に形成される渦を観察できます。格子点数は 51 × 51 で、レイノルズ数を 100 から 400 の間で変更可能です。
    境界条件の設定には、Q. Zou and X. He, Phys. Fluids 9, 1591 (1997) の方法を使用しています。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         LBM_Cavity.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     

  6. Poiseuille flow
    ポアズイユ流を格子ボルツマン法で計算するAndroid用のプログラムです。バウンスバック境界条件を使用しています。
    緩和時間(Relaxation Time)を大きくしていくと、バウンスバック境界において、壁面の速度が完全な 0 にならなくなっていく現象を観察することができます。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         LBM_Poiseuille.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     

  7. Natural convection in the annulus
    同心円筒(アニュラス)間の自然対流を格子ボルツマン法で計算するAndroid用のプログラムです。
    外側の円筒を低温に、内部の中心に配置した小さな円筒を高熱に設定すると、浮力によって生じる自然対流を観察できます。
    格子点数は 51 × 51 で、外筒の幅に対する内筒の半径の比(R/L)を 0.1 から 0.3 の間で変更可能です。
    瀬田 剛、林 敬人、日本計算工学会論文集 Vol.11 pp.35-40 (2011) の論文を参考にしています。
      ✓ Source Code
         The android applications is written in Java.
         MainActivity.java
     
      ✓ Android application
         package file (APK): 
         SPLBM_Therm.apk
    
         ※ インストール前に、端末の「設定」→「ロックとセキュリティ」→「提供元不明のアプリ」にチェックを入れる必要があります。
         ※ セキュリティの関係上、インストール完了後は「提供元不明のアプリ」のチェックを外しておくことをお勧めします。
    
     



TOP