いきなりOpenFOAM (56)

揺れるフラスコ内の液体

解析モデルとメッシュ作成

 メッシュ移動機能の応用として、揺れるフラスコ内の液体の挙動をOpenFOAMで解析してみます。具体的には、図1に示すフラスコ内に底から20mmまで水が入った状態で、振幅5mmで毎秒10回水平に振動させた場合のフラスコ内の水の挙動を解析します。解析用ファイルはtestTubeMixerのファイルを流用します。今回はXSimでメッシュを生成するため、testTubeMixerのsystemフォルダ内のblockMeshDictファイルは不要です。
 始めに、3次元CADでモデルを作成します。次に、解析に流用する図2に示すtestTubeMixerのUファイル内の領域名と同じwallsという名称でstlファイルを出力します。

図1 モデル形状・寸法
図2 Uファイル

 ブラウザでXSimに接続し、先ほど出力したstlファイルをインポートし、スケールを変更します。次に、メッシュ設定では、図3に示すように、目標ベースメッシュ数をデフォルト設定より2桁ほど大きくします。また、領域wallsにデフォルト設定で境界層を設けます。エクスポートで解析ファイルを出力、展開した後、端末からコマンド./Allrun –mでメッシュを生成します。

図3 メッシュ設定
ファイルの修正

 流用したtestTubeMixerフォルダのconstantフォルダ内に生成されたpolymeshフォルダを移動します。次に、systemフォルダ内のsetFieldsDictファイルを修正します。フラスコの底から20mmまで水が満たされているので、図4に示すようにboxToCellでalpha.waterが1の領域を設定します。なお、解析モデルはフラスコ底面中心が原点としています。もし、原点が異なる場合は、boxToCellの座標指示を変更してください。setFieldsDictファイル設定については、いきなりOpenFOAM第45回を参照してください。

図4 setFieldsDictファイルの修正

 次に、constantフォルダ内のdynamicMeshDictファイルを修正します。フラスコを水平に振動なので、図5に示すように、solidBodyMotionFunctionはoscillatingLinearMotionにします。毎秒10回の振動なので、omegaは20πで、amplitudeは振幅5mmの2倍となり、(0.01 0 0)とします。dynamicMeshDictファイルについては、いきなりOpenFOAM第54回を参照してください。
 次に、controlDictファイルを図6に示すように、揺動開始から1秒間だけ計算し、0.01秒ごとに結果を出力するように修正します。結果ファイルの出力間隔は、揺動中の位置が特定の箇所だけにならないように揺動周期を基に決定してください。

図5 dynamicMeshDictファイルの修正
図6 controlDictファイルの修正

 今回は、密閉容器内の解析のため、圧力参照点と基準圧力を指定する必要があります。圧力参照点と基準圧力はsystemフォルダ内のfvSolutionファイルのPIMPLEにあります。testTubeMixerでは図7に示すように、圧力参照点pRefPointが(0.0013,0.0017,0.0017)の位置の静圧がpRefValue1×105 Paに固定されています。圧力参照点の座標がモデル内にある場合は、このままでかまいません。

図7 fvSolutionファイル

 解析用ファイルを上書き保存後、端末でsetFields、interFoamの順にコマンドを入力すると、計算が始まります。

結果の可視化

 計算が終了したら、paraFoamと入力し、Paraviewを起動して結果を可視化します。図8は揺動開始から0.5秒後のフラスコ内の液面を表示したもので、図9は液面の変化を動画にしたものです。液体がフラスコ内で激しく揺動し、一部は飛散していることがわかります。

図8 液面形状(0.5秒後)
図9 液面形状の変化(アニメーション)

 今回、フラスコ内の液体はデフォルト設定の水としましたが、任意の液体で解析する場合は、constantフォルダ内のtransportPropertiesファイルのwater側の動粘性係数nuと密度rhoを解析したい液体の値に設定します。詳しくは、いきなりOpenFOAM第53回を参照してください。
 次回は、回転するドラム内の液体をOpenFOAMで解析してみます。

 このページでは、各アプリケーションの操作説明は省略しています。FreeCADの具体的な操作については、いきなりOpenFOAM第5回および第7回、OpenFOAMでの計算実行は第8回、ParaViewの操作については第3回第4回および第8回を参考にしてみてください。

おことわり
 本コンテンツの動作や表示はお使いのバージョンにより異なる場合があります。
 本コンテンツの動作ならびに設定項目等に関する個別の情報提供およびサポートはできかねますので、あらかじめご了承ください。
 本コンテンツは動作および結果の保証をするものではありません。ご利用に際してはご自身の判断でお使いいただきますよう、お願いいたします。