いきなりOpenFOAM (35)

水路解析用のひな形をつくる

任意の解析をするための準備

 前回はTutorialケースwaterChannelを実行してみました。waterChannelは水路内を水が流れる様子を解析しますが、自分で設計した水路で任意の流量の水を流す解析を行うには、解析全体の構成を知る必要があります。また、できるだけ余分な機能を取り除いておいたほうが、失敗が少なくなります。
 今回は、設定の必要な箇所を説明し、あわせて、必要最低限の機能だけにしてみます。

領域名と位置の確認

 始めに、領域名とその位置を確認します。図1はParaViewで領域を色分けした結果で、図の赤色の部分が流入口inletで、青色の部分が流出口outletです。この解析では大気開放部分を設定する必要があり、図の黄色の流路上部がatmosphereという名称の大気開放部分です。その他の面は壁面でwaterChannelではwallsという名称です。OpenFOAMでは境界条件は名称で区別しています。したがって、異なる名称を用いた場合、境界条件のファイルの領域名も変更する必要があります。このコラムでは、できるだけトラブルを少なくするためにTutorialケースと同じ領域名を用いることにします。つまり、CADから出力されるSTLファイル名は、流入口がinlet、流出口がoutlet、壁面がwalls、大気開放部分がatmosphereとします。

図1 領域名と位置
メッシュ生成と関連ファイル

 ./AllrunとしてwaterChannelの解析を実行すると、blockMesh、setFields、interFoamの順に、コマンドが実行されます。また、./Allmeshとして解析を実行すると、blockMeshコマンドが実行され、メッシュの生成のみが行われます。この場合のwaterChannelフォルダは図2に示すようになり、constantフォルダ内には、図3に示すように、polyMeshフォルダができあがります。つまり、メッシュが生成された後は、0フォルダ、constantフォルダ、systemフォルダの3つのフォルダがあれば計算ができ、その他のファイルは削除してもかまいません。

図2 メッシュ生成後のwaterChannelフォルダ
図3 constantフォルダ

 メッシュ生成時に必要なファイルは、図4のblockMeshDict、extrudeMeshDict、extrudeMeshDict1、extrudeMeshDict2で、これらもメッシュ生成後は不要ですが、後にメッシュを再作成する場合や、メッシュ生成に関する情報となるので、再度参照する可能性がある場合は残しておいてください。
 また、blockMesh後に実行されたコマンドsetFieldsは、setFieldsDictに基づいて、領域内の変数を設定するコマンドです。waterChannelケースでは、水の初期水位をここで設定しています。後ほど、試した結果を示しますが、初期水位を設定する必要がなければ、これらのファイルも不要です。つまり、メッシュが生成された後であれば、systemフォルダ内は、controlDict、fvSchemes、fvSolutionの3つのファイルがあれば、interFoamのコマンドで解析が始まります。

図4 systemフォルダ

 もう1つおまけとして、waterChannelのTutorialケースでは、流量を積算しているため、端末には計算結果が表示されませんでした。そこで、controlDictファイルからこの部分を削除します。controlDictファイルをエディタで開いて、図5の赤色の枠で囲まれた部分を削除またはコメントアウトし、上書き保存します。ちなみに行単位でコメントアウトする場合は「//」の後ろが、複数行をまとめてコメントアウトする場合は「/*」と「*/」で挟まれた部分がコメント行として扱われます。

図5 controlDictファイルの修正箇所
interFoamの実行

 図6に示すように、端末からinterFoamを実行すると、図7に示すように、計算結果が表示されます。この内、図の赤色の枠で囲まれた部分がクーラン数で、後ほど、時間刻みを設定する際に、必要な数値となります。クーラン数については、いきなりOpenFOAMの第27回に説明があるので、参考にしてください。

図6 端末からinterFoamを実行
図7 計算中の表示
ParaViewでの結果の可視化

 計算が完了し、待機状態となったら、paraFoamと入力するとParaViewが起動します。等値面を作成し、しきい値として変数alphaを0.5に設定すると水面が表示されます。等値面の設定については、いきなりOpenFOAM第34回を参照してください。
 図8は初期状態を示しています。水面はinlet部分のみとなり、これがsetFieldsDictファイルを削除した(初期水位を無くした)影響です。図9は流入開始から200秒後の水面で、Tutorialケースを./Allrunで解析実行した結果と同じ結果が得られます。

