damyarou

python, GMT などのプログラム

Normal depth of steep channel


\begin{gather}
Q=A\cdot v \\
v=\cfrac{1}{n}\cdot R^{2/3}\cdot (\sin\theta)^{1/2} \\
A=b\cdot h \qquad R=\cfrac{b\cdot h}{b+2\cdot h}
\end{gather}
Q(known) discharge
b(known) width of rectangular open channe
n(known) Manning's roughness coefficient
\theta(known) gradient of channel invert
h(unknown) normal depth

The critical depth of steep channel is calculated as following equation.


\begin{equation}
h_c=\left(\cfrac{Q^2}{g\cdot b^2\cdot \cos\theta}\right)^{1/3}
\end{equation}
# normal depth and critical depth of rectangular cross section
import numpy as np
from scipy import optimize


def cal_hc(q,b,cs):
    # critical depth
    g=9.8
    hc=(q**2/g/b**2/cs)**(1/3)
    return hc


def func(h,q,b,n,sn):
    f=q-b*h/n*(b*h/(b+2*h))**(2/3)*sn**(1/2)    
    return f    


def main():
    q=42.0  # discharge
    b=4.0   # channel width
    n=0.014 # Manning's roughness coefficient
    theta=np.radians(37.0)
    sn=np.sin(theta)
    cs=np.cos(theta)
    
    h1=0.0
    h2=10.0
    hh=optimize.brentq(func,h1,h2,args=(q,b,n,sn))
    v=q/b/hh
    
    print('hn=',hh) # normal depth
    print('v=',v)
    
    hc=cal_hc(q,b,cs)
    print('hc=',hc) # critical depth
    
#==============
# Execution
#==============
if __name__ == '__main__': main()

Calculation results are shown below.

hn= 0.3962334595851377
v= 26.499528866122652
hc= 2.415097316241126

Thank you.