Catchment Model
Catchment-related processes.
This module provides functionalities for calculating various catchment-related metrics, including phosphorus and nitrogen loads, using different methodologies.
- reemission.catchment.INI_FILE
Path to the configuration file.
- Type:
str
- reemission.catchment.TABLES
Path to the parameters directory.
- Type:
str
- reemission.catchment.tn_coeff_table
TN coefficient table loaded from YAML.
- Type:
dict
- reemission.catchment.tp_coeff_table
TP coefficient table loaded from YAML.
- Type:
dict
- reemission.catchment.p_loads_pop
Phosphorus loads population table loaded from YAML.
- Type:
dict
- reemission.catchment.p_exports
Phosphorus exports table loaded from YAML.
- Type:
dict
- reemission.catchment.config
Loaded configuration settings.
- Type:
configparser.ConfigParser
- reemission.catchment.internals_config
Internal variables configuration loaded from YAML.
- Type:
dict
- reemission.catchment.EPS
Margin of error for the sum of land use fractions.
- Type:
float
- class reemission.catchment.Catchment(area: float, riv_length: float, runoff: float, population: int, slope: float, precip: float, etransp: float, soil_wetness: float, mean_olsen: float, area_fractions: List[float], biogenic_factors: BiogenicFactors, name: str = 'n/a')[source]
Bases:
object
Representation of a generic catchment area.
- area
Catchment area in km\(^2\).
- Type:
float
- riv_length
River length before impoundment in km.
- Type:
float
- runoff
Mean annual runoff in mm/year.
- Type:
float
- population
Population in the catchment.
- Type:
int
- slope
Catchment mean slope in %.
- Type:
float
- precip
Mean annual precipitation in mm/year.
- Type:
float
- etransp
Mean annual evapotranspiration in mm/year.
- Type:
float
- soil_wetness
Soil wetness in mm over profile.
- Type:
float
- mean_olsen
Mean P content in soil in kg/ha.
- Type:
float
- area_fractions
List of fractions of land representing different land uses.
- Type:
List[float]
- biogenic_factors
BiogenicFactors object with categorical descriptors used in the determination of the trophic status of the reservoir.
- Type:
- name
Name of the catchment (default “n/a”).
- Type:
str
- Raises:
WrongAreaFractionsException – If number of area fractions in the list is not equal to the number of land uses.
WrongSumOfAreasException – If area fractions do not sum to 1 ± accuracy coefficient EPS.
- __post_init__() None [source]
Validates the provided list of land use fractions.
Note
If False, set area_fractions to None.
- area: float
- area_fractions: List[float]
- property area_ha: float
Converts area from km\(^2\) to hectares.
- Returns:
Area in hectares.
- Return type:
float
- biogenic_factors: BiogenicFactors
- property discharge: float
Calculates mean annual discharge.
Note
mean annual discharge in m\(^3\)/year is calculated from runoff in mm/year and area in km\(^2\)
- Returns:
Mean annual discharge in m\(^3\)/year.
- Return type:
float
- property discharge_cumecs: float
Returns mean annual discharge in cubic meters per second.
- Returns:
Mean annual discharge in m\(^3\)/s.
- Return type:
float
- etransp: float
- classmethod from_dict(parameters: dict, **kwargs) CatchmentType [source]
Initializes the class from a dictionary. Skips keys that are not featured as class’s attributes.
- Parameters:
cls (Type[CatchmentType]) – The class type.
parameters (dict) – The dictionary of parameters.
**kwargs – Additional keyword arguments.
- Returns:
An instance of the Catchment class.
- Return type:
CatchmentType
- inflow_n_conc() float [source]
Calculates median influent total nitrogen concentration.
Attention
Contrary to Phosphorus, no other method than McDowell is available.
- Returns:
Median influent total nitrogen concentration in micrograms/L.
- Return type:
float
- inflow_p_conc(method: str) float [source]
Calculates median influent total phosphorus concentration.
- Parameters:
method (str) – Method to use for calculation (“g-res” or “mcdowell”).
- Returns:
Median influent total phosphorus concentration in micrograms/L.
- Return type:
float
- inflow_p_conc_gres() float [source]
Calculates influent phosphorus concentration to the reservoir following the G-Res approach.
- Returns:
Influent phosphorus concentration in micrograms/L.
- Return type:
float
- inflow_p_conc_mcdowell() float [source]
Calculates influent phosphorus concentration to the reservoir using McDowell2020 regression model.
- Returns:
Influent phosphorus concentration in \(\mu\)g/L.
- Return type:
float
- landuse_area(landuse_fraction: float) float [source]
Calculates land use area from catchment area and land use fraction.
- Parameters:
landuse_fraction (float) – Fraction of land use.
- Returns:
Land use area in km\(^2\).
- Return type:
float
- landuse_area_ha(landuse_fraction: float) float [source]
Calculates land use area in hectares from catchment area and land use fraction.
- Parameters:
landuse_fraction (float) – Fraction of land use.
- Returns:
Land use area in hectares.
- Return type:
float
- mean_olsen: float
- name: str = 'n/a'
- nitrogen_load() float [source]
Calculates total nitrogen load entering the reservoir with catchment runoff.
- Returns:
Total nitrogen load in kgN/year.
- Return type:
float
- p_human_input_gres() float [source]
Calculates phosphorus load/input from human activity and level of wastewater treatment.
Note
Follows the methodology applied in G-Res
- Returns:
Phosphorus load in kgP/year.
- Return type:
float
- p_input_gres() float [source]
Calculates annual input of phosphorus from catchment to the reservoir.
Note
Follows the G-Res approach.
- Returns:
Annual phosphorus input in kgP/year.
- Return type:
float
- p_input_mcdowell() float [source]
Calculates annual input of phosphorus from catchment to the reservoir using McDowell regression.
- Returns:
Annual phosphorus input in kgP/year.
- Return type:
float
- p_land_input_gres() float [source]
Calculates phosphorus load/input from land in the catchment.
Note
Considers differences in P emissions across different landuse types Follows the methodology applied in G-Res
- Returns:
Phosphorus load in kgP/year.
- Return type:
float
- phosphorus_load(method: str) float [source]
Calculates total phosphorus load entering the reservoir with catchment runoff.
- Parameters:
method (str) – P export calculation method: “g-res” or “mcdowell”.
- Returns:
Total phosphorus load in kgP/year.
- Return type:
float
- population: int
- property population_density: float
Calculates the population density.
Note
Population density is derived from catchment population and catchment area. [capita/km\(^2\)]. From Eq. A.25. in Praire2021.
- Returns:
Population density in capita/km\(^2\).
- Return type:
float
- precip: float
- riv_length: float
- river_area_before_impoundment(river_width: float | None = None) float [source]
Calculates the area taken up by the river in the impounded area prior to impoundment.
- Parameters:
river_width (Optional[float]) – River width in meters. If None, a default allometric formula is used.
Formula:
\[\begin{equation} A_{pre} = 5.9 \, 10^{-6} \, L_{river} \, A_{catchment}^{0.32} \end{equation}\]- where:
\(A_{pre}\) : pre-inundation area, [km\(^2\)]
\(A_{catchment}\) : catchment area, [km\(^2\)]
\(L_{river}\) : lentgh of the river prior to impoundment, [km]
- Returns:
River area in km\(^2\).
- Return type:
float
- runoff: float
- slope: float
- soil_wetness: float