In dem zuvor eingeführten Programm zur Berechnung des ungleichen Durchflusses (normale Durchflussberechnung) ist es erforderlich, den Wasserstand an der nachgeschalteten Endzuordnung anzugeben, und die gleiche Durchflusstiefe wird dafür verwendet. Mit anderen Worten ist es notwendig, die gleichmäßige Strömungstiefe zu kennen. Vorerst werden Sie nichtlineare Gleichungen lösen, aber ich denke, das Gute an Python ist, dass Sie solche Berechnungen schnell durchführen können.
Die Grundformel zur Berechnung der gleichmäßigen Strömungstiefe eines rechteckigen Querschnitts lautet wie folgt.
\begin{gather}
Q=A\cdot v \\
v=\cfrac{1}{n}\cdot R^{2/3}\cdot i^{1/2} \\
R=\cfrac{b\cdot h}{b+2\cdot h}
\end{gather}
$ Q $ td> | (bekannte) Durchflussrate td> tr> |
$ b $ td> | (bekannte) Kanalbreite td> tr> |
$ n $ td> | (bekannt) Manning-Rauheitsfaktor td> tr> |
$ i $ td> | (bekannt) Kanalbodenverlauf td> tr> |
$ h $ td> | (unbekannt) konstante Flusstiefe td> tr> |
Die folgende Gleichung, die eine Transformation der obigen Gleichung in die Form $ f = 0 $ darstellt, wird für $ h $ gelöst.
\begin{equation}
f=Q-\cfrac{b\cdot h}{n}\cdot \left(\cfrac{b\cdot h}{b+2\cdot h}\right)^{2/3}\cdot i^{1/2}=0
\end{equation}
In diesem Programm wird es mit `` `scipy.optimize.brentq``` gelöst. Der Anfangswert der Lösung, die der Brent-Methode gegeben wurde, ist gegeben als "h1 = 0, h2 = 10".
Die Berechnung der kritischen Wassertiefe $ h_c $ ist ein Bonus.
Das Programm ist wie unten gezeigt.
# normal depth and critical depth of rectangular cross section
import numpy as np
from scipy import optimize
def cal_hc(q,b):
# critical depth
g=9.8
hc=(q**2/g/b**2)**(1/3)
return hc
def func(h,q,b,n,i):
f=q-b*h/n*(b*h/(b+2*h))**(2/3)*i**(1/2)
return f
def main():
q=42.0 # discharge
b=4.0 # channel width
n=0.014 # Manning's roughness coefficient
i=0.001 # invert gradient
h1=0.0
h2=10.0
hh=optimize.brentq(func,h1,h2,args=(q,b,n,i))
print('hn=',hh) # normal depth
hc=cal_hc(q,b)
print('hc=',hc) # critical depth
#==============
# Execution
#==============
if __name__ == '__main__': main()
Das Berechnungsergebnis ist wie folgt.
hn= 3.866645305835682
hc= 2.2407023732785825
That's all. Thank you.