Python: Berechnen Sie die konstante Flusstiefe eines rechteckigen Querschnitts mit der Brent-Methode

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 $ (bekannte) Durchflussrate
$ b $ (bekannte) Kanalbreite
$ n $ (bekannt) Manning-Rauheitsfaktor
$ i $ (bekannt) Kanalbodenverlauf
$ h $ (unbekannt) konstante Flusstiefe

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.

Recommended Posts

Python: Berechnen Sie die konstante Flusstiefe eines rechteckigen Querschnitts mit der Brent-Methode
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
[Python] [Meta] Ist der Python-Typ ein Typ?
Die Geschichte der Verarbeitung A von Blackjack (Python)
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
So berechnen Sie die Volatilität einer Marke
Holen Sie sich den Aufrufer einer Funktion in Python
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Kopieren Sie die Liste in Python
Berechnen Sie die Wahrscheinlichkeit von Ausreißern auf den Box-Whiskern
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Ausgabe in Form eines Python-Arrays
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Berücksichtigung der Stärken und Schwächen von Python
Approximieren Sie eine Bezier-Kurve durch einen bestimmten Punkt mit der Methode der kleinsten Quadrate in Python
Berechnung der kürzesten Route nach der Monte-Carlo-Methode
[Python] Ein Programm, das die Anzahl der Täler zählt
Berechnen Sie das Volumen aus der zweidimensionalen Struktur einer Verbindung
[Python] Berechnen Sie den Durchschnittswert des Pixelwerts RGB des Objekts
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Schritte zur Berechnung der Wahrscheinlichkeit einer Normalverteilung
[Python] Zusammenfassung der Methode zur Tabellenerstellung mit DataFrame (Pandas)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
[Python] Maskiere das Bild mit Pillow zu einem Kreis
Aufgaben zu Beginn eines neuen Python-Projekts
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Studie aus Python Hour8: Verwenden von Paketen
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Ich habe versucht, Python (3) anstelle eines Funktionsrechners zu verwenden
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen