12/10/2019

FantomRefined luaファイル解説マニュアル

【注意】Fantomの実行は,luaのプログラムを実行することです.流体解析モジュールやその他のモジュールはluaのライブラリーとなっており,必要に応じて利用(require)します.

  1. luaファイル先頭のpackage.cpath行は.モジュール(*.so, *.dll)がluaファイルと異なるフォルダーに入っている場合に指定します.同じフォルダーにモジュールが入っている場合には必要ありません.

  2. requireを利用して必要なモジュールだけをロードします.多くの場合,流体モジュールのfantomと出力用モジュールのwriterは常に利用します.具体的には以下のようにロードします

    require('fantom')
    require('writer')

  3. string_vectorという関数をユーティリティーとして用意しています.これはluaの文字列テーブルをそのままC++オブジェクトに渡せないために用意したもので,この関数でluaテーブルからC++のstd::vector<std::string>に変更してから,C++オブジェクトに渡します.(注意:doubel_vectorという実数用の変換関数も同様に利用することがあります)

  4. luaファイルの前半部分で,基本的なパラメータを設定します.

  5. dzは鉛直方向の格子幅を指定します.C++のvector(double)形式で渡すか,fantom.single_line_data関数を用いてファイル(一列データ)を読み込みます.いずれの場合にも一行目は最下層(水底側)のセル厚さで,最終行が最上層(水面側)のセル厚さになります.

  6. オブジェクトの生成
  7. water_body:set_uniform_surface_level()はfantom.WaterBodyの関数で,計算開始の初期水位(一定値)を与えるコマンドです.(設定を変えない限り)水位ゼロはグリッドの最下層です.
  8. water_body:set_var()は計算する変数を登録するコマンドです.任意の変数を加えることができますが,u,v,wは必ず付け加える必要があります.引数は,名前,初期値,(以降省略可)高次精度移流計算ONの最小差分,プラントル数,乱流プラントル数).変数の追加は計算開始時のセル体積を決めた後(update_wet_compunents)に行う必要がある.
  9. 時間進行について(time marching)