PalabosのTutorial解読(1) (ブログから記事移動)
今回も引き続き格子ボルツマン法のPalabosについて。
(前回までのおさらい)***************************
・ひょんなことからオープンソース]で格子ボルツマン法を扱うPalabosを知る
・格子ボルツマン法は混相流、特に液滴が飛び散る場合とか得意らしい
・幹事は以前よりミルククラウンの再現を目指しています
****************************************
さて、使ってみた次はTutorialを解読して中身の把握です。
以前の記事でも書いたように、Palabosはどうやらケースごとに
C++のコードをmakeして実行するようなので、
TutorialもC++のソースコードの書き方ということになっています。
PalabosのTutorialページ
http://www.palabos.org/documentation/tutorial/first-steps.html
もちろん英語ですが、ここで少しずつ理解しながら解読を試みます。
/palabos-v1.4r1/examples/tutorial/tutorial_1/tutorial_1_1.cpp
宣言とか部分
code:/palabos-v1.4r1/examples/tutorial/tutorial_1/tutorial_1_1.cpp
<span style="color: #007020;">#include "palabos2D.h"</span>
<span style="color: #007020;">#include "palabos2D.hh"</span>
<span style="color: #007020;">#include &lt;iostream&gt;</span>
<span style="color: #007020;">#include &lt;iomanip&gt;</span>
<span style="color: #007020;">using</span> <span style="color: #007020;">namespace</span> plb;
<span style="color: #007020;">using</span> <span style="color: #007020;">namespace</span> std;
<span style="color: #007020;">typedef</span> <span style="color: #902000;">double</span> T;
<span style="color: #007020;">#define DESCRIPTOR plb::descriptors::D2Q9Descriptor</span>
palabos2D.hとpalabos2D.hh
おまじない。Palabosのコードを書く上で必要なライブラリのようです。(正確には原文を参照してください)
この例題は2次元解析なので”2D”ですが、3次元問題の時は”3D”に置き換えられてます。
<iostream>と<iomanip>
C++の標準ライブラリ。
iostreamはstd::coutやstd::cinを使うためのライブラリ。「using namespace std;」とセット。
iomanipは入出力操作(マニピュレータ)に引数を伴う場合に必要なライブラリ。
using namespace plb;
Palabosのライブラリの名前空間。
(Palabos]開発者用ドキュメント。名前空間リスト)
http://www.palabos.org/documentation/develguide/namespaces.html
typedef double T;
シミュレーションは、倍精度浮動小数点数で実行されます。#define DESCRIPTOR plb::descriptors::D2Q9Descriptor
2次元の”D2Q9格子”を使用します。
格子ボルツマン法は、同じ2次元でも「格子」に種類があるので、それを指定しているのかな?
たぶん自由度というか計算精度的なものが変わってくると思う(予想)。
D2Q9<D2Q9格子図>