Dieses Notebook im Webbrowser ausführen:
Der Link öffnet bedload-exercise.py als interaktives marimo-Notebook, das vollständig im Webbrowser läuft, ohne dass etwas installiert werden muss. Wie das Jupyter-Notebook ist das marimo-Notebook die französische Originalfassung dieser Seite.
Warten Sie einen Moment, bis Python im Browser geladen ist (das dauert nur beim ersten Start länger).
Klicken Sie auf den gelben Ausführen-Button (▶︎, unten rechts), um alle Zellen auszuführen.
Bearbeiten Sie beliebige Code-Zellen und führen Sie sie erneut aus: marimo aktualisiert automatisch alle davon abhängigen Zellen.
Ihre Änderungen bleiben nur im Browser-Tab erhalten. Um sie zu behalten, speichern Sie das Notebook über das Menü (☰, oben rechts) > Export… > Python.
Dieses marimo-Notebook lokal ausführen
Um bedload-exercise.py auf dem eigenen Rechner auszuführen, holen Sie es aus dem Repository marimo
Klonen Sie das Repository:
git clone https://github.com/sschwindt/marimo-python-course.gitErstellen und aktivieren Sie die Kursumgebung:
conda env create -f environment.ymlundconda activate hy-marimoStarten Sie das Notebook im Repository-Ordner mit
marimo edit bedload-exercise.py
Dieses Notebook mit Jupyter ausführen
Diese Seite gibt es auch als Jupyter-Notebook bedload-exercise.ipynb im Repository jupyter oder
, oder laden Sie das Notebook herunter
und installieren Sie Python sowie JupyterLab lokal, um bedload-exercise.ipynb auf dem eigenen Rechner auszuführen. Das Notebook auf Binder, Colab und GitHub ist die französische Originalfassung dieser Seite.
Aufbau der Übung¶
| Teil | wer arbeitet | |
|---|---|---|
| I | Vorbereitung: Skript und Daten laden | gegeben: Zellen ausführen |
| II | Daten: Kornverteilung, Rauheiten , Schwelle | Sie: zwei Listen ergänzen |
| III | Gleichungen: Rauheitsverhältnis und kritische Rauheit | Sie: zwei Codezeilen ergänzen |
| IV | Ergebnisse: MPM-Berechnung des Geschiebetransports, Shields-Diagramm, aktive Querprofile | gegeben: ausführen und interpretieren |
Programmierkenntnisse sind nicht erforderlich. Eine Zelle wird mit Umschalt + Eingabe (Shift + Enter) ausgeführt. Die zu ergänzenden Stellen sind mit dem Kommentar # >>> À COMPLÉTER (zu ergänzen) markiert: Ersetzen Sie jeden Text ">>> COMPLETER" (inklusive Anführungszeichen) durch Ihren Wert oder Ihre Gleichung. Im Code werden Dezimalzahlen mit einem Punkt geschrieben (0.047 und nicht 0,047).
Teil I: Vorbereitung¶
Die folgende Zelle lädt das Skript fun/charriage.py unter dem Kurznamen ch und zeigt die Daten aus data/hecras-arbogne.csv an. Auf Google Colab lädt sie zuerst diese beiden Dateien herunter. Diese Zelle enthält keinen Lernstoff.
import os, sys, urllib.request
if "google.colab" in sys.modules: # uniquement sur Google Colab : télécharge le script et les données
for f in ("fun/charriage.py", "data/hecras-arbogne.csv"):
os.makedirs(os.path.dirname(f), exist_ok=True)
urllib.request.urlretrieve(
f"https://raw.githubusercontent.com/hydro-informatics/jupyter-python-course/main/{f}", f)
from fun import charriage as ch # fun/charriage.py, lit data/hecras-arbogne.csv
ch.lire_hecras()Die Tabelle zeigt für jedes Querprofil (in Fließrichtung) die Station, den Abfluss, die Sohl- und Wasserspiegelkoten, das Energieliniengefälle , den hydraulischen Radius und die Abflusstiefe . Das Gefälle nimmt von 0,0042 oberstrom auf 0,0007 unterstrom ab: Dort droht sich der Kies abzulagern.
Teil II: Daten¶
Aufgabe 1: Kornverteilung und Rauheit¶
Zwei Kornverteilungskurven beschreiben die Arbogne (Linienzahlanalyse nach Fehr, März 2014):
„Sable (fin)“ (Sand, fein), um den Eintrag von oberstrom abzuschätzen;
„Gravier (complet)“ (Kies, vollständig), um die anstehende Sohle zu charakterisieren.
Vier charakteristische Korndurchmesser genügen für die Übung:
| Kornverteilungskurve | [mm] | [mm] | [mm] |
|---|---|---|---|
| „Sable (fin)“ | 0,23 | nicht benötigt | nicht benötigt |
| „Gravier (complet)“ | 8,88 | 13,56 | 23,06 |
des Sandes steht für den durchlaufenden Feinanteil;
des Kieses steht für den transportierten Kies;
des Kieses steht für die anstehende Sohle (Deckschicht);
des Kieses bestimmt die Kornrauheit (Meyer-Peter & Müller 1948).
Tragen Sie diese Werte in Millimetern in die Liste melanges ein. Achtung: In Python wird das Dezimalkomma zum Punkt (0,23 wird 0.23 geschrieben). Die Reihenfolge zählt: zuerst der Sand, dann der Kies (das letzte Gemisch der Liste steht für die Sohle).
Tragen Sie anschließend in die Liste k_st die beiden zu vergleichenden Strickler-Beiwerte [m/s] ein, vom glattesten zum rauesten:
ohne Vegetation: Die Strömung bleibt im Kiesbett (Referenzzustand);
mit Vegetation: Das Hochwasser ufert in das dicht bewachsene Vorland aus.
Die Liste darf weitere Werte enthalten: Jeder zusätzliche wird zu einem weiteren Rauheitsfall.
# >>> À COMPLÉTER : diamètres caractéristiques en mm
# nom d_m d_84 d_90
melanges = [["Sable (fin)", ">>> COMPLETER"],
["Gravier (complet)", ">>> COMPLETER", ">>> COMPLETER", ">>> COMPLETER"]]
# >>> À COMPLÉTER : coefficients de Strickler k_st [m^(1/3)/s], sans végétation en premier
k_st = [">>> COMPLETER", ">>> COMPLETER"]Schwelle des Bewegungsbeginns ¶
MPM wurde mit einem kritischen Shields-Parameter von = 0,047 kalibriert; dieser Wert gilt für die ganze Übung. Die Liste tau_cr akzeptiert trotzdem mehrere Werte, zum Beispiel um die Empfindlichkeit des Ergebnisses gegenüber der Schwelle zu testen (siehe Hausaufgabe). Entfernen Sie dazu das # vor der zweiten Zeile: Jede Abbildung zeigt dann alle Werte der Liste.
tau_cr = [0.047]
# tau_cr = [0.030, 0.040, 0.047, 0.056, 0.070] # variante, pas utilisée dans l'exerciceTeil III: Gleichungen¶
Aufgabe 2: Rauheitsverhältnis ¶
MPM vergleicht nicht die gesamte dimensionslose Sohlschubspannung mit der Schwelle, sondern nur den Anteil, der auf die Körner wirkt. Ein Teil der Energie wird durch Sohlformen, Vegetation und Ufer dissipiert. Das Rauheitsverhältnis korrigiert entsprechend:
: gesamter Strickler-Beiwert des Abschnitts (die Liste
k_staus Aufgabe 1);: Strickler-Beiwert des Korns einer ebenen Sohle, berechnet von charriage.py mit des Kieses in Metern.
Ergänzen Sie die markierte Zeile. In Python wird eine Potenz mit ** geschrieben: Zum Beispiel wird als a ** (3 / 2) geschrieben.
def rapport_rugosite(k_st, k_r):
# >>> À COMPLÉTER : k' = (k_st / k_r)^(3/2)
return ">>> COMPLETER"Aufgabe 3: kritische Rauheit ¶
Je stärker die Vegetation die Strömung bremst, desto kleiner wird und mit ihm die wirksame Schubspannung . Ein Querprofil hört auf zu transportieren, wenn . Ersetzt man durch seine Definition und löst nach auf, erhält man die kritische Rauheit jedes Querprofils:
Ein Querprofil transportiert, solange . Mit dieser Gleichung lässt sich die Anzahl aktiver Querprofile bei zunehmender Rauheit darstellen (letzte Abbildung). Ergänzen Sie die markierte Zeile.
def k_st_critique(tau, k_r, tau_cr):
# >>> À COMPLÉTER : k_st,cr = k_r * (tau_cr / tau)^(2/3)
return ">>> COMPLETER"Kontrolle¶
Führen Sie diese Zelle nach jeder Aufgabe aus. [OK] bedeutet, dass der Wert mit der Vorlesung übereinstimmt, [XX], dass er falsch ist, und [ ], dass er noch nicht ergänzt ist. Korrigieren Sie den Wert und führen Sie dann die Zelle der Aufgabe und diese Zelle erneut aus.
ch.verifier(melanges, k_st, rapport_rugosite, k_st_critique)Teil IV: Ergebnisse¶
MPM-Berechnung für die 16 Querprofile¶
charriage.py kombiniert Ihre Daten und wendet MPM auf jedes Querprofil an: Jeder Rauheitsfall der Liste k_st wird für beide Kornklassen berechnet.
| Korn | was es darstellt | Rauheitsfälle |
|---|---|---|
| Kies, | der transportierte Kies | ohne und mit Vegetation |
| Sand, | der Feineintrag von oberstrom | ohne und mit Vegetation |
| Kies, | die anstehende, abgepflasterte Sohle | nur ohne Vegetation |
Die Tabelle fasst für jede Kombination das Rauheitsverhältnis , die Anzahl der Querprofile, die noch transportieren (), sowie das größte und die größte Geschiebetransportrate [kg/(sm)] des Abschnitts zusammen.
resultats = ch.calculer(melanges, k_st, tau_cr, rapport_rugosite)
ch.resume(resultats)Shields-Diagramm¶
Das Diagramm vergleicht die beiden Rauheitsfälle ohne Vegetation (Abfluss im Gerinne) und mit Vegetation (Hochwasser ufert in das Vorland aus) für beide Kornklassen, Kies und Sand. Jeder Punkt ist ein Querprofil. Die vertikale Achse ist die wirksame Schubspannung auf die Körner , also diejenige, die MPM mit vergleicht. Unterhalb der kritischen Shields-Kurve findet kein Geschiebetransport statt.
Farbe: Rauheitsfall (blau ohne Vegetation, rot mit Vegetation);
Symbol: Kornklasse (Kreis: Kies; Dreieck: Sand);
Größe: , eine Dekade pro Klasse (das größte ergibt die größte Markierung).
ch.diagramme_shields(resultats)Aktive Querprofile bei zunehmender Rauheit¶
Die folgende Abbildung verringert schrittweise (von links nach rechts nimmt die Vegetation zu) und zählt für den Kies die Querprofile, in denen . Die vertikalen Linien sind Ihre Werte aus der Liste k_st. Der vollständige Stillstand ist der -Wert, unterhalb dessen kein Querprofil mehr transportiert.
ch.profils_actifs(melanges, k_st, tau_cr, k_st_critique)