等流水深
ここに、
ベルヌーイの式とマニング則を連立させて離散化すると次式となる。
なお、
エネルギー勾配は上下流断面の平均値を用いている。
常流の場合、下流から逐次計算を行なうため未知数は
前出のベルヌーイの式を変形して次の水面形方程式(水深の微分に関する方程式)を得る。
ここに、
水面形方程式の分子=0は
また、分母=0から限界水深が得られ(限界水深の定義)、
上式を
不等流計算を行なう上で本式より以下を理解しておく必要がある。
と定義される。
そのため、不等流計算の水面形の追跡方向は、常流は下流から上流、射流は上流から下流となる。
出典:椿東一郎 水理学1 pp.151
未知数
ニュートン法のアルゴリズムに沿うと、計算式は次のとおりとなる。
単位幅流量0.5
import numpy as np
q = 0.5
n = 0.02
ib = 1/500
g = 9.8
dx = 0.1
h0 = (q**2*n**2/ib)**0.3 #等流水深
hc = (q**2/g)**(1/3) # 限界水深
L = np.arange(0,50.01,dx) #追加距離の配列
zb = L*ib #河床高の配列
h = np.zeros_like(L) #水深の配列
h[0] = hc #下流端条件
for i in range(1,len(h)):
h[i] = h[i-1] #収束計算の初期値:一つ下流側の断面の水深
f = 1.0 #仮値
dfdh = 1.0 #仮値
while np.abs(f/dfdh) > 10**(-8): # 反復計算の収束条件
f = q**2/2.0/g/h[i]**2 + h[i] + zb[i] \
-(q**2/2.0/g/h[i-1]**2 + h[i-1] + zb[i-1]) \
- 0.5*(q**2*n**2/h[i]**(10/3) + q**2*n**2/h[i-1]**(10/3))*dx
dfdh = -q**2/g/h[i]**3 + 1 + 5/3*q**2*n**2/h[i]**(13/3)*dx
h[i] -= f/dfdh
import matplotlib.pyplot as plt
plt.plot(L,zb, label='zb')
plt.plot(L,h+zb, label='water level')
plt.plot(L,zb+h0, label='h0')
plt.plot(L,zb+hc, label='hc')
plt.legend() # 凡例の表示
plt.show() # 描画
実河川では射流が出現する範囲は局所的であり、射流の水面形が求めれることはそう多くない。
常流、射流の混在流れの計算方法については例えば以下が参考となる。
かなり煩雑な計算が必要な上、わずかな条件の差で跳水位置が変わるなど実務的に取り扱いが難しい。
また、射流部では
実務では、常流区間の中で一部が射流であれば限界水深に置き換えて計算する場合が多い。また、射流部のフルード数が大きい場合は、次に示すようなリミッターを設定することにより水面形を滑らかにすることもある。
計算負荷が大きくても問題がない場合は不定流計算による定常解により水面形を与える方法も考えられる。
常流、射流混在流れの水面形は計算手法によって大きく異なってしまうため、計算の際は十分に検討することが必要である。