OpenFOAMの造波機能
ライセンスフリーの汎用熱流体解析ソフトOpenFOAMには造波機能が実装されており、ストークス波やクノイド波等の特定の波形を生成したり、境界における反射波を防いだりする機能を提供します。上のサンプルは、OpenFOAMの造波機能を使って計算した消波ブロックの越波解析です。
以下に、OpenFOAMのユーザー向けに、基礎的な造波機能の説明と適用例を紹介します。
1.造波機能の概要
造波境界は、多相流の非定常ソルバーinterFoamにおいて、0フォルダ内のUファイルとalpha.waterファイルの造波境界を定義するパッチ(境界)に、専用のパラメータを入力します。
alpha.waterファイルでは、typeをwaveAlphaに設定します。
Uファイルでは、 typeをwaveVelocityに設定します。さらに波の種類 (エアリー波、2次のストークス波、5次のストークス波、クノイド波等)と、関連パラメータを設定します。
以下の例では、波長30m、振幅2m、水深40mの2次のストークス波を設定しています。
waves
(
Stokes2
{
length 30;
amplitude 2;
depth 40;
phase 0;
angle 0;
}
);
また、speedパラメータを設定することで境界から第1流体を流入させることが可能です。航行中の船舶等の造波抵抗を計算する際に利用できます。船舶をALEで実際に剛体運動させる代わりに、周囲の流体に相対速度を設定する事で船舶の移動を模擬します。
OpenFOAM ver6では、以下に示すtutorialディレクトリにサンプルモデルが用意されています。
インストールディレクトリ/tutorial/multiphase/interFoam/laminar/wave/
インストールディレクトリ/tutorial/multiphase/interFoam/RAS/DTCHullWave
2. その他の関連機能
2-1. 反射波を防ぐ機能
一般的に波の計算では、計算領域末端の流出境界に到達した波はそのまま透過せず反射波が発生してしまうため、反射波を防ぐ特殊な処理が必要となります。OpenFOAMではfvOptionsのverticalDampingで波を減衰させることが可能です。
2-2. 水位・波高の取得
functionObjectのinterfaceHeightで特定座標の水位や波高を取得することが可能です。以下の例では、座標(0,0,0)と(10,20,0)の水位と波高を取得しています。なお、水位と波高の算出には重力方向が必要なため、gファイルで重力加速度を指定する必要があります。重力がZ軸方向の場合、指定したZ座標によって波高の値が変化します。
interfaceHeight1
{
type interfaceHeight;
libs (“libfieldFunctionObjects.so”);
locations ((0 0 0) (10 20 0));
alpha alpha.water;
}
2-3. 波の初期配置
setWavesコマンドで、造波境界に設定した波を初期条件として計算領域に定義する事ができます
3. 造波機能の適用事例
図2に示す港湾モデルにおいて防波堤形状の違いによる港内の水位を比較しました。Xmin側の境界に、沖合周期5.9[秒]、沖合波長40[m]の造波境界を設定しています。
図3に、波の様子のアニメーションを示します。
図4に、港内の測定ポイントにおける波高を示します。
OpenFOAMを利用する事で、防波堤形状の違いによる波の減衰効果等、港湾土木分野における様々な流体解析を実施する事ができます。