FreeCAD0.19でCfdOFを使ってみた

### 概要
形状モデルに対して視覚的に境界条件を設定できるので便利だと思いました．
##### この記事の想定読者
●FreeCAD のユーザーで流体解析シミュレーションに興味がある人
●お金をかけずに流体解析シミュレーションを行いたい人
●DEXCS2020 for OpenFOAM のユーザーで，境界条件の設定方法について他の方法を試してみたい人
●OpenFOAM のユーザーで，メッシュ生成と境界パッチの設定を楽に行う方法を探している人

環境のセットアップについてはこの記事を参照してください．
[FreeCAD0.19でCfdOFをセットアップしてみる](https://qiita.com/Sagittarius_Chiron/items/c0f5a8c856c999c8d308)

### 前提とする端末環境
DEXCS2020 for OpenFOAM のアドバンス版と通常版の両方で動作確認しました．DEXCS2020 for OpenFOAM は下記の環境のため同様の環境ならば大丈夫だと思います．
　 ● Linux/ubuntu 20.04 LTS
　 ● OpenFOAM v2006
　 ● ParaView-5.6.3
　 ● cfMesh-v1.1.2
　 ● FreeCAD 0.19

### Cavity流れ
FreeCADを起動してください．
メニューバーから，[File]→ [New]を選んでください．
![image_101.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/f27b7639-bb26-afc7-e38d-c0d8bd5804c8.png)

ワークベンチを[Parts]に変更してください．[Create a Cube Solid]を左クリックしてください．
![image_102.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/b8dfaf09-4027-a141-832d-294943a11263.png)

ツリーの中で[Cube]を左クリックして選択状態にしてください．[Data]タブを左クリックしてください．Boxのサイズを確認してください．デフォルトの10mm×10mm×10mmで良いです。
![image_103.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/ab774072-65a3-a332-78e0-7a00d3e87905.png)

ワークベンチを[CfdOF]に変更してください．[Create an analysis container with CFD Solver]を左クリックしてください．
![image_104.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/30d31b14-6dc5-5186-dfa6-07daf6949073.png)

#### CFD計算の基本設定
[CfdAnalysis]の下の[PhysicsModel]を左ダブルクリックしてください．
![image_105.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/1d127213-591b-9f71-d349-2dfc822b47f0.png)

下のような画面が表示されます．
[Task]タブを左クリックしてください．[Steady]をチェックしてください．[Single phase][incompressible][viscous]をチェックしてください．[RANS]をチェックして[kOmegaSST]を選択してください．[OK]を左クリックしてください．<font color="Blue">(注1)</font>
![image_106.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/e317cdfb-06a7-26c5-c90f-554a7d00bb84.png)

#### 流体物性値の設定
[CfdAnalysis]の下の[FluidProperties]を左ダブルクリックしてください．下のような画面が表示されます．
[Task]タブを左クリックしてください．[Water]を選択してください．[OK]を左クリックしてください．
<details><summary><font color="DarkRed">2021/07/28 下の図の設定画面について注意事項を追記しました</font></summary>DynamicViscosity で単位[kg/(m*s)]とは酷いGUIだと思います．
動粘度の英訳はkinematic viscosity で，単位は[m2/s]です．粘度の英訳はviscosityで,単位は[kg/(m*s)]です．
出力されるOpenFOAMケースのケースファイル constant\transportPropertiesというファイルの記載を調べると，この欄は粘度(viscosity)の値を入力すれば良いことが判ります．</details>

![image_107.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/d0d0fbe3-3ed5-52c0-05cb-7a79b6b502c0.png)

<br>
[Model]タブを左クリックしてください．[FluidProperties]を左クリックしてください．[References]を設定します.[Cube]を左クリックして選択状態にしてください．[OK]を左クリックしてください．

![image_108.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/2899d89e-f1c7-7598-5b6e-25af10d44e85.png)

#### 初期条件の設定
[CfdAnalysis]の下の[InitialiseField]を左ダブルクリックしてください．下のような画面が表示されます．
[Task]タブを左クリックしてください．Velocity[Potential flow]，Pressure[Specify value][0]Paを選択してください．[OK]を左クリックしてください．
![image_109.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/ef5d63d9-75ab-798a-c04c-7589e5818be8.png)

#### 境界条件の設定
<b>[CfdAnalysis]が選択されている状態で</b>，[creates a CFD fluid boundary]を左クリックしてください．[Task]タブを左クリックしてください．Boundary[Wall]，Sub-type[Translating]を選択してください．上面を左クリックして選択状態にしてください．[Add]を左クリックしてください．Boundary face list に面の番号が入ります．Velocity[Cartesian compornents]を選択してください．Ux[1]m/s，Uy[0]m/s，Uz[0]m/sを入力してください．[OK]を左クリックしてください．
![image_110.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/c6372c86-4fcb-9d9e-b5e9-287e2e7cad7a.png)
![image_111.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/c360d137-37b9-e6b7-208a-3419775221f5.png)

同様にして、残りの５つの面にはBoundary[Wall]，Sub-type[No-slip(viscous)]という設定をしてください．
![image_112.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/b80d7084-8cde-03eb-b4f3-aa3ef6c8df52.png)

この操作によって[Model]ツリーに[wall]と[wall001]が作成されています．

#### メッシュの生成
[model]ツリーで左クリックするかビュー画面で図形を左クリックして<b>[Cube]を選択状態にしたのち</b>，[Create a mesh using cfMesh,snappyHexMesh or gmesh]を左クリックしてください．[Task]タブを左クリックしてください．Mesh Parameters：Element dimension [3D]，Mesh utility[cfMesh]，Base element size[0.001]m という設定をしてください．Mesh Case：[Write mesh case]を左クリックしてください．メッシュ作成用の設定ファイルが作成されます．Mesher：[Run mesher]を左クリックしてください．メッシュ作成が始まります．Visualisation：[Paraview]を左クリックしてください．ParaViewが起動するのでメッシュを確認してください．メッシュを確認したあとはParaViewを終了してください．[Close]を左クリックしてください．<font color="Blue">(注2)</font>
![image_113.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/fa92b529-1917-5844-dc88-ec2e34140a78.png)
[Model]タブを左クリックしてください．この操作によって，[Model]ツリーに[Box_Mesh]が作成されています．

#### CFD計算実行と結果の可視化
[CFDSolver]を左クリックしてください．
![image_114.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/956cf24f-52b5-5692-fccd-286147264d26.png)
[Data]タブを左クリックしてください．Solver：Parallelとparallel Cores の設定は自分が使う端末に応じて変更してください．parallel[true]は並列計算を行い[false]は行いません．Iterration ControlとTime Step Controlの設定についてはデフォルトのままで構いません．<font color="Blue">(注3)</font>
<details><summary><font color="DarkRed">2021/07/28 下の図の設定画面について注意事項を追記しました</font></summary>Convergence Tol は収束許容値です．
非圧縮性の場合は,SIMPLE {   } の中の  residualControl {   } の値に反映されます．
圧縮性の場合は,PIMPLE {    } の中の   outerCorrectorResidualControl {   } の値に反映されます．
p,UなどField量を計算するソルバーの収束許容値ではありません．
</details>
![image_114-2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/b4b6dfc6-c650-ee86-df2a-a8becf24b001.png)

[CFDSolver]を左ダブルクリックしてください
下のような画面が表示されます．[Task]タブを左クリックしてください．Case[Write]を左ダブルクリックしてください．ソルバー計算用の設定ファイルが作成されます．Solver[Run]を左クリックしてしてください．ソルバー計算が始まって残差グラフが表示されます．
<font color="Blue">(注4)</font>
![image_115.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/6e36d4fc-593f-f2ec-3c87-556f244bb7fd.png)

ソルバー計算が終了したら，Results[Paraview]を左ダブルクリックしてください．ParaViewが起動します．
![image_116.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/c3d5c825-7844-3160-1274-f440a45625d6.png)

下の図は可視化の例です．
![image_117.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/ef9b3cde-f406-97b2-0424-849b4ec25de0.png)


--------------------------------------
##### <font color="Blue">脚注</font>
<font color="Blue">(注1)</font>
定常流，単相流，非圧縮性，RANS型乱流モデルという設定です．乱流モデルはk-ω-SST型のみが選択肢に現れます．他の乱流モデルを使いたい場合は，constant/tubulencePropertiesファイルを１行だけ書き換えるだけで済みます．その具体的は方法については既存の書籍やwebに情報が載っているので各自で調べてください．

transientは非定常流，Compressibleは圧縮性です．これらの組み合わせも動作するようです．Compressibleにチェックをすると，High Mach Number にチェックを入れることができるようになります．High Mach Number にチェックを入れた時にはHiSAというソルバーを使って計算するように設定されます．HiSAというソルバーは，cfdOFの開発者が開発している独自のソルバーです．cfdOFのアドオンの設定画面からインストールできます．(この記事の投稿者はHiSAを使っていません) 


<font color="Blue">(注2)</font>
Mesh Parameters Mesh utility について，snappyHexMesh と gmash も選択肢に現れます．どちらも動作を確認しています．
Case：[Write]でメッシュ設定用のファイルが作成されたのちに[Edit]を左クリックするとメッシュ設定用のファイルの編集ができます．しかし，このアドオンを使って出力される内容はGuiで設定されている内容しか記載されていないため，cfMeshの他の機能を使うには各自でマニュアルを調べる必要があります．cfMeshの設定ファイルの内容についてはDEXCSのランチャーのほうが親切だと思います．
．
<font color="Blue">(注3)</font>
Iteration ControlとTime Step Controlの設定がデフォルトのままで構わないのは今回の計算に限ります．これらの項目の意味が分からない人は既存の書式やwebの情報を調べてください．

<font color="Blue">(注4)</font>
OpenFOAMに詳しくなったら，この段階でCase:[Edit]を左クリックして設定内容を確認したほうが良いと思います．<font color="white">けっこう，へぇ～そんな設定がデフォルトなんだ　(一一")　というような印象を持ちました．</font>