SWAT : Phase routage

Définition

La phase routage correspond au phénomène du transit de l’eau d’un bassin versant à un autre.

Résolution

Spatiale

Le BVe.

Temporelle

Le jour.

Interface entités

Les entités utilisés lors de la phase routage sont :

Description

On désigne par cours d’eau tout chenal superficiel ou tuyau partiellement remplis dans lequel s’écoule un flux d’eau continu ou temporaire. Le modèle utilise les équations de ”Manning” pour définir le débit et la vitesse de l’’eau (voir la description générale de SWAT ). Le routage de l’eau dans les réseaux hydrauliques est modélisé avec la Muskingum Routing Method, qui est une variation du kinematic wave model.
Une fois les « décharges » d’eau pour le cours d’eau calculées, le routage de l’eau dans les réseaux hydrauliques peut être modélisé. Dans le modèle, le volume de stockage pour un tronçon de cours d’eau va être modélisé comme une combinaison d’une « cheville » (wedge) et d’un prisme.

Le stockage de la cheville et le prisme pour un tronçon de cours d’eau
Le stockage de la cheville et le prisme pour un tronçon de cours d’eau

 

Tout à bord, il faut calculer la quantité d’eau qui va ruisseler dans le tronçon du BVe. Les processus et les algorithmes pour un BVe sont présentés dans cette page. Le principe du routage de l’eau entre les différents BVe est présenté ici :

(1)   \begin{equation*}  wtrin(i)=wtrout(i-1)+V_{BVe}(i)  [m^3] \end{equation*}

Où (wtrin(i)) est la quantité d’eau qui ruisselle dans le BVe(i), (wtrout(i− 1)) est la quantité d’eau qui vient du  BVe précédent (i-1), (VBVe(i)) est la quantité d’eau venant de la phase du sol pour le BVe i .

Remarque : Les phénomènes que l’on n’a pas simulés ici :

Overland flow : On suppose qu’il n’y a pas de overland flow, l’exutoire du cours d’eau dans un BVe est la seule sortie.

Le routage du cours d’eau

Les algorithmes 4.1.1 – 4.1.6 sont basés sur les fichiers ”qman.f”, ”route.f” et ”rtmusk.f” des codes source du modèle SWAT et le chapitre 7 :1 de la do- cumentation théorique (2009).

Variables d’entrée

LCh [km]: La longueur du cours d’eau dans un BVe ;

Wbnkful [m]: La largeur moyenne au miroir des cours d’eau dans un BVe ;

depthbnkful [m]: La profondeur moyenne au miroir pour le cours d’eau dans un BVe ;

slpch [m/m]: La pente moyenne pour le cours d’eau dans un BVe ;

nCh : Le coefficient de Manning pour le cours d’eau ;

KCh [mm/hr]: La conductivité hydraulique pour le cours d’eau ;

zch [m/m]: La pente pour le côté du cours d’eau ; (par défaut zch = 2)

evrch : Le coefficient pour ajuster l’évaporation de l’eau dans les zone arides, evrch = 1 normalement

msk1, msk2 : Le coefficient de muskingum pour calculer le Kmsk du bassin versant. A noter, la relation entre ces deux variables : msk1 + msk2 = 1.

mskX : Le coefficient de muskingum représentant la cheville, pour le BVe.

E0 [m]: L’évapotranspiration potentielle

bankst [m3]: Le volume d’eau dans le bank storage
, pour le BVe.

frtlssch : La fraction de perte par transmission pour l’aquifère profond, pour le BVe. Cette valeur est entre 0-1,égal à 0 par défaut.

αbnk : Le coefficient de récession pour le bank storage flow, pour le BVe. Par défaut, on va utiliser la même valeur pour la facteur alpha et pour le base flow

βrev : Le coefficient de ”revap”

Variables de sortie

Ach(i), depthch(i) : La surface de section mouillée et la profondeur réelle du cours d’eau pour un jour

