Simulation of Virus-Laden Droplets Behavior in AFDET
https://enehentaro.github.io/droplets_simulation/
※FORDを使用しています.
- ビルドに
cmake
コマンドとmake
コマンドを使うので, 要インストール. - CMakeに関する説明はこちら
ルートディレクトリ(README.mdのある階層)での作業.
- 「SampleCase」ディレクトリを複製したのち, 名前を変更する. (ケース名を付ける)
- ケースディレクトリ内の条件ファイル(condition.nml, initial_position.csv)を編集する.
- 以下OSに応じてコンパイル&実行する.
Linuxの場合
$ source build.sh
でビルド・CTest・パス通しまで出来る. (コンパイル手法を変える場合は各自で編集)$ MAIN
で実行. (プログラム名は自分で変える)
Windowsの場合
> .\build.bat
(Windows powershellにて実行)でビルドする.- batファイル内の
cmake ..
の後に-G "MinGW Makefiles"
でGeneratorを指定する.
- batファイル内の
> .\build\bin\main.exe
で実行. (プログラム名は自分で変える) ※おそらくVSCodeでコンパイラ指定のポップアップウィンドウが出るので, そこでgfortranのパスを通す.
- シェルスクリプトを使用しない場合は, 下記順序に従ってコマンドを入力
$ mkdir build
でビルドディレクトリ作成する.$ cd build
で移動する.$ cmake ..
で依存関係解決.-D CMAKE_Fortran_COMPILER=[ifort/gfortran]
でコンパイラ指定.-D CMAKE_BUILD_TYPE=Debug
でデバッグ用コンパイルオプション付与.-D use_OpenMP=ON
でOpenMP用コンパイルオプション付与.(FPH解析時のみ有効)find_package
でエラーが起こる場合はコンパイラにOpenMPが付属していないので, 要インストール. (tdm-gccはデフォルトでついてない)
$ make
でコンパイル.
- リスタート位置 num_restart
- 通常は
0
を指定する. 1以上
にすると, その値に対応するbackupファイルが読み込まれ, そこからリスタートが始まる.
- 通常は
- 初期分布ファイル名 initialDistributionFName
- 指定したbackupファイル(.bu)が読み込まれ, それを飛沫初期分布とする.
- 初期分布を固定したくない場合はコメントアウトする.
- 飛沫周期発生 periodicGeneration
- 1秒当たりの発生飛沫数(整数)を指定する.
- 初期配置飛沫をすべてNonActiveにしたのち, 順次Activateしていくので, 初期配置数が飛沫数の上限となる.
- 気流データファイル名 path2FlowFile
- 実行ディレクトリからの相対パス, もしくは絶対パスを指定する.
- 現在可能な流れ場ファイル:
- VTK
- INP
- FLD
- FPH
- CUBE格子(PLOT3D)は、予め非構造格子に変換してから計算してください.
- .arrayファイルを指定する場合、別途メッシュファイルが必要なので,
meshFile = ***
と指定する.
- ステップ数オフセット OFFSET
- 飛沫計算を, 流体連番ファイルの途中の番号から始めたいときに指定する.
- 気流データを周期的に用いる場合の先頭と末尾 LoopHead, LoopTail
- 任意の区間の流体連番ファイルを繰り返し用いるときに指定する. (例えば呼吸のサイクル)
(先頭) = (末尾)
とすると, そのステップ数到達後は流れ場の更新が起こらなくなる.(先頭) > (末尾)
とすれば, 特殊な処理は起こらず, 流体連番ファイルが順番に読み込まれる.
- 初期飛沫の配置帯(直方体)を設定する.
- 左から順に, 直方体の中心座標(x,y,z), 直方体の幅(x,y,z).
- 改行すれば配置帯を複数設定できる.
プログラム内では,2次精度ルンゲクッタ法で解いている.
プログラム内では,上式を無次元化・離散化した次式を解いている.
- CUBE2USG
- CUBE格子を非構造格子に変換できる.
- droplet2CSV
- 飛沫計算結果を再度読み込み, 統計データ(浮遊数推移など)をCSVファイルに書き出す.
- dropletCount
- 飛沫計算結果を再度読み込み, カウントボックスを通過した飛沫数を調べる. optionディレクトリ内の"boxList.csv"を, ケースディレクトリに配置する必要がある.
- initialTranslate
- 飛沫の初期配置データを読み込み, 任意の座標への回転, 平行移動を行う. by Konishi
- 複数ケース連続実行
- 実行時にTXTファイル名を入力すると, そのファイルに列挙された複数ケースを連続実行できる.
- basicSetting.nml
- optionディレクトリ内にある, 付着判定のオンオフや, 飛沫間合体の設定が可能.初期半径分布ファイルの指定も可能.
- コンパイル後,
$ ctest
でCTestが実行可. (buildディレクトリにて) - CTestの実行ディレクトリは、
test/
になる. (buildディレクトリではない) - テスト用プログラムはすべて
test/
で管理しよう.