Source code for imod.wq.riv

from imod.wq.pkgbase import BoundaryCondition


[docs] class River(BoundaryCondition): """ The River package is used to simulate head-dependent flux boundaries. In the River package if the head in the cell falls below a certain threshold, the flux from the river to the model cell is set to a specified lower bound. Parameters ---------- stage: float or xr.DataArray of floats is the head in the river (STAGE). bottom_elevation: float or xr.DataArray of floats is the bottom of the riverbed (RBOT). conductance: float or xr.DataArray of floats is the conductance of the river. density: float or xr.DataArray of floats is the density used to convert the point head to the freshwater head (RIVSSMDENS). concentration: "None", float or xr.DataArray of floats, optional is the concentration in the river. Default is None. save_budget: bool, optional is a flag indicating if the budget should be saved (IRIVCB). Default is False. """ _pkg_id = "riv" _mapping = ( ("stage", "stage"), ("cond", "conductance"), ("rbot", "bottom_elevation"), ("rivssmdens", "density"), )
[docs] def __init__( self, stage, conductance, bottom_elevation, density, concentration=None, save_budget=False, ): super().__init__() self["stage"] = stage self["conductance"] = conductance self["bottom_elevation"] = bottom_elevation self["density"] = density if concentration is not None: self["concentration"] = concentration self["save_budget"] = save_budget
def _pkgcheck(self, ibound=None): to_check = ["conductance", "density"] if "concentration" in self.dataset.data_vars: to_check.append("concentration") self._check_positive(to_check) to_check.append("stage") to_check.append("bottom_elevation") self._check_location_consistent(to_check) if (self.dataset["bottom_elevation"] > self.dataset["stage"]).any(): raise ValueError( "Bottom elevation in {self} should not be higher than stage" ) def repeat_stress( self, stage=None, conductance=None, bottom_elevation=None, concentration=None, density=None, use_cftime=False, ): varnames = [ "stage", "conductance", "bottom_elevation", "density", "concentration", ] values = [stage, conductance, bottom_elevation, density, concentration] for varname, value in zip(varnames, values): self._repeat_stress(varname, value, use_cftime)