いきなりOpenFOAM (48)

ミルククラウンの解析

ミルククラウンとは

 今回は、前回の液滴落下による液面の波紋解析の応用例として、ミルククラウンをOpenFOAMで再現してみます。ミルククラウンとは、牛乳などを入れた容器に、液滴を垂らした際に、王冠状の波紋を形成する現象です。非常に美しい形状で、コミックなどでは雨により水面に生じる王冠状の波紋を描いている場面がありますが、実は、ミルククラウンは特定の条件でしか発生しません。
 インターネットで「ミルククラウン」を検索すると、検索結果に研究レポートなどが見つかります。例えば下記URLのレポートなどから、ミルククラウン発生の条件などは下記のようなものであることがわかります。

1.粘性は牛乳より多少大きい程度。
2.容器に張る液体の深さは1mm程度
3.液滴の初期高さは400mm程度
4.液滴が液面に到達してから0.01秒以内で発生
5.発生するミルククラウンの直径は10mm程度

参考URL https://www2.nagare.or.jp/mm/2003/gunji/index_ja.htm

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

 ミルククラウン発生の条件を参考に、解析モデルは図1に示す直径15mm、高さ5mmの円柱とし、円柱上面をatmosphere、側面をside、底面をwallsとします。(この解析領域では液面がはみだしてしまいます。お急ぎの方はコンテンツ中段の「テスト計算と領域の再設定」の領域から始めてください)
 setFieldsDictファイルに、液体深さを1mm、液滴を直径3mmにして、液滴を領域底面から高さ3mmの位置に設定します。また落下速度は、

で計算すると、400mmから落下した際の速度は2.8m/sとなるので、この値をsetFieldsDictファイルに設定します。空気中での液滴の落下は空気の粘性の影響を考慮する必要がありますが、終端速度に対して、先の計算結果は十分小さいため、そのまま設定条件に採用します。
 ミルククラウンは10mm程度と小さいため、メッシュサイズが大きいと再現できない可能性があります。ただし、メッシュサイズが小さいと計算コストが増大します。そこで、最初は領域を小さくして、再現できそうか、あたりをつけてみます。本来であれば、ミルククラウンの再現形状を基にメッシュサイズを決定するべきですが、今回は一般的なパソコン能力の限界程度でメッシュを細分化してみます。

図1 解析モデル形状・寸法

 図1の解析モデル上面をatmosphere.stl、側面をside.stl、底面をwalls.stlとして出力し、XSimにインポートします。次いで、mm単位からm単位へのスケール変更を行い、メッシュ設定を行います。
 メッシュは図2に示すように、直径10mm、高さ5mmの円柱領域を再分割レベル3で再分割領域に設定します。領域wallsには、デフォルト設定でレイヤーメッシュを設定します。
 最後に、エクスポートで解析ファイルを出力し、./Allrun –mでメッシュを生成します。Constantフォルダ内のpolyMeshフォルダを取り出し、他のファイルは削除します。

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

 ファイル修正の前に、前回の液滴落下の解析ファイル一式をコピーペーストして、解析用ファイルとして利用します。
 解析ファイル内のconstantフォルダ内に先ほど取り出したpolyMeshフォルダを移動します。次に、ファイル内容を修正していきます。この際、念のためalpha.waterファイルは削除してください。また、UファイルはsetFieldsコマンドで、液滴領域に流速が追加されるため、元のUファイルを予備として別の箇所にコピーペーストしておくと良いです。
 次に、constantフォルダ内のtransportPropertiesファイル内のwaterの動粘性係数nuを2e-6に変更します。

図3 transportPropertiesファイルの修正

 次に、systemフォルダ内のsetFieldsDictファイルを修正します。図4に示すように、boxToCellで底面の液体を設定し、sphereToCellで液滴を設定します。液滴の初速度はベクトル量なので、volVectorFieldValueで、xyzの3成分で表示してください。
 また、controlDictファイルを図5に示すように修正します。前述の発生条件では0.01秒以内ということなので、endTimeを0.01にして、writeIntervalを0.0001にします。ちなみに、startFromはlatestTimeにしておくと、途中で停止させても、再度計算を行った際は、続けて次のサイクルから計算してくれます。

図4 setFieldsDictファイルの修正
図5 controlDictファイルの修正

 ファイルを修正・上書き保存したら、端末で、setFields、interFoamの順にコマンドを入力すると、計算が始まります。

テスト計算と領域の再設定

 計算が終了したら、paraFoamと入力してParaViewを起動し、液面を表示させると、図6に示すような液面形状が得られます。図6から、メッシュ分解能はミルククラウンを再現できそうなレベルであることがわかります。しかしながら、ミルククラウンの上部が解析領域の上限に到達して欠けてしまっています。また、解析領域の直径近くまで広がっていることがわかります。そこで、次は、ミルククラウンにあわせて、解析領域を設定してみます。

図6 液面形状

 ParaViewで縦断面を表示し、液面形状をCSVファイルで取り出します。取り出したCSVファイルのx座標とz座標とを表計算ソフトでグラフにすると、図7が得られます。図では分かりやすいように、座標をm単位からmm単位にしています。図を見ると、ミルククラウンは直径8mmから16mmの中空円筒内に収まりそうなことがわかります。高さは2倍程度として、解析モデルを図8に示すように修正します。
 図に示した解析モデルで底面をwalls、直径20mmの円筒側面をside、その他の面はatmosphereとして、stlファイルを出力し、XSimにインポートします。スケール変更を行い、メッシュ設定では図9に示すように、直径16mm、高さ10mmの円柱領域をレベル3で再分割領域に設定します。レイヤーメッシュ設定などは直径10mmでの解析と同様です。

図7 液面のプロファイル
図8 修正した解析領域
図9 解析領域修正後のメッシュ設定

 その後の作業は、テスト計算時と同様、ファイルの出力とメッシュ生成の実行、計算の実行も同様の手順となります。(冒頭のモデル形状を作成せず、「テスト計算と領域の再設定」から始めた方は、「ファイルの修正」に戻って、同じ手順を行ってください)

結果の可視化

 計算が終了したら、paraFoamと入力してParaViewを起動し、液面を表示させると、図10に示すような液面形状が得られます。ミルククラウンと呼ぶには少しラフですが、現象が再現できていることがわかります。

図10 液面形状

 図11は液面の変化を動画で表したものです。動画を再生させると、液滴の衝突から液面が盛り上がり、ミルククラウンを形成し、その後、形状が崩れていく様子がわかります。

図11 液面の変化(アニメーション)

 液面形状をstlファイルとして出力し、CADで追加した皿とあわせてレンダリングソフトでCG画像を作成したものが図12です。

図12 液面形状をもとに作成したCG画像

 次回は逆さまにした瓶から液体が流出する解析をしてみます。

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

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