sloshing : スロッシング
いろいろとやりましたが、一番かっこいい動画をTopにおいておきます。
興味の沸いた方は、後述の各種説明にも目を通してください。
なお、動画を作成するにあたって参考としたレポートはこちらです。
バッフル板によるスロッシング抑制効果の数値解析/Numerical Investigation on Sloshing with Damping Devices


// interFoam.C
int main(int argc, char *argv[])
{
略
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
// --- add by Giro start ---
// Acc=Bw^2sin(wt) , B=0.0093[m] , w=5.311[rad/sec]
Foam::vector gtans0(1.0,0.0,0.0);
Foam::vector gtans1(0.0,-9.8,0.0);
Foam::doubleScalar acc_g;
Foam::doubleScalar B_g=0.0093;
Foam::doubleScalar w_g=5.311;
Foam::doubleScalar ww_g;
//
// よく判らない時のお約束。
// いろいろと出力させてみて、中身を見てみましょう。
// Info<< "g.dimensions() = " << g.dimensions() << endl;
// Info<< "g.value() = " << g.value() << endl;
// Info<< "ghf = " << ghf << endl;
//
// --- add by Giro end ---
while (runTime.run())
{
略
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
// --- add by Giro start ---
// surfaceScalarField ghf("gh", g & mesh.Cf());
// surfaceScalarField ghf is constructed in createFields.H
// According to the Programmer's Guide,
// mesh.Cf() is the cartesian coordinates of the face centres
// (Table 2.1, Sect. 2.3.2),
// and "&" is the inner product ("dot-product") operator
// (Table 1.2, Sect. 1.4.1).
//
ww_g=w_g*runTime.timeOutputValue();
acc_g=(B_g*w_g*w_g) * Foam::sin(ww_g);
g.value()=gtans1 + acc_g*gtans0; // addition of gravity
Info<< "g.value() = " << g.value() << endl;
ghf=g & mesh.Cf();
//
// --- add by Giro end ---
略
}
Info<< "End\n" << endl;
return(0);
}


