第5回OpenFOAM勉強会 for beginner 進捗報告 冨原 大介
第5回OpenFOAM勉強会 for beginner ー進捗報告ー ・取り組んでいる課題 ・前回勉強会出席時からやってみたこと ・疑問 ・今後の取り組み予定
スロッシングの周波数応答解析 第5回OpenFOAM勉強会 for beginner ー進捗報告ー 取り組んでいる課題 スロッシング・・・容器内の液体が、特定の振動数(周波数)に 反応して波打つ現象のこと ex)マグカップに注いだコーヒーの液面揺れが、 歩く速度によって変化する 容器にはそれぞれ固有振動数(周期)があり、 揺れの振動数が固有振動数に近づいたときに波が大きくなる
第5回OpenFOAM勉強会 for beginner ー進捗報告ー 矩形水槽のスロッシング 約0.5m 振幅:5×10-3m 固有振動数:1.047Hz 上記の値の加速度を 振動方向に正弦波であたえる 奥行き方向は2次元問題 として考えない 約0.5m うまくいかない!! ・固有振動数での波高が実験値に及ばない ・固有振動数で波高がピークをとらない 振動
第5回OpenFOAM勉強会 for beginner ー進捗報告ー ・すでに業務を離れているため、自由に使用できる環境が必要 ・汎用ソルバで考えられることを様々試したがうまく行かず、原因も分からず OpenFOAMなら自由に使用でき、さらに様々なことを試せる可能性 まず、スロッシング解析を行うために interFoamの改造から行う。
第5回OpenFOAM勉強会 for beginner ー進捗報告ー OpenFOAMのrunディレクトリにフォルダを作成。 その中にOpenFOAMの中からinterFoam.C、同フォルダ内のCヘッダファイル およびMakeフォルダをすべてコピーする 新しく作成するのは interFoamSとする
第5回OpenFOAM勉強会 for beginner ー進捗報告ー interFoam.Cへのコードの追加は以下のHPを参考にさせていただきました。 GiroD'Ana ジロ・デ・解析屋 OpenFOAM http://giropenfoam.web.fc2.com/openfoam/sloshing/sloshing.html // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; // --- add by Giro start --- // Acc=Bw^2sin(wt) , B=0.005[m] , w=6.5784950[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.005; Foam::doubleScalar w_g=6.5784950; Foam::doubleScalar ww_g; // // よく判らない時のお約束。 // いろいろと出力させてみて、中身を見てみましょう。 // Info<< "g.dimensions() = " << g.dimensions() << endl; // Info<< "g.value() = " << g.value() << endl; // Info<< "ghf = " << ghf << endl; // --- add by Giro end --- 追加①
第5回OpenFOAM勉強会 for beginner ー進捗報告ー 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 --- 追加②
第5回OpenFOAM勉強会 for beginner ー進捗報告ー Makeフォルダ内のOptionsファイルはそのまま filesファイルは 「interFoamS.C EXE = interFoamS」 と変更
第5回OpenFOAM勉強会 for beginner ー進捗報告ー 用意したフォルダにおいて、 wmake を実行。いくつかの警告文か出たが、無事Make終了。 interFoamSが作成される
第5回OpenFOAM勉強会 for beginner ー進捗報告ー 動画
第5回OpenFOAM勉強会 for beginner ー進捗報告ー 今後の課題 ・現状だと、振動数を変更する度にMakeしなおさなければならない →振動数、振幅等のパラメータを外部入力出きるようにする ・振動数を変化させて波高の変化を確認する ・汎用ソルバとの違いの原因を探っていく