Pour travailler de manière interactive : , ou télécharger le paquet de l’exercice (fichier zip) et l’ouvrir en local avec JupyterLab.
Le paquet contient trois fichiers qui doivent rester dans le même dossier :
Fichier, contenu
bedload-exercise.ipynb charriage.pyLe code technique : formulaire de Meyer-Peter & Müller (MPM), contrôle et figures hecras-arbogne.csv= l’hydraulique de 16 profils HEC-RAS 1D de l’Arbogne à Dompierre (FR) pour Q = 25 m/s
Tâche : votre expertise est demandée pour analyser le risque d’alluvionnement dans letronçon revitalisé de l’Arbogne. Un collège vous a fourni l’hydraulique (1D) de 16 profils sur 890 m. Où le gravier s’arrête-t-il, et que se passe-t-il quand la vendation freine l’éveil ?
Structure de l’exercice¶
| partie | qui travaille | |
|---|---|---|
| I | préparation : charger le script et les données | donné : exécuter les cellules |
| II | données : granulométrie, rugosités , seuil | vous : compléter deux listes |
| III | équations : rapport de rugosité et rugosité critique | vous : compléter deux lignes de code |
| IV | résultats : calcul MPM, diagramme de Shields, profils actifs | donné : exécuter et interpréter |
Il n’est pas nécessaire de savoir programmer. Une cellule s’exécute avec Maj + Entrée (Shift + Enter). Les endroits à compléter sont marqués par le commentaire # >>> À COMPLÉTER : remplacez chaque texte ">>> COMPLETER" (guillemets compris) par votre valeur ou votre équation. Dans le code, les nombres décimaux s’écrivent avec un point (0.047 et non 0,047).
Partie I : préparation¶
La cellule suivante charge le script charriage.py sous le nom abrégé ch. Sur Google Colab, elle télécharge d’abord le script et les données. Cette cellule ne contient pas de matière du cours.
import sys, urllib.request
if "google.colab" in sys.modules: # uniquement sur Google Colab
for f in ("charriage.py", "hecras-arbogne.csv"):
urllib.request.urlretrieve(f"https://raw.githubusercontent.com/hydro-informatics/charriage-arbogne/main/{f}", f)
import charriage as ch
ch.lire_hecras()Le tableau affiche, pour chaque profil (de l’amont vers l’aval), la station, le débit, les côtes du fond et de l’eau, la pente de la ligne d’énergie , le rayon hydraulique et la hauteur d’eau . La pente passe de 0,0042 à l’amont à 0,0007 à l’aval : c’est là que le gravier risque de se déposer.
Partie II : données¶
Tâche 1 : granulométrie et rugosité¶
Deux courbes granulométriques décrivent l’Arbogne (analyse en ligne selon Fehr, mars 2014) :
« Sable (fin) » pour estimer l’apport de l’amont ;
« Gravier (complet) » pour caractériser le lit en place.
Trois diamètres caractéristiques suffisent pour l’exercice :
| courbe granulométrique | [mm] | [mm] |
|---|---|---|
| « Sable (fin) » | 0,23 | pas nécessaire |
| « Gravier (complet) » | 8,88 | 13,56 |
du sable représente l’apport fin qui transite ;
du gravier représente le gravier en transit ;
du gravier représente le lit en place (pavage) et fixe la rugosité de grain .
Reportez ces valeurs, en millimètres, dans la liste melanges. Attention : en Python, la virgule décimale devient un point (0,23 s’écrit 0.23). L’ordre compte : d’abord le sable, puis le gravier (le dernier mélange de la liste représente le lit).
Reportez ensuite dans la liste k_st les deux coefficients de Strickler [m/s] à comparer, du plus lisse au plus rugueux :
sans végétation : l’écoulement reste dans le lit en gravier (état de référence) ;
avec végétation : la crue déborde dans la plaine inondable, densément végétalisée.
La liste peut contenir d’autres valeurs : chaque ajouté devient un cas de rugosité supplémentaire.
# >>> À COMPLÉTER : diamètres caractéristiques en mm
# nom d_m d_84
melanges = [["Sable (fin)", ">>> COMPLETER"],
["Gravier (complet)", ">>> COMPLETER", ">>> COMPLETER"]]
# >>> À COMPLÉTER : coefficients de Strickler k_st [m^(1/3)/s], sans végétation en premier
k_st = [">>> COMPLETER", ">>> COMPLETER"]Seuil de mise en mouvement ¶
MPM a été calibré avec = 0,047, valeur utilisée dans tout l’exercice. La liste tau_cr accepte tout sauf plusieurs valeurs, par exemple pour tester la sensibilité du résultat au seuil (voir le devoir). Pour cela, supprimez le # devant la deuxième ligne : chaque figure annonce toutes les valeurs de la liste.
Note : ne se mesure pas. On le choisit dans une plage (environ 0,03 à 0,07 pour du gravier) et on l’annonce avec le résultat.
tau_cr = [0.047]
# tau_cr = [0.030, 0.040, 0.047, 0.056, 0.070] # variante, pas utilisée dans l'exercicePartie III : équations¶
Tâche 2 : rapport de rugosité ¶
MPM ne compare pas au seuil toute la contrainte de cisaillement , mais seulement la part qui agit sur les grains. Une partie de l’énergie est dissipée par les formes du lit, la végétation et les berges. Le rapport de rugosité corrige en conséquence :
: coefficient de Strickler total du tronçon (la liste
k_stde la tâche 1) ;: coefficient de Strickler de grain d’un lit plat, calculé par charriage.py avec du gravier en mètres.
Complétez la ligne marquée. En Python, la puissance s’écrit ** : par exemple, s’écrit a ** (3 / 2).
def rapport_rugosite(k_st, k_r):
# >>> À COMPLÉTER : k' = (k_st / k_r)^(3/2)
return ">>> COMPLETER"Tâche 3 : rugosité critique ¶
Plus la vendation freine l’écran, plus minuscule, et avec lui la contrainte efficace . Un profil cesse de transporteur quand . En remplaçant par sa définition et en résolvant pour , on obtient la rugosité critique de chaque profil :
Un profil transporte tant que . C’est cette équation qui permet de tracer le nombre de profils actifs quand la rugosité augmentée. Complétez la ligne bleue.
def k_st_critique(tau, k_r, tau_cr):
# >>> À COMPLÉTER : k_st,cr = k_r * (tau_cr / tau)^(2/3)
return ">>> COMPLETER"Contrôle¶
Exécutez cette cellule après chaque tâche. [OK] Signifie que la valeur correspond à la présentation, [XX] qu’elle est fausse, [ ] qu’elle n’est pas encore complète. Corrigez pouvez ré-exécutez la cellule de la tâche et cellule-ci.
ch.verifier(melanges, k_st, rapport_rugosite, k_st_critique)Partie IV : résultats¶
Calcul MPM sur les 16 profils¶
charriage.py croise vos données et applique MPM à chaque profil : chaque cas de rugosité de la liste k_st est calculé pour les deux classes de grain.
| grain | ce qu’il représente | cas de rugosité |
|---|---|---|
| gravier, | le gravier en transit | sans et avec végétation |
| sable, | l’apport fin de l’amont | sans et avec végétation |
| gravier, | le lit en place, pavé | sans végétation seulement |
Le tableau résume, pour chaque combinaison, le rapport de rugosité , le nombre de profils qui transportent encore (), ainsi que le plus grand et le plus grand charriage [kg/(sm)] du tronçon.
resultats = ch.calculer(melanges, k_st, tau_cr, rapport_rugosite)
ch.resume(resultats)Question : pourquoi = 0 sur certains profils ? Et pourquoi le sable est-il transporté partout ?
Diagramme de Boucliers¶
Le diagramme compare les deux cas de rugosité, sans génétation (écoulement dans le lit) et avec génétation (crue débardante dans la plaine inondable), pour les deux classes de grain, gravier et sable. Chaque point est un profil. L’axe vertical est la contrainte efficace sur les grains , cellule que MPM compare à . Sous la courbe de Shields critique, il n’y a pas de charriage.
couleur : cas de rugosité (bleu sans vendation, rouge avec vendation) ;
** symbole** : classe de grain (rond : gravier ; triangle : sable) ;
Taille : , une décennie par classe (le plus grand donne le plus grand marqueur).
ch.diagramme_shields(resultats)Note : avec = 0,23 mm, le sable est hors du domaine de validité de MPM (environ 0,4 à 30 mm). Son résultat n’est qu’un ordre de grandeur.
Questions : la ventilation place-t-elle le gravier et le sable de la même poignée ? Pour quelle classe de grain la vendation fait-elle passer les points sous la courbe ?
Profils actifs quand la rugosité augmentée¶
La figure suivante fait diminuer pas à pas (de gauche à droite, la vendation augmentée) et compte, pour le gravier, les profils où . Les lignes verticales sont vos valeurs de la liste k_st. L’extension totale est le sous lequel plus un profil ne transporte.
ch.profils_actifs(melanges, k_st, tau_cr, k_st_critique)Questions :
Entre quelles valeurs de le charriage du gravier s’est-il complété ?
Alluvionnement ou érosion : lequel des deux paramètres, le grain ou la rugosité, fait basculer le résultat ?