![見出し画像](https://assets.st-note.com/production/uploads/images/41179319/rectangle_large_type_2_c724b88366815c0c518162f73c15cc65.jpg?width=1200)
エビの周りの流れを解析してみた
フリー素材のエビをOpenFOAM-v19112で解析してみました。
解析したときにはまったことや、覚えていないために毎回調べていることをこの際なので備忘録としてまとめておこうと思う。
cfMesh
stlを特徴線を角度により抽出しfmsに変換する。
model.stlを角度10度で特徴線を抽出しmodel.fmsに変換するコマンド
surfaceFeatureEdges -angle 10 mode.stl model.fms
モデルによってはstlのままcfMeshを実行した方がメッシュ品質が良い場合がある。今回はfmsに変換せずstlのまま利用した。
renameBoundaryのnewPatchNamesがチュートリアルファイルの記述と異なる。
newTypeは間違いでtypeを用いる。
renameBoundary
{
defaultName Shrimp;
defaultType wall;
newPatchNames
{
Inlet
{
newName Inlet;
type patch;
}
Outlet
{
newName Outlet;
type patch;
}
}
}
transportProperties
粘性係数は動粘性係数を用いる(simpleFoamの場合)fvSolution/SIMPLE
fvSolution/SIMPLE
収束判定値の設定
SIMPLE
{
nNonOrthogonalCorrectors 0;
consistent yes;
residualControl
{
p 1e-3;
U 1e-3;
"(k|epsilon|omega|f|v2)" 1e-3;
}
}
緩和係数の設定
relaxationFactors
{
fields
{
p 0.3;
}
equations
{
U 0.7;
"(k|epsilon|omega|R)" 0.7;
}
}
controlDict
残差の出力
すべて出力
functions
{
residuals
{
type solverInfo;
libs ("libutilityFunctionObjects.so");
fields (".*");
}
}
変数を指定して出力。何も指定しなければU,pのみ出力される。
functions
{
#includeFunc residuals(U,p,k,epsilon)
}
一般的な乱流解析の出力
functions
{
residuals
{
type solverInfo;
libs ("libutilityFunctionObjects.so");
fields (U p k epsilon omega);
}
}
decomposeParDict
領域分割の記述。効率的な領域分割をすればもっと早く計算できるかもしれないが、1秒でも早くしようと思わないので、設定の簡単なscotchを使う。領域4分割の例。
numberOfSubdomains 4;
method scotch;
並列計算の実行
4コアでsimpleFoamの計算実行コマンド
mpirun -np 4 simpleFoam -parallel
残差のモニター
foamMonitor -r 1 -l postProcessing/residuals/0/solverInfo.dat
解析結果
エビは泳ぐときに尻尾が曲がっていないので、流れが剥離せず抵抗を受けにくい形状ということがわかる。止まるときに尻尾を曲げて剥離渦を発生させて減速し、上下に移動する。また尻尾の甲羅の段差は、尻尾を曲げる機能と共に前面の層流境界層を乱流境界層に遷移させ剥離を起こりにくくし抵抗を小さくしていると考えられる。
エビが受ける圧力分布
エビの周りの流線