Evapch(i)(i) [m3]: La quantité d’évaporation du cours d’eau dans un jour.

TTch(i) [hr]: La durée du trajet pour le cours d’eau

rtwtr(i) : La quantité d’eau sortie d’un BVe (m3)

sdti(i) : Le flux moyen dans un cours d’eau pendant un jour (m3/s)

debit(i) : Le débit moyen dans un cours d’eau pendant un jour (m3/s)

tlssch(i) : La perte de transmission dans le cours d’eau (m3)

revbnk(i) : La quantité de l’eau ”revap” dans le bank storage (m3)

qdbank(i) : La contribution vers le cours d’eau par le bank storage (return flow) (m3)

Variables intermédiaires

Abnkful(i) : Superficie de la section mouillée lors de bankfull(m2);

Wbtm(i) : La pente pour le cˆoté du cours d’eau (m/m) ;

qbankful(i) : Le débit du cours d’eau au miroir (m3/s);

Kch,bnkful(i) : Le ratio de stockage à débit pour un cours d’eau miroir (hr);

Kch,0.1 bnkful(i) : Le ratio de stockage à débit pour un cours d’eau lors du 0.1 profondeur de miroir (hr) ;

wtrin(i) : La quantité de l’eau qui ruisselle dans le cours d’eau (m3) ;

rchstor(i) : La quantité de l’eau qui est stockée dans un tronc ̧on du cours d’eau (m3) ;

flwinprec(i), flwoutprec(i) : Les flux entrées et sorties du tronçon le jour précédent. (m3)

flwin(i), flwout(i) : Les flux entrées et sorties du tronçon du jour. (m3)

Variables locales

Kmsk : Le storage time constant pour un tronçon du cours d’eau. (hr)

curyr, idl : l’année actuelle (curent year) et le premier jour d’une année

det : Le pas du temps (24hr)


detmax, detmin : Le pas du temps pour vérifier la stabilité du muskingum

nn : La fréquence des pas de temps sous-journaliers dans un jour.

vol : Le volume d’eau dans un tronçon du cours d’eau au début d’un jour (m3)

Calcul du temps de stockage constant(storage  time constant) pour un tronçon de cours d’eau : Kmsk

Le storage time constant est une caractéristique physique pour un tronçon de cours d’eau pour la méthode de Muskingum. Il est définie comme le temps nécessaire pour vider toutes les eaux stockées dans le tronçon. La solution numérique du modèle Muskingum n’est pas stable quand ce temps de stockage constant est inférieur au pas de temps de la simulation. Dans le cas du modèle Maelia, tout les processus sont modélisés avec un pas journalier, c-à-d 24hr. Normalement, la valeur du storage time constant est supérieure à un jour (Kmsk > 24hr), mais dans certains cas particuliers (par exemple si le tronc ̧on est très petit), cette valeur peut être inférieur à 24hr. Dans ces cas là, les algorithmes des boucles sur les jours doivent être ajusté[?].

  \begin{algorithm} \caption{Algorithme 4.1.1} $K_{msk}=msk1*K_{ch,bnkful}+msk2*K_{ch,0.1bnkful}$;\\ $det=24;$\\ $detmax=2*K_{msk}*(1-mskX)$;\ \ ($detmin=2*K_{msk}*mskX$); \\ \vspace{1em} \If{$det>detmax$} { \If{$det/2 \leq detmax$} { $det=12;\ nn=2;$\\ \textbf{elseif}($det/4 \leq detmax)$ \textbf{then}\\ $det=6;\ nn=4;$\\ \textbf{else} $det=1;\ nn=24;$\\ } $det=24;\ nn=1$ } $wtrin=wtrin/nn$; \scriptsize $\backslash\backslash$ La quantite d'eau pour chaque pas de temps \\ \normalsize \scriptsize $\backslash\backslash$ (Le cas général: $det=24; nn=1;$) \normalsize \end{algorithm}

