Source code for hsamiplus.hsami_ecoulement_horizontal

"""The function simulates the lateral flow in HSAMI+ model."""

from __future__ import annotations

import numpy as np


[docs] def hsami_ecoulement_horizontal( nb_pas, vidange_reserve_inter, reserve_inter, eau_hydrogrammes, hydrogrammes, apport_vertical, modules, ): """ Module d'écoulement horizontal. Parameters ---------- nb_pas : int Nombre de pas de temps. vidange_reserve_inter : float Taux vidange inter. reserve_inter : float Eau dans la réserve intermédiaire. eau_hydrogrammes : list Eau en transit dans les HU. hydrogrammes : list Hydrogrammes unitaires de surface et intermediaire. apport_vertical : list Lames d'eau verticales (voir hsami_interception). modules : dict Les modules pour la simulation. Returns ------- apport : float Apports verticaux laminés. reserve_inter : float Eau dans la réserve intermédiaire. eau_hydrogrammes : list Eau en transit dans les HU. """ # On pondere le taux de vidange en fonction du pas de temps vidange_reserve_inter = 1 - (1 - vidange_reserve_inter) / nb_pas # Distribution du ruissellement de surface en fonction de l'hydrogramme de surface eau_hydrogrammes[:, 0] = eau_hydrogrammes[:, 0] + hydrogrammes[:, 0] * apport_vertical[2] if modules["mhumide"] == 1: eau_hydrogrammes[:, 2] = eau_hydrogrammes[:, 2] + hydrogrammes[:, 0] * apport_vertical[5] # Calcul de l'apport latéral apport = [ apport_vertical[0], reserve_inter, eau_hydrogrammes[0, 0], apport_vertical[3], apport_vertical[4], eau_hydrogrammes[0, 2], ] # Ex.: apport = [0.0510, 0.0147, 0.0012, -0.0894, 0, 0] # Alimentation de la réserve intermédiaire par le ruissellement intermédiaire eau_hydrogrammes[0, 1] = apport_vertical[1] eau_inter = np.sum(eau_hydrogrammes[:, 1] * hydrogrammes[:, 1]) reserve_inter = reserve_inter * vidange_reserve_inter + eau_inter * (1 - vidange_reserve_inter) # Ex.: eau_inter = 0.0060 # --------------------------------------- # Décalage de l'eau dans les hydrogrammes # --------------------------------------- # Hydrogramme de surface: décalage vers la gauche eau_hydrogrammes[:-1, 0] = eau_hydrogrammes[1:, 0] eau_hydrogrammes[-1, 0] = 0 eau_hydrogrammes[:-1, 2] = eau_hydrogrammes[1:, 2] eau_hydrogrammes[-1, 2] = 0 # Hydrogramme intermédiaire: décalage vers la droite eau_hydrogrammes[1:, 1] = eau_hydrogrammes[:-1, 1] eau_hydrogrammes[0, 1] = 0 return apport, reserve_inter, eau_hydrogrammes