高圧貯水タンクで発生する水撃現象のシミュレーション
By M.Sato
概要
今回は、Fluentを使った水撃現象(ウォーターハンマー)のシミュレーション例を紹介する。
プラント設計や大規模な給水システムにおいて、もっとも警戒すべき物理現象の一つが水撃現象である。
特に高圧の貯水タンク(アキュムレータやサージタンクを含む)が関わるシステムでは、装置の誤操作や、微小な破損の発生が配管の破裂や設備の全損を招くことがある。
本記事では、高圧タンク周辺で発生する水撃のメカニズムとFluentを使ったシミュレーション結果について紹介する。
図:解析モデル
水撃現象とは?
水撃現象とは、管路内を流れている液体の流速が、バルブの急閉鎖、急開放などによって急激に変化した際に発生する圧力上昇(または下降)現象である。 液体の流速が急変すると、その運動エネルギーが大きく変動し、 急激な圧力波(衝撃波)へと変換されることになる。
この波は管路内を音速(水中では約$1,000m/s$〜$1,400m/s$以上)で伝播し、流路壁面に大きな衝撃を与える。 これにより、バルブの破壊、タンクの損傷、配管の破裂など、深刻な被害が発生することがある。 そのため、圧力波の伝播する様子を把握し、適切な設計を行うことが重要である。
⚠️ 水撃現象は瞬間的に数十MPaもの圧力上昇を引き起こすことがあり、配管やバルブの設計圧力を大幅に超える可能性がある。特に高圧系統では致命的な事故につながるため、設計段階でのシミュレーションによる検証が不可欠である。
流路が単純な直管路であれば、基本的な水撃理論に基づいて圧力上昇を予測することが可能であるが、 高圧貯水タンクが関わるシステムでは、より複雑なメカニズムが絡み合うため、詳細な解析が必要となる。
状態方程式
状態方程式は流体の密度と圧力、温度の関係を示す。圧縮性液体の場合、温度の影響は無視できるため密度と圧力を関係づける式になる。
これはバロトロピック流体と呼ばれる。Fluentでは圧縮性液体に対して、標準で以下に示すTaitの式が使われる。
$$ \begin{align} \left( \frac{\rho}{\rho_0} \right)^n &= \frac{K}{K_0} = \frac{K_0+n(p-p_0)}{K_0} \notag \\ &= 1+ \frac{n}{K_0}(p-p_0) \tag{1} \end{align} $$
ここで、$\rho$は液体密度、$p$は圧力、$K$は体積弾性率、添字$0$は基準状態を示す。$n$は密度指数と言われるものである。 上式は、以下のように変形できる。
$$ \begin{align} \rho &= \rho_0 \left[ 1+ \frac{n}{K_0}(p-p_0) \right]^{1/n} \tag{2} \end{align} $$
もし圧力変化が小さい場合、上式は以下のように近似できる。
$$ \begin{align} \log \left( \frac{\rho}{\rho_0} \right) &= \frac{1}{n} \log \left[1+ \frac{n}{K_0}(p-p_0) \right] \notag \\ &\approx \frac{1}{n} \cdot \frac{n}{K_0}(p-p_0) = \frac{p-p_0}{K_0} \tag{3} \end{align} $$
従って
$$ \begin{align} \rho &= \rho_0 \exp \left( \frac{p-p_0}{K_0} \right) \tag{4} \end{align} $$
指数関数をテーラ展開すると、上式は以下のように線形式に簡略化できる。
$$ \begin{align} \rho &= \rho_0 \left[ 1 + \frac{p-p_0}{K_0} \right] \tag{5} \end{align} $$
テーラ展開を二次項まで考慮する場合、以下のようになる。
$$ \begin{align} \rho &= \rho_0 \left[ 1 + \frac{p-p_0}{K_0} + \frac{1}{2}\left(\frac{p-p_0}{K_0}\right)^2 \right] \tag{6} \end{align} $$
(4)式、(5)式、(6)式は、元のTait方程式((2)式)を近似したものであり、それぞれ指数関数近似、1次近似、2次近似になっている。
密度の表現式が得られたならば、音速$a$は $\sqrt{dp/d\rho}$で求めることができる。例えばTaitの式((2)式)を用いた場合、$a^2$は以下のようになる。
$$ \begin{align} a^2 &= \frac{K_0}{\rho_0} \left[ 1 + \frac{n}{K_0}(p-p_0)\right]^{1-1/n} \tag{7} \end{align} $$
Fluentを使った解析の設定
Fluentでは、圧縮性液体(compressible liquid)を選択すると自動的にTaitの式が適用される。
図1 — Fluentの圧縮性液体設定画面
図2 — Taitの式のパラメータ設定画面
もしTaitの式以外の状態方程式を使用したい場合、UDFを使って密度と音速を定義することができる。
💡 UDFを使うことで、Taitの式に限らず任意の状態方程式(実験データに基づく式など)を実装できる。以下のコード例では
DEFINE_PROPERTYマクロを使って密度と音速を定義している。
図3 — UDFによる物性定義の設定画面
以下にUDFコードの例を示す。ここに示す例はTaitの式を用いて密度と音速を定義する例になっているが、 必要に応じて他の式(実験値など)に変更することができる。
#include "udf.h"
#define BMODULUS 2.2e9
#define RHO_REF 998.2
#define P_REF 101325
/*------------------------------------------------------------------------*/
DEFINE_PROPERTY(water_density,c,t)
/*------------------------------------------------------------------------*/
{
real rho;
real p, p_op, dpbyk;
real n=7.15;
p_op = RP_Get_Real("operating-pressure");
p = C_P(c,t) + p_op;
dpbyk = (p-P_REF)/BMODULUS;
/* --- 1st-order approx */
/* rho = RHO_REF*(1.0+dpbyk); */
/* --- 2nd-order approx */
/* rho = RHO_REF*(1.0+dpbyk+0.5*dpbyk*dpbyk); */
/* --- exponent approx */
/* rho = RHO_REF*exp(dpbyk); */
/* --- tait eos */
rho = RHO_REF*pow(1.0+n*dpbyk,1.0/n);
return rho;
}
/*------------------------------------------------------------------------*/
DEFINE_PROPERTY(water_speed_of_sound,c,t)
/*------------------------------------------------------------------------*/
{
real a;
real p, p_op, dpbyk;
real n=7.15;
p_op = RP_Get_Real("operating-pressure");
p = C_P(c,t) + p_op;
dpbyk = (p-P_REF)/BMODULUS;
/* --- 1st-order approx */
/* a = sqrt(BMODULUS/RHO_REF); */
/* --- 2nd-order approx */
/* a = sqrt(BMODULUS/(RHO_REF*(1.0+dpbyk))); */
/* --- exponent approx */
/* rho = RHO_REF*exp(dpbyk);
a = sqrt(BMODULUS/rho); */
/* --- tait eos */
a = sqrt(BMODULUS/RHO_REF *(pow(1.0+n*dpbyk,1.0-1.0/n)) );
return a;
}
高圧タンクの解析例
矩形タンクの側面にノズルが設置されているモデルを対象にして、水撃現象のシミュレーションを行った。 タンク内には水が入っており、初期状態において流速はゼロ、圧力は$10^7[Pa]$とした。 時刻ゼロにおいてノズル先端部が開口状態になったとして、タンク内部に発生する圧力波および流速分布を 計算した。なお周囲は大気圧とした。
解析モデル
図4 — 解析モデル
解析に使用したメッシュ分割を以下に示す。
図5 — 全体メッシュ
図6 — ノズル付近のメッシュ拡大図
物性値
液体の密度にはTaitの式を使用した。密度と圧力の関係をグラフに示す。今回の解析では物性値を UDFを使い指定した。
図7 — Taitの式による密度と圧力の関係
解析結果
❗ 水撃現象では圧力波が音速で伝播するため、時間刻み幅はクーラン条件を満たすよう十分小さく設定する必要がある。
最も小さいメッシュサイズは$0.5mm$であり、水の音速が$1400m/s$程度であるとすると クーラン条件から時間刻み幅は $\Delta t < \Delta x/a = 0.5\times10^{-3}/1400 = 3.57\times10^{-7}[s]$と なる。従ってここでは時間刻み幅を $10^{-7} [s]$に設定した。
瞬時の分布
時刻 $t=10^{-4}[s]$における流速ベクトル、圧力分布、音速分布を以下に示す。
図8 — 流速ベクトル(t=1e-4[sec])
図9 — 圧力コンター(t=1e-4[sec])
図10 — 音速コンター(t=1e-4[sec])
アニメーション
時刻 $t=2e^{-4}[sec]$まで計算した結果をアニメーションにした。圧力波が壁面に反射する様子を確認することができる。
動画1 — 流速ベクトルのアニメーション
動画2 — 圧力コンターのアニメーション
動画3 — 音速コンターのアニメーション
まとめ
✅ Fluentを使って高圧貯水タンク内で発生する水撃現象のシミュレーションを行った。
✅ UDFを使い、Taitの式を用いて圧縮性液体の密度と音速を定義し、ノズル開口によって発生する圧力波の伝播を解析した。
✅ Fluentの圧縮性液体モデルを使うことにより水撃現象の解析を行うことができることを確認した。
弊社の解析事例
弊社の流体解析事例については、下記のリンクからご覧ください.