トップ - 技術ドキュメント - OpenFOAM 付属チュートリアル一覧

液面に浮いた物体の振動によって生じる波

更新:2017/7/10
OpenFOAM 4.x

ケース

$FOAM_TUTORIALS/multiphase/potentialFreeSurfaceFoam/oscillatingBox

概要

液面に浮いた物体が振動した場合に生じる波の動きを静水圧を計算することで評価します。領域 floatingObject が振動物体、領域 freeSurface が液面とし、領域 walls はすべり無し壁とします。また Z 方向は1メッシュとして2次元問題として計算します。

モデル形状 モデル形状

振動は流速を時間変化させることで模擬します。設定はファイル 0.orig/U で以下のように流速の境界条件を指定することで指定します。

floatingObject
{
    type            fixedNormalInletOutletVelocity;

    fixTangentialInflow false;

    normalVelocity
    {
        type            uniformFixedValue;
        uniformValue    sine;
        uniformValueCoeffs
        {
            frequency 1;
            amplitude table
            (
                (   0     0)
                (  10 0.025)
                (1000 0.025)
            );
            scale     (0 1 0);
            level     (0 0 0);
        }
    }
    value           uniform (0 0 0);
}

ファイル system/controlDict 内で以下の様に設定することで、領域 floatingObject にかかる力と領域 f0 の液面の平均水位を計算中に出力します。計算結果はフォルダ postProcessing 以下に保存されます。

領域(フェイスゾーン)f0 領域 f0(赤色部)
functions
{
    forces
    {
        type            forces;
        libs            ("libforces.so");
        writeControl    writeTime;
        patches         (floatingObject);
        rho             rhoInf;
        log             yes;
        rhoInf          1000;
        CofR            (0 0 0);
    }

    poolHeight
    {
        type            surfaceRegion;
        libs            ("libfieldFunctionObjects.so");
        writeControl    timeStep;
        writeInterval   1;
        log             yes;
        writeTotalArea  no;
        writeFields     no;
        regionType      faceZone;
        name            f0;
        operation       areaAverage;
        fields
        (
            zeta
        );
    }
};

全体のメッシュは以下の通りで、メッシュ数は3829です。

メッシュ メッシュ
メッシュ(拡大) メッシュ(拡大)

計算結果は以下の通りです。

最終時刻での圧力(p_gh) 最終時刻での圧力(p_gh)
領域 f0 の平均水位の時間変化(横軸:時間、縦軸:平均水位変動量) 領域 f0 の平均水位の時間変化(横軸:時間、縦軸:平均水位変動量)

実行コマンド

cp -r $FOAM_TUTORIALS/multiphase/potentialFreeSurfaceFoam/oscillatingBox oscillatingBox
cd oscillatingBox

blockMesh
topoSet
subsetMesh -overwrite c0 -patch floatingObject

cp -r 0.orig 0
potentialFreeSurfaceFoam

# 3次元描画
paraFoam

# 領域 f0 の平均水位をグラフ描画
awk '{print $1 " " $3}' postProcessing/poolHeight/0/surfaceRegion.dat > poolHeight_vs_time
gnuplot
gnuplot>plot "poolHeight_vs_time" using 1:2 title 'poolHeight vs time' with lines lc rgb "black"

計算時間

1分17.94秒 ※シングル、Inter(R) Core(TM) i7-2600 CPU @ 3.40GHz 3.40GHz

参照