OpenFOAM によるスロッシング解析

# 概要
SPHERICというSPH法（粒子法）の組織がValidation Tests(SPH Benchmark Test Cases)を公開しています。[1]
ここではテストケース10の2次元スロッシング問題をOpenFOAMで計算を行い、妥当性確認を行います。
OpenFOAMはESI版のv2112を使用します。
乱流モデルはk-εモデル（realizable k-εモデル）およびレイノルズ輸送モデル（LRR）を使用します。[2]

[1] https://www.spheric-sph.org/validation-tests
[2] 鵜沢, 三次元矩形貯水槽の非線形スロッシング解析 (2012)
# 解析モデル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/0d79080e-d77a-efd8-9594-57bfa569c17a.png)

# 解析条件
振動はconstant/dynamicMeshDictで設定します。

    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        object      dynamicMeshDict;
    }
    dynamicFvMesh   dynamicMotionSolverFvMesh;
    motionSolver    solidBody;
    solidBodyMotionFunction tabulated6DoFMotion;
    CofG            (0.45 0 0);
    timeDataFileName "<constant>/positionOriginal.dat";

CofGは振動を与える軸（y軸）の中心点を示します。
時系列データは公開されているデータの次の列を使用します。
- Time[s]
- Position_original[deg]
時系列データのフォーマットは次のような形式です。

    60001 // 総データ数
    (
    (0 ((0 0 0) (0 1.143341E-09 0))) // Time[s] x,y,z位置変位タプル[m] x,y,z軸廻りの回転量タプル[deg]
    (5E-05 ((0 0 0) (0 0.001194 0)))
    (中略)
    (2.99995 ((0 0 0) (0 -3.994658 0)))
    (3 ((0 0 0) (0 -3.994658 0)))
    )
# 解析結果
## realizable k-εモデル
テストケース10の結果をExperiment、解析結果をCalculationで表した、側面の圧力の比較図を以下に示します。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/380c4f3a-5f4d-c584-1876-fa45aa068a8f.png)
アニメーションを以下に示します。![positionOriginal_realizableKE.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/fb6f944e-002b-b9b5-dea9-1b3e8fb752ef.gif)
## LRR
realizable k-εモデルと同様に、側面の圧力の比較図を以下に示します。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/4b7b85fc-8477-8862-ff49-beea0a3d888f.png)
アニメーションを以下に示します。
![positionOriginal_LRR.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/67ba02f4-b367-e43c-4841-6e72558f15bf.gif)
# 圧力の振動について
realizable k-εモデルおよびLRRの両方で、最大圧力到達後の圧力の振動が激しいことがわかります。
これは時系列データのPosition_original[deg]に重複があり、補間が上手く計算できていないことが原因と考え、重複を除去した時系列データを用意して、再度解析を実施しました。
なお、補間値はinterpolateSplineXYクラス($FOAM_SRC/OpenFOAM/interpolations/interpolateSplineXY)を使用して求めています。
補間にはCatmull-Rom法を用いています。
# 解析結果（時系列データ修正後）
## realizable k-εモデル
テストケース10の結果をExperiment、解析結果をCalculationで表した、側面の圧力の比較図を以下に示します。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/a6c13d58-416f-8cd8-297b-595a7f35474d.png)
アニメーションを以下に示します。
![positionModified_realizableKE.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/c929e299-d8e4-7ff8-6989-431c388a0740.gif)
## LRR
realizable k-εモデルと同様に、側面の圧力の比較図を以下に示します。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/3ed15a1c-f104-2765-a1c4-cfbf73af587b.png)
アニメーションを以下に示します。
![positionModified_LRR.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1784513/7ae7fb94-3b29-7012-c9fc-575173f479ae.gif)
# まとめ
時系列データの重複を削除すると、圧力の振動はある程度抑制されることがわかりました。
側面の圧力の最大値の比較を以下に示します。

||Time[s]|Max Pressure[Pa]|Experimentとの差[Pa]|
|---|:-:|:-:|:-:|
|Experiment|2.3749|3683.36|-|
|realizable k-ε|2.3746|6288.97|2605.61|
|LRR|2.3631|2683.61|-999.749|
|realizable k-ε（時系列データ修正）|2.3741|4826.16|1142.80|
|LRR（時系列データ修正）|2.36|2554.93|-1128.43|