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:

BiogenicFactors

name

Name of the catchment (default “n/a”).

Type:

str

Raises:
__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