図8 流入開始から0秒後の水面
図9 流入開始から200秒後の水面
任意解析のための修正箇所

 次に、任意のケースを解析する際に修正が必要となる箇所を説明します。修正が必要となるファイルは0フォルダ内のUファイル、alpha.water.origファイル、systemフォルダ内のcontrolDictファイルです。
 さらに、解析対象が水-空気系以外の場合、constantフォルダ内のtransportPropertiesファイルの修正が必要となります。今回は、水-空気の自由表面解析のため、transportPropertiesファイルの修正は不要です。
 Uファイルの修正箇所は、図10に示す各領域のvalue値とvolumetricFlowRateで、value値は流速のx,y,z方向成分で、volumetricFlowRateは、m3/s単位の体積流量です。
 Alpha.water.origファイルの修正箇所は、図11に示す各領域の変数alphaの値で、1で水、0で空気を表します。
 transportPropertiesファイルは図12に示すように、液体に相当する流体(water)と気体(air)に相当する流体の動粘性係数と密度とを設定します。

図10 0/Uファイル
図11 alpha.water.origファイル
図12 transportPropertiesファイル

 controlDictファイルの修正箇所は、図13に示すendTimeとdeltaTとwriteIntervalで、それぞれ、単位は秒です。
 writeIntervalは出力間隔を指示する変数ですが、サイクル数ではなく、時間となる点に留意してください。deltaTは時間刻みで、クーラン条件を大きく逸脱しないように設定する必要があります。基本的には上記のとおりですが、ソルバーinterFoamには、クーラン数をもとに時間刻みを自動調整する機能がついています。クーラン条件については、いきなりOpenFOAM第27回を参照してください。
 図13に示すcontrolDictファイルでは、時間刻みdeltaTは0.001に設定していますが、図14に示す計算結果では、deltaT=0.119048と異なる値となっています。これは、図13の赤い枠で示したadjustTimeStep機能(時間刻みの自動調整)が有効となっているためで、maxCoで示した最大クーラン数未満、かつmaxdeltaTで示した時間未満で、なおかつ出力タイミングで出力できるように、自動で時間刻みを設定してくれます。そのため、設定した時間刻みが小さすぎる場合は、そのまま計算させるよりも、計算時間を大幅に短縮できます。一方、流速が速くなると、クーラン数を満足させるように、時間刻みを小さくするため、当初設定の時間刻みよりも小さな時間刻みとなり、逆に計算時間が増加する場合もあります。なお、adjustTimestepで設定をnoにすると、時間刻みの自動設定は行われなくなります。いずれにしても、計算中は端末でクーラン数や時間刻みをモニターし、異常がないかを適宜判断することをお勧めします。

図13 controlDictファイル
図14 端末に表示された計算結果(時間間隔)

 次に、メッシュ生成について説明します。メッシュ生成のパラメータを個別に設定することも可能ですが、今回はXSimを利用してメッシュ生成をする方法を説明します。XSimから出力されたAllrunファイルをエディタで開くと、図15に示すように、ファイルの先頭にコメントとして、出力オプションの方法が記載されています。赤い枠で囲まれた記述に従い、./Allrun –mとすると、メッシュのみ生成します。XSimではメッシュに関する設定のみで、他の項目の設定は不要です。

図15 XSimから出力されたAllrunファイル

 以上をまとめると、図16に示すように、CADでモデルを作成し、XSimでメッシュに関する設定を行い、OpenFOAMでメッシュのみ生成させ、ひな型となるフォルダに、生成されたpolyMeshフォルダを移動し、必要なファイルを修正すれば、任意のモデル・条件で自由表面解析が行えます。

図16 任意のモデルで解析する場合の手順

 今回は、Tutorialケースを修正して、任意の解析を行うためのひな形を作成しました。次回は、この手順を使って任意形状のモデルを計算してみます。

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

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