Si nn ̸= 1, on doit introduire la boucle sur les pas de temps det à l’intérieur des boucles sur les jours. Tous les processus suivantes pour la phase de routage sont basés sur cette boucle. Pour faciliter la lecture, nous avons omis ces boucles dans les algorithmes suivants.

Calcul du volume et la profondeur du cours d’eau

On calcule la surface de section mouillée et la profondeur du cours d’eau pour un jour dans une petite boucle sur le depthch par intervalle de 1cm. Dans chaque itération, on calcule le débit du tronc ̧on en utilisant les équations de Manning avec la profondeur donnée. Par ailleurs, le débit moyen réel(volrt) peut être calculé par le volume d’eau stocké dans ce tronçon. Une fois que ces deux valeurs sont identiques, la profondeur réelle du cours d’eau est définie.

Normalement, il n’y a pas d’inondation dans la zone Garonne Amont, donc on ne le simule pas dans un première temps. Si cela était nécessaire, la plaine d’inondation est illustrée au-dessous :

Illustration de la plaine d’inondation
Illustration de la plaine d’inondation

Calcul de la vitesse d’eau et la quantité d’eau sortant d’un BVe

La vitesse d’eau est calculée simplement par division du volume d’eau d’un tronçon par la surface de section mouillée. En suite, la quantité d’eau sortant d’un BVe est simulée par la méthode Muskingum :
  \begin{algorithm} \caption{Algorithme 4.1.2} $vol=wtrin+rchstor;$\\ $volrt=\displaystyle\frac{vol}{86400/nn}$; \scriptsize $\backslash\backslash$ Le debit moyen pour chaque pas de temps au début du jour. \normalsize\\ \scriptsize $\backslash\backslash$ Si $volrt>q_{bankful}\ ?:$ Le debit est superieur que le debit max, il faut simuler les effets de la plaine d'inondation; $W_{btm,fld}=5*W_{bnkfull};\ Z_{fld}=4;$ \normalsize \\ \vspace{1em} \While{$sdti<volrt$} { $depth_{ch}=depth_{ch}+0.1;$\\ $A_{ch}=(W_{btm}+Z_{ch}*depth_{ch})*depth_{ch};$\\ $P_{ch}=W_{btm}+2*depth_{ch}*\sqrt{1+Z_{ch}^2};$\\ $R_{ch}=\frac{A_{ch}}{P_{ch}};$\\ $sdti=Qman(A_{ch},R_{ch},n_{Ch},slp_{ch});$\\ } $sdti=volrt;$\\ \vspace{1em} \scriptsize $\backslash\backslash$ Ensuite, on pourra calculer la largeur du cours d'eau (pas d'inondation):\normalsize \\ $W_{ch}=W_{btm}+2*depth_{ch}*Z_{ch};$\\ \end{algorithm}
  \begin{algorithm} \caption{Algorithme 4.1.3} $\upsilon_{ch}=sdti \div A_{ch}$; \scriptsize $\backslash\backslash$ Vitesse d'eau \normalsize \\ $rttime=L_{ch}*1000 \div \ (3600*\upsilon_{ch});$ \scriptsize $\backslash\backslash$ La duree du trajet \normalsize \\ \vspace{1em} \scriptsize $\backslash\backslash$ \textbf{Les coefficient pour la methode Muskingum:}\normalsize \\ $yy=2*K_{msk}*(1-mskX)+det;$\\ $c1=(det-2*K_{msk}*mskX) \div yy;$\\ $c2=(det+2*K_{msk}*mskX) \div yy;$\\ $c3=(2*K_{msk}*(1-mskX)-det) \div yy;$\\ \vspace{1em} \scriptsize $\backslash\backslash$ \textbf{La quantite d'eau sortant d'un BVe en un jour:}\normalsize \\ $curyr=1\ et\ i=id1\ ?;$ \scriptsize $\backslash\backslash$ Le premier jour d'une annee? \normalsize \\ $flwin_{prec}=rchstor;\ \ flwout_{prec}=rchstor;\ finsi; $ ;\\ \vspace{1em} $rtwtr=c1*wtrin+c2*flwin_{prec}+c3*flwout_{prec};$\\ $rtwtr<0\ ?;\ rtwtr=0;$\\ $rtwtr=Min(rtwtr,(wtrin+rchstor));$\\ \vspace{1em} \scriptsize $\backslash\backslash$ \textbf{Mise a jour de la quantite d'eau qui est stocke dans un tronçon:}\normalsize \\ $rchstor=rchstor+wtrin-rtwtr;$\\ $rchstor<0\ ?;\ rchstor=0;$\\ \end{algorithm}

Calcul de la perte de transmission

Les cours d’eau sont classés comme éphémères, intermittents ou permanents en fonction de leur contribution aux eaux souterraines. Lors de la période où la nappe d’accompagnement est inférieure au niveau de rivière, le cours d’eau ne reçoit plus de contributions de la part de l’eau souterraine, et de l’eau est probablement perdue par transmission à travers le côté et le bas de la nappe. C’est aussi la seule manière pour l’eau dans la phase de routage de revenir à la phase du sol.

  \begin{algorithm} \caption{Algorithme 4.1.4} $tlss_{ch}=0; $ \scriptsize $\backslash\backslash$ Initialisation de la perte par transmission\normalsize \\ \If{$rtwtr>0$ \scriptsize $\backslash\backslash$ on calcule la perte par transmission quand le flux sortant est superieur à 0.} { $tlss_{ch}=det*K_{ch}*L_{ch}*p_{ch};$ \scriptsize $\backslash\backslash$ si on ne fait pas la boucle sous-journalière, det=24 hr, $K_{ch}: mm/hr$, $L_{ch}: km$, $p_{ch}: m$. \\ \normalsize $tlss2_{ch}=\displaystyle\frac{tlss_{ch}*rchstor}{rtwtr+rchstor};$ \scriptsize $\backslash\backslash$ On partitionne les pertes de transmission pour les deux parties: l'eau sortante et l'eau stockee du tronçon. tlss2 est la perte pour la partie stockée. \normalsize \\ \vspace{1em} $tlss2_{ch}=min(rchstor, tlss2_{ch}); $\\ $rchstor=rchstor-tlss2_{ch} ; $\\ $tlss1_{ch}=tlss_{ch}-tlss2_{ch}; $\\ $tlss1_{ch}=min(rtwtr, tlss1_{ch});$\\ $rtwtr=rtwtr-tlss1_{ch};$\\ \vspace{1em} $tlss_{ch}=tlss1_{ch}+tlss2_{ch};$\scriptsize $\backslash\backslash$ La perte de transmission. \normalsize } \end{algorithm}

Calcul de la perte de l’évaporation

Les pertes d’évaporation sont partitionnées proportionnellement entre la partie du stockage et la partie du flux sortant. Il faut cependant vérifier si chaque partie contient assez d’eau.

  \begin{algorithm} \caption{Algorithme 4.1.5} \If{$rtwtr>0$} { $aaa=evrch * E_{0} \div 1000;$ \scriptsize $\backslash\backslash$ La variable intermediaire, l'unite de $E_0$ est $mm$, mais on a besoins de la quantité d'eau exprimé en $m^3$ \normalsize \\ \vspace{1em} $Evap_{ch}=aaa*L_{ch}*1000*W_{ch};$\\ $Evap_{ch,2}=\displaystyle\frac{Evap_{ch}*rchstor}{rtwtr+rchstor};$ \scriptsize $\backslash\backslash$ Etre sure qu'il a assez d'eau stockee dans le tronçon \normalsize \\ $Evap_{ch,2}=min(Evap_{ch,2},rchstor);$\\ \vspace{1em} $rchstor=rchstor-Evap_{ch,2};$\\ $Evap_{ch,1}=Evap_{ch}-Evap_{ch,2};$ \scriptsize $\backslash\backslash$ L'évaporation pour le flux sortie \\ \normalsize $Evap_{ch,1}=min(Evap_{ch,1},rtwtr);$\\ \vspace{1em} $rtwtr=rtwtr-Evap_{ch,1};$ \scriptsize $\backslash\backslash$ Mettre a jour du $rtwtr$ \normalsize \\ $Evap_{ch}=Evap_{ch,1}+Evap_{ch,2};$\\ \textbf{else}; \scriptsize $\backslash\backslash$ $rtwtr<0$ \\ \normalsize $rtwtr=0;\ sdti=0;$\\ $flwin=0;\ flwout=0;\ rchstor=0;$ } \end{algorithm}

Calcul du bank storage

La quantité d’eau qui est perdue par transmission dans un tronçon peut être entrée ultérieurement dans l’aquifère profond ou le bank storage.
  \begin{algorithm} \caption{Algorithme 4.1.6} \scriptsize $\backslash\backslash$ \textbf{Le chargement du \textit{bank storage}} \normalsize \\ $tlss_{ch} > 0\ ?;\ bankst=bankst+tlss_{ch}*(1-fr_{tlssch}); $ \scriptsize $\backslash\backslash$ Le paramètre d'ici $fr_{tlssch}$ est la fraction de perte par transmission vers l'aquifere profond. Cette valeur est entre 0-1, par defaut egal à 0 . \normalsize \\ \vspace{1em} \scriptsize $\backslash\backslash$ \textbf{Le \textit{Révap} du \textit{bank storage}} \normalsize \\ $rvpbnk=\beta_{rev}*E_0*L_{ch}*W_{ch}; $\\ $rvpbnk=min(bankst, rvpbnk); $\\ $bankst=bankst-rvpbnk;$\\ \vspace{1em} \scriptsize $\backslash\backslash$ \textbf{\textit{return flow}} \normalsize \\ $qdbank=bankst*(1-exp(-\alpha_{bnk}));$\\ $bankst=bankst-qdbank;$\\ $rtwtr=rtwtr+qdbank;$\\ \end{algorithm}

Résultat final pour le routage du cours d’eau

  \begin{algorithm}[H] \caption{Les resultats finaux pour le routage du cours d'eau} $flwin=wtrin;$\\ $flwout=rtwtr;$\\ \vspace{1em} \scriptsize $\backslash\backslash$ Si on utilise les boucles sur les pas de temps sous-journalier, les wtrin et rtwtr sont calcules au niveau sous-journaliers, on doit sommer les flux entrée et sortie pour un jour \normalsize \\ \For{1,nn \scriptsize $\backslash\backslash$ Pas vraiment necessaire car on est déjà dans les boucles sur les $det$, dans ce document, on l'a omis. \normalsize \\} { $qinday=qinday+wtrin;$\\ $qoutday=qoutday+rtwtr;$\\ } \vspace{1em} $rtwtr=qouday;$ \scriptsize $\backslash\backslash$ La quantite d'eau sortant d'un BVe lors d'un jour \normalsize \\ \vspace{1em} $rtwtr>0\ ?;\ rtwtr=0;$\\ $rchstor<0\ ?;\ rchstor=0;$\\ $rchstor<10\ ?;\ then\ rtwtr=rtwtr+rchstor;\ rchstor=0;$\\ \vspace{1em} $debit=rtwtr \div 86400;$\scriptsize $\backslash\backslash$ \textbf{Debit pour un BVe !!!} \normalsize \end{algorithm}

Remarque : On ne calcule pas les in-pluviums du cours d’eau parce que la somme de surface des HRUs représente tout le BVe (y compris le cours d’eau). Donc la précipitation est déjà calculée dans la phase du sol.

Remarque : Les phénomènes que l’on n’a pas simulé ici :

– La plaine d’inondation : On ne calcule pas l’inondation