EasyLake

This is auto-generated documentation based on the model code in models/easylake_simplycnp_model.txt . Since the modules can be dynamically loaded with different arguments, this documentation does not necessarily reflect all use cases of the modules.

See the note on notation.

The file was generated at 2024-05-29 12:40:58.


EasyLake

Version: 0.1.0

File: modules/easylake.txt

Description

EasyLake is a simple lake model for use along with catchment models. It simulates residence time in the lake in an upper and lower compartment, and it has separate modules for nutrient retention and contaminants.

The physical part of the model simulates water balance and temperature.

The lake can also be equipped with an ice module (defined in the AirSea module).

The internal heat distribution is inspired by (but not as complex as) the FLake model.

We assume that the hypsograph of the lake follows a shape so that

\[A(z) = A_0 \left(\frac{z}{z_{max}}\right)^{\theta+1}\]

where \(A(z)\) is the area of the horizontal cross-section of the lake at level \(z\) measuring up from the maximal depth \(z_{max}\), \(A_0\) is the surface area at the zero level of the outlet, and \(\theta\) is a user-defined parameter.

We also assume that the discharge is linearly proportional to the water level at the outlet.

The lake is partitioned into an epilimnion and a hypolimnion. The epilimnion is assumed to have a temperature profile that does not depend on the depth. In the hypolimnion, the temperature profile follows

\[T(z) = (T_e - T_b)\left(\frac{z}{z_{max}}\right)^2 + T_b,\; z < z_e\]

Where \(T_e\) is current epilimnion temperature and \(T_b\) is bottom temperature (user-defined constant parameter), and \(z_e\) is epilimnion thickness. The total heat of the lake is then proportional to

\[\int_0^{z_{max}} A(z)T(z)\mathrm{d}z\]

which has an exact solution, which one can back-solve for \(T_e\) if the total heat of the lake is known.

The total heat is computed as an ordinary differential equation, and depends mostly on surface heat exchange (computed by the AirSea module).

The epilimnion is set to have a dynamic thickness. This is not simulated, but is instead determined by user-defined empirical parameters. The epilimnion and hypolimnion mix when the difference between epilimnion temperature and mean hypolimnion temperature is less than 0.4°C (typically in spring and autumn).

The thickness is set to have a given winter value, then is set to an initial thickness after spring mixing, after which it increases linearly.

Authors: François Clayer, Magnus D. Norling

External symbols

Name Symbol Type
Epilimnion epi compartment
Hypolimnion hyp compartment
Water water quantity
Heat energy heat quantity
Temperature temp property
Thickness th property
Ice formation temperature freeze_temp property
Surface area area property
  epi_target loc

Module functions

shape_cross_section_A(A_0 : m², z_0 : m, z : m, theta) =

\[\mathrm{A\_0}\cdot \left(\frac{\mathrm{z}}{\mathrm{z\_0}}\right)^{\mathrm{theta}+1}\]

shape_tip_V(A_0 : m², z_0 : m, z : m, theta) =

\[\mathrm{A\_0}\cdot \mathrm{z}\cdot \frac{\left(\frac{\mathrm{z}}{\mathrm{z\_0}}\right)^{\mathrm{theta}+1}}{\mathrm{theta}+2}\]

shape_section_V(A_0 : m², z_0 : m, z1 : m, z2 : m, theta) =

\[\mathrm{shape\_tip\_V}\left(\mathrm{A\_0},\, \mathrm{z\_0},\, \mathrm{z1},\, \mathrm{theta}\right)-\mathrm{shape\_tip\_V}\left(\mathrm{A\_0},\, \mathrm{z\_0},\, \mathrm{z2},\, \mathrm{theta}\right)\]

shape_tip_z(A_0 : m², z_0 : m, V : m³, theta) =

\[\mathrm{zz\_0} = \left(\mathrm{z\_0}\Rightarrow 1\right) \\ \mathrm{f} = \left(\mathrm{V}\cdot \left(\mathrm{theta}+2\right)\cdot \frac{\mathrm{zz\_0}^{\mathrm{theta}+1}}{\mathrm{A\_0}}\Rightarrow 1\right) \\ \left(\mathrm{f}^{\frac{1}{\mathrm{theta}+2}}\Rightarrow \mathrm{m}\,\right)\]

hypo_temperature_integral(A_0 : m², T_e : °C, T_b : °C, z_e : m, z_0 : m, theta) =

\[\left(2\cdot \mathrm{T\_b}+\left(\mathrm{theta}+2\right)\cdot \mathrm{T\_e}\right)\cdot \mathrm{A\_0}\cdot \frac{\mathrm{z\_e}^{3}\cdot \left(\frac{\mathrm{z\_e}}{\mathrm{z\_0}}\right)^{\mathrm{theta}+1}}{\left(\mathrm{theta}^{2}+6\cdot \mathrm{theta}+8\right)\cdot \mathrm{z\_e}^{2}}\]

Parameters

Name Symbol Unit Description
Lake physical     Distributes like: epi
Lake surface area A_surf  
Water level at which outflow is 0 z_outflow m  
Winter epilimnion thickness th_epi_w m  
Spring epilimnion thickness th_epi_s m  
Lake bathymetry factor theta   The cross-section area of the lake at level z is A_0*(z/z_0)^theta
Epilimnion thickening rate dz_epi m day⁻¹ How fast the thickness of the epilimnion changes during summer
Rating function linear component rate_l m² s⁻¹  
Initial epilimnion temperature t_epi °C  
Bottom temperature t_bot °C  

State variables

Ice formation temperature

Location: epi.freeze_temp

Unit: °C

Value:

\[0 \mathrm{°C}\,\]

Epilimnion volume

Location: epi.water

Unit: m³

Initial value:

\[\mathrm{shape\_section\_V}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow}-\mathrm{th},\, \mathrm{theta}\right)\]

Hypolimnion volume

Location: hyp.water

Unit: m³

Initial value:

\[\mathrm{shape\_tip\_V}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow}-\mathrm{epi}.\mathrm{th},\, \mathrm{theta}\right)\]

Epilimnion thickness (relative to zero outflow)

Location: epi.th

Unit: m

Value:

\[\mathrm{doy} = \mathrm{time}.\mathrm{day\_of\_year} \\ \mathrm{spring\_mixing} = \mathrm{last}\left(\mathrm{ind}\right)\;\text{and}\;\left(\mathrm{last}\left(\mathrm{water}.\mathrm{temp}\right)>\mathrm{last}\left(\mathrm{hyp}.\mathrm{water}.\mathrm{temp}\right)\;\text{or}\;\mathrm{doy}<150 \mathrm{day}\,\right) \\ \mathrm{is\_winter} = \mathrm{last}\left(\mathrm{water}.\mathrm{temp}\right)<\mathrm{t\_bot}\;\text{and}\;\left(\mathrm{doy}<90 \mathrm{day}\,\;\text{or}\;\mathrm{doy}>275 \mathrm{day}\,\right) \\ \begin{cases}\mathrm{th\_epi\_s} & \text{if}\;\mathrm{spring\_mixing} \\ \mathrm{th\_epi\_w} & \text{if}\;\mathrm{is\_winter} \\ \mathrm{last}\left(\mathrm{th}\right)+\left(\mathrm{dz\_epi}\cdot \mathrm{time}.\mathrm{step\_length\_in\_seconds}\rightarrow \mathrm{m}\,\right) & \text{otherwise}\end{cases}\]

Initial value:

\[\mathrm{th\_epi\_w}\]

Lake water level

Location: epi.level

Unit: m

Value:

\[\mathrm{shape\_tip\_z}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{epi}.\mathrm{water}+\mathrm{hyp}.\mathrm{water},\, \mathrm{theta}\right)-\mathrm{z\_outflow}\]

Epilimnion surface area

Location: epi.area

Unit: m²

Value:

\[\mathrm{shape\_cross\_section\_A}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{level}+\mathrm{z\_outflow},\, \mathrm{theta}\right)\]

Hypolimnion surface area

Location: hyp.area

Unit: m²

Value:

\[\mathrm{shape\_cross\_section\_A}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow}-\mathrm{epi}.\mathrm{th},\, \mathrm{theta}\right)\]

Heat energy

Location: epi.water.heat

Unit: J

Initial value:

\[\href{stdlib.html#water-utils}{\mathrm{water\_temp\_to\_heat}}\left(\mathrm{water},\, \mathrm{t\_epi}\right)\]

Heat energy

Location: hyp.water.heat

Unit: J

Initial value:

\[\mathrm{t\_hyp} = \frac{\mathrm{hypo\_temperature\_integral}\left(\mathrm{A\_surf},\, \mathrm{t\_epi},\, \mathrm{t\_bot},\, \mathrm{z\_outflow}-\mathrm{epi}.\mathrm{th},\, \mathrm{z\_outflow},\, \mathrm{theta}\right)}{\mathrm{water}} \\ \href{stdlib.html#water-utils}{\mathrm{water\_temp\_to\_heat}}\left(\mathrm{water},\, \mathrm{t\_hyp}\right)\]

Epilimnion temperature

Location: epi.water.temp

Unit: °C

Value:

\[\href{stdlib.html#water-utils}{\mathrm{water\_heat\_to\_temp}}\left(\mathrm{water},\, \mathrm{water}.\mathrm{heat}\right)\]

Initial value:

\[\mathrm{t\_epi}\]

Hypolimnion temperature (mean)

Location: hyp.water.temp

Unit: °C

Value:

\[\href{stdlib.html#water-utils}{\mathrm{water\_heat\_to\_temp}}\left(\mathrm{water},\, \mathrm{water}.\mathrm{heat}\right)\]

Mixing indicator

Location: epi.ind

Unit:

Value:

\[\left|\mathrm{water}.\mathrm{temp}-\mathrm{hyp}.\mathrm{water}.\mathrm{temp}\right|<0.4 \mathrm{°C}\,\]

Fluxes

Metalimnion movement

Source: epi.water

Target: hyp.water

Unit: m³ day⁻¹

Value:

\[\mathrm{hyp\_vol\_last} = \mathrm{shape\_tip\_V}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow}-\mathrm{last}\left(\mathrm{th}\right),\, \mathrm{theta}\right) \\ \mathrm{hyp\_vol\_now} = \mathrm{shape\_tip\_V}\left(\mathrm{A\_surf},\, \mathrm{z\_outflow},\, \mathrm{z\_outflow}-\mathrm{th},\, \mathrm{theta}\right) \\ \left(\frac{\mathrm{hyp\_vol\_now}-\mathrm{hyp\_vol\_last}}{\mathrm{time}.\mathrm{step\_length\_in\_seconds}}\rightarrow \mathrm{m}^{3}\,\mathrm{day}^{-1}\,\right)\]

Lake outflow flux

Source: epi.water

Target: epi_target

Unit: m³ s⁻¹

Value:

\[\mathrm{max}\left(0,\, \mathrm{rate\_l}\cdot \mathrm{level}\right)\]

Layer heat transfer

Source: epi.water.heat

Target: hyp.water.heat

Unit: J day⁻¹

Value:

\[\mathrm{V} = \mathrm{water}+\mathrm{hyp}.\mathrm{water} \\ \mathrm{lake\_t} = \href{stdlib.html#water-utils}{\mathrm{water\_heat\_to\_temp}}\left(\mathrm{V},\, \mathrm{heat}+\mathrm{hyp}.\mathrm{water}.\mathrm{heat}\right) \\ \mathrm{hypo\_temp} = \mathrm{hypo\_temperature\_integral}\left(\mathrm{A\_surf},\, \mathrm{temp},\, \mathrm{t\_bot},\, \mathrm{z\_outflow}-\mathrm{epi}.\mathrm{th},\, \mathrm{z\_outflow},\, \mathrm{theta}\right) \\ \mathrm{T\_e\_should\_be} = \frac{\mathrm{lake\_t}\cdot \mathrm{V}-\mathrm{hypo\_temp}}{\mathrm{water}} \\ \mathrm{epi\_heat\_should\_be} = \href{stdlib.html#water-utils}{\mathrm{water\_temp\_to\_heat}}\left(\mathrm{water},\, \mathrm{T\_e\_should\_be}\right) \\ 5 \mathrm{day}^{-1}\,\cdot \left(\mathrm{heat}-\mathrm{epi\_heat\_should\_be}\right)\]

Mixing

Source: epi.water

Target: hyp.water

Unit: m³ day⁻¹

This is a mixing flux (affects dissolved quantities only)

Value:

\[\mathrm{A\_surf}\cdot \mathrm{epi}.\mathrm{th}\cdot \mathrm{epi}.\mathrm{ind}\cdot 0.1 \mathrm{day}^{-1}\,\]

AirSea Lake

Version: 0.1.1

File: modules/airsea.txt

Description

Air-sea/lake heat fluxes are based off of Kondo 1975

The implementation used here is influenced by the implementation in GOTM.

The ice module is influenced by the ice module in MyLake, and uses Stefan’s law for ice accumulation.

Air-Sea bulk transfer coefficients in diabatic conditions, Junsei Kondo, 1975, Boundary-Layer Meteorology 9(1), 91-112 https://doi.org/10.1007/BF00232256

MyLake—A multi-year lake simulation model code suitable for uncertainty and sensitivity analysis simulations, Tuomo M. Saloranta and Tom Andersen 2007, Ecological Modelling 207(1), 45-60, https://doi.org/10.1016/j.ecolmodel.2007.03.018

Authors: Magnus D. Norling

External symbols

Name Symbol Type
Atmosphere air compartment
Cosine of the solar zenith angle cos_z property
Epilimnion surf compartment
Actual specific humidity a_hum property
Density rho property
Ice ice quantity
Heat energy heat quantity
Temperature temp property
Wind speed wind property
Precipitation precip property
Global radiation g_rad property
Pressure pressure property
Downwelling longwave radiation lwd property
Shortwave radiation sw property
Attenuation coefficient attn property
Ice formation temperature freeze_temp property
Ice indicator indicator property
Evaporation evap property
  A_surf loc
  top_water loc
  top_water_heat_sw loc

Constants

Name Symbol Unit Value
Ice density rho_ice kg m⁻³ 917
Latent heat of freezing l_freeze J kg⁻¹ 333500
Ice heat conduction coefficient lambda_ice W m⁻¹ K⁻¹ 2.1
Water albedo water_alb   0.045

Parameters

Name Symbol Unit Description
Ice     Distributes like: epi
Initial ice thickness init_ice m  
Ice albedo ice_alb    
Ice attenuation coefficient ice_att_c m⁻¹  
Frazil threshold th_frazil m  

State variables

Wind speed

Location: air.wind

Unit: m s⁻¹

This series is externally defined. It may be an input series.

Stability

Location: surf.stab

Unit:

Value:

\[\href{stdlib.html#air-sea}{\mathrm{surface\_stability}}\left(\mathrm{air}.\mathrm{wind},\, \mathrm{top\_water}.\mathrm{temp},\, \mathrm{air}.\mathrm{temp}\right)\]

Transfer coefficient for latent heat flux

Location: surf.ced

Unit:

Value:

\[\href{stdlib.html#air-sea}{\mathrm{tc\_latent\_heat}}\left(\mathrm{air}.\mathrm{wind},\, \mathrm{stab}\right)\]

Transfer coefficent for sensible heat flux

Location: surf.chd

Unit:

Value:

\[\href{stdlib.html#air-sea}{\mathrm{tc\_sensible\_heat}}\left(\mathrm{air}.\mathrm{wind},\, \mathrm{stab}\right)\]

Saturation specific humidity

Location: surf.s_hum

Unit:

Value:

\[\mathrm{svap} = \href{stdlib.html#meteorology}{\mathrm{saturation\_vapor\_pressure}}\left(\mathrm{top\_water}.\mathrm{temp}\right) \\ \href{stdlib.html#meteorology}{\mathrm{specific\_humidity\_from\_pressure}}\left(\mathrm{air}.\mathrm{pressure},\, \mathrm{svap}\right)\]

Emitted longwave radiation

Location: surf.lwu

Unit: W m⁻²

Value:

\[\mathrm{emissivity} = 0.98 \\ \mathrm{emissivity}\cdot \href{stdlib.html#thermodynamics}{\mathrm{black\_body\_radiation}}\left(\left(\mathrm{top\_water}.\mathrm{temp}\rightarrow \mathrm{K}\,\right)\right)\]

Albedo

Location: surf.albedo

Unit:

Value:

\[\begin{cases}\mathrm{ice\_alb} & \text{if}\;\mathrm{ice}.\mathrm{indicator} \\ \mathrm{water\_alb} & \text{otherwise}\end{cases}\]

Shortwave radiation

Location: surf.sw

Unit: W m⁻²

Value:

\[\left(1-\mathrm{albedo}\right)\cdot \left(1-\mathrm{ice}.\mathrm{attn}\right)\cdot \mathrm{air}.\mathrm{g\_rad}\]

Evaporation

Location: surf.evap

Unit: mm day⁻¹

Value:

\[\mathrm{rho\_ref} = 1025 \mathrm{kg}\,\mathrm{m}^{-3}\, \\ \left(\;\text{not}\;\mathrm{surf}.\mathrm{ice}.\mathrm{indicator}\cdot \frac{\mathrm{air}.\mathrm{rho}}{\mathrm{rho\_ref}}\cdot \mathrm{chd}\cdot \mathrm{air}.\mathrm{wind}\cdot \left(\mathrm{s\_hum}-\mathrm{air}.\mathrm{a\_hum}\right)\rightarrow \mathrm{mm}\,\mathrm{day}^{-1}\,\right)\]

Ice thickness

Location: surf.ice

Unit: m

Initial value:

\[\mathrm{init\_ice}\]

Freeze energy

Location: surf.ice.energy

Unit: W m⁻²

Value:

\[\mathrm{z\_surf} = 1 \mathrm{m}\, \\ \mathrm{K\_ice} = 200 \mathrm{W}\,\mathrm{m}^{-3}\,\mathrm{°C}^{-1}\, \\ \mathrm{e} = \left(\mathrm{freeze\_temp}-\mathrm{top\_water}.\mathrm{temp}\right)\cdot \mathrm{z\_surf}\cdot \mathrm{K\_ice} \\ \begin{cases}0 & \text{if}\;\mathrm{ice}<10^{-6} \mathrm{m}\,\;\text{and}\;\mathrm{e}<0 \\ \mathrm{e} & \text{otherwise}\end{cases}\]

Ice indicator

Location: surf.ice.indicator

Unit:

Value:

\[\mathrm{ice}>\mathrm{th\_frazil}\]

Attenuation coefficient

Location: surf.ice.attn

Unit:

Value:

\[\mathrm{cz} = \mathrm{max}\left(0.01,\, \href{stdlib.html#radiation}{\mathrm{refract}}\left(\mathrm{air}.\mathrm{cos\_z},\, \mathrm{refraction\_index\_ice}\right)\right) \\ \mathrm{th} = \frac{\mathrm{ice}}{\mathrm{cz}} \\ \begin{cases}0 & \text{if}\;\;\text{not}\;\mathrm{indicator} \\ 1-e^{-\mathrm{ice\_att\_c}\cdot \mathrm{th}} & \text{otherwise}\end{cases}\]

Ice surface temperature

Location: surf.ice.temp

Unit: °C

Value:

\[\mathrm{alpha} = \frac{1}{10 \mathrm{m}^{-1}\,\cdot \mathrm{ice}} \\ \begin{cases}\frac{\mathrm{alpha}\cdot \mathrm{freeze\_temp}+\mathrm{air}.\mathrm{temp}}{1+\mathrm{alpha}} & \text{if}\;\mathrm{indicator} \\ 0 & \text{otherwise}\end{cases}\]

Fluxes

Net shortwave

Source: out

Target: top_water_heat_sw

Unit: J day⁻¹

Value:

\[\left(\mathrm{A\_surf}\cdot \mathrm{surf}.\mathrm{sw}\rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Net longwave

Source: out

Target: top_water.heat

Unit: J day⁻¹

Value:

\[\mathrm{net\_rad} = \left(1-\mathrm{surf}.\mathrm{albedo}\right)\cdot \mathrm{air}.\mathrm{lwd}-\mathrm{surf}.\mathrm{lwu} \\ \left(\;\text{not}\;\mathrm{surf}.\mathrm{ice}.\mathrm{indicator}\cdot \mathrm{A\_surf}\cdot \mathrm{net\_rad}\rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Freeze heating

Source: out

Target: top_water.heat

Unit: J day⁻¹

Value:

\[\left(\mathrm{A\_surf}\cdot \mathrm{surf}.\mathrm{ice}.\mathrm{energy}\rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Latent heat flux

Source: out

Target: top_water.heat

Unit: J day⁻¹

Value:

\[\mathrm{l\_vap} = \href{stdlib.html#meteorology}{\mathrm{latent\_heat\_of\_vaporization}}\left(\mathrm{top\_water}.\mathrm{temp}\right) \\ \left(\;\text{not}\;\mathrm{surf}.\mathrm{ice}.\mathrm{indicator}\cdot \mathrm{A\_surf}\cdot \mathrm{surf}.\mathrm{ced}\cdot \mathrm{l\_vap}\cdot \mathrm{air}.\mathrm{rho}\cdot \mathrm{air}.\mathrm{wind}\cdot \left(\mathrm{air}.\mathrm{a\_hum}-\mathrm{surf}.\mathrm{s\_hum}\right)\rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Sensible heat flux

Source: out

Target: top_water.heat

Unit: J day⁻¹

Value:

\[\left(\;\text{not}\;\mathrm{surf}.\mathrm{ice}.\mathrm{indicator}\cdot \mathrm{A\_surf}\cdot \mathrm{surf}.\mathrm{chd}\cdot \mathrm{C\_air}\cdot \mathrm{air}.\mathrm{rho}\cdot \mathrm{air}.\mathrm{wind}\cdot \left(\left(\mathrm{air}.\mathrm{temp}\rightarrow \mathrm{K}\,\right)-\left(\mathrm{top\_water}.\mathrm{temp}\rightarrow \mathrm{K}\,\right)\right)\rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Evaporation

Source: top_water

Target: out

Unit: m³ day⁻¹

Value:

\[\left(\mathrm{surf}.\mathrm{evap}\cdot \mathrm{A\_surf}\rightarrow \mathrm{m}^{3}\,\mathrm{day}^{-1}\,\right)\]

Precipitation to surface

Source: out

Target: top_water

Unit: m³ day⁻¹

Value:

\[\left(\mathrm{air}.\mathrm{precip}\cdot \mathrm{A\_surf}\rightarrow \mathrm{m}^{3}\,\mathrm{day}^{-1}\,\right)\]

Precipitation heat

Source: out

Target: top_water.heat

Unit: J day⁻¹

Value:

\[\mathrm{precip\_t} = \mathrm{max}\left(0 \mathrm{°C}\,,\, \mathrm{air}.\mathrm{temp}\right) \\ \mathrm{V} = \left(\mathrm{A\_surf}\cdot \mathrm{air}.\mathrm{precip}\rightarrow \mathrm{m}^{3}\,\mathrm{day}^{-1}\,\right) \\ \left(\href{stdlib.html#water-utils}{\mathrm{water\_temp\_to\_heat}}\left(\left(\mathrm{V}\Rightarrow \mathrm{m}^{3}\,\right),\, \mathrm{precip\_t}\right)\Rightarrow \mathrm{J}\,\mathrm{day}^{-1}\,\right)\]

Ice change

Source: out

Target: surf.ice

Unit: m day⁻¹

Value:

\[\left(\frac{\mathrm{energy}+\begin{cases}\mathrm{lambda\_ice}\cdot \frac{\left(\mathrm{freeze\_temp}\rightarrow \mathrm{K}\,\right)-\left(\mathrm{temp}\rightarrow \mathrm{K}\,\right)}{\mathrm{ice}} & \text{if}\;\mathrm{temp}\leq \mathrm{freeze\_temp}\;\text{and}\;\mathrm{indicator} \\ -\left(1-\mathrm{albedo}\right)\cdot \mathrm{air}.\mathrm{g\_rad}\cdot \mathrm{attn} & \text{if}\;\mathrm{indicator} \\ 0 & \text{otherwise}\end{cases}}{\mathrm{rho\_ice}\cdot \mathrm{l\_freeze}}\rightarrow \mathrm{m}\,\mathrm{day}^{-1}\,\right)+\left(\begin{cases}\mathrm{air}.\mathrm{precip} & \text{if}\;\mathrm{indicator}\;\text{and}\;\mathrm{air}.\mathrm{temp}\leq \mathrm{freeze\_temp} \\ 0 & \text{otherwise}\end{cases}\rightarrow \mathrm{m}\,\mathrm{day}^{-1}\,\right)\]

EasyChem

Version: 0.0.5

File: modules/easychem.txt

Description

This is a simple lake biogeochemical model for CNP and O₂ made to fit with EasyLake.

More description to be written.

Many of the equations are inspired by Selma, but with simplifications.

Authors: François Clayer, Magnus D. Norling

External symbols

Name Symbol Type
Atmosphere air compartment
Total organic carbon toc property
Epilimnion epi compartment
Hypolimnion hyp compartment
Organic nitrogen on quantity
Water water quantity
Wind speed wind property
Temperature temp property
Organic carbon oc quantity
Phytoplankton phyt quantity
O₂ o2 quantity
Ice ice quantity
Inorganic nitrogen din quantity
Total nitrogen tn property
Inorganic phosphorous phos quantity
Organic phosphorous op quantity
Particles sed quantity
Precipitation precip property
Total dissolved phosphorous tdp property
Shortwave radiation sw property
Ice indicator indicator property
Total phosphorous tp property
Surface area area property

Constants

Name Symbol Unit Value
Fraction of PAR in SW radiation f_par   0.45
Phytoplankton increased death rate from anoxicity phyt_death_anox   10
Anoxicity threshold anox_threshold mg l⁻¹ 2

Parameters

Name Symbol Unit Description
Lake specific chemistry     Distributes like: epi
Initial O₂ saturation init_O2    
Initial lake DOC concentration init_c mg l⁻¹  
Initial lake DIN concentration init_in mg l⁻¹  
Initial lake DIP concentration init_ip mg l⁻¹  
Initial phytoplankton concentration init_phyt mg l⁻¹  
Direct lake DIN deposition din_dep kg ha⁻¹ year⁻¹  
Oxygen     Distributes like: epi
Piston velocity scaler for O₂ pvel_scaler    
Background sediment O₂ demand sod g m⁻² day⁻¹  
Microbes      
Respiration rate K_OM year⁻¹  
Respiration Q10 respQ10   Adjustment of rate with 10°C change in temperature
Half-saturation concentration O₂ Km_o2 mmol m⁻³  
P mineralization rel rate relrate_p    
N mineralization rel rate relrate_n    
Denitrification rate denit m⁻² year⁻¹  
Denitrification Q10 denitQ10   Adjustment of rate with 10°C change in temperature
Phytoplankton      
Chl-a of phyto at equilibrium phyt_eq_20 mg l⁻¹ Assuming 20°C and no nutrient or light limitations.
Q10 of Phyto equilibrium phyt_q10    
Phytoplankton turnover rate phyt_turnover day⁻¹  
Excretion rate excr day⁻¹  
Optimal PAR intensity iopt W m⁻²  
Half-saturation for nutrient uptake halfsat mmol m⁻³  
Molar C/N ratio in Phytoplankton phyt_cn    
Molar C/P ratio in Phytoplankton phyt_cp    
Chl-a fraction chl_a_f % How large a fraction of the phytoplankton mass is chlorophyll a
Lake specific phytoplankton     Distributes like: epi
Phytoplankton amenability phyt_a   Adjustment factor to account for shallow lakes being better for plankton, after taking nutrients and light into consideration
Lake specific denitrification denit_a    

State variables

Epilimnion O₂

Location: epi.water.o2

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\left(\href{stdlib.html#sea-oxygen}{\mathrm{o2\_saturation}}\left(\mathrm{temp},\, 0\right)\cdot \mathrm{init\_O2}\cdot \mathrm{o2\_mol\_mass}\rightarrow \mathrm{kg}\,\right)\]

Hypolimnion O₂

Location: hyp.water.o2

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\left(\href{stdlib.html#sea-oxygen}{\mathrm{o2\_saturation}}\left(\mathrm{temp},\, 0\right)\cdot \mathrm{init\_O2}\cdot \mathrm{o2\_mol\_mass}\rightarrow \mathrm{kg}\,\right)\]

Epilimnion DOC

Location: epi.water.oc

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_c}\]

Hypolimnion DOC

Location: hyp.water.oc

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_c}\]

Epilimnion POC

Location: epi.water.sed.oc

Unit: kg

Hypolimnion POC

Location: hyp.water.sed.oc

Unit: kg

Epilimnion DIN

Location: epi.water.din

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_in}\]

Hypolimnion DIN

Location: hyp.water.din

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_in}\]

Epilimnion DON

Location: epi.water.on

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\frac{\mathrm{init\_c}}{\href{stdlib.html#chemistry}{\mathrm{cn\_molar\_to\_mass\_ratio}}\left(\mathrm{om\_cn}\right)}\]

Hypolimnion DON

Location: hyp.water.on

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\frac{\mathrm{init\_c}}{\href{stdlib.html#chemistry}{\mathrm{cn\_molar\_to\_mass\_ratio}}\left(\mathrm{om\_cn}\right)}\]

Epilimnion PON

Location: epi.water.sed.on

Unit: kg

Hypolimnion PON

Location: hyp.water.sed.on

Unit: kg

Epilimnion DIP

Location: epi.water.phos

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_ip}\]

Hypolimnion DIP

Location: hyp.water.phos

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_ip}\]

Epilimnion DOP

Location: epi.water.op

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\frac{\mathrm{init\_c}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{om\_cp}\right)}\]

Hypolimnion DOP

Location: hyp.water.op

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\frac{\mathrm{init\_c}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{om\_cp}\right)}\]

Epilimnion PIP

Location: epi.water.sed.phos

Unit: kg

Hypolimnion PIP

Location: hyp.water.sed.phos

Unit: kg

Epilimnion POP

Location: epi.water.sed.op

Unit: kg

Hypolimnion POP

Location: hyp.water.sed.op

Unit: kg

Epilimnion Phytoplankton

Location: epi.water.phyt

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_phyt}\]

Hypolimnion Phytoplankton

Location: hyp.water.phyt

Unit: kg

Conc. unit: mg l⁻¹

Initial value (concentration):

\[\mathrm{init\_phyt}\]

O₂ piston velocity

Location: epi.water.p_vel

Unit: cm hr⁻¹

Value:

\[\mathrm{pvel\_scaler}\cdot \href{stdlib.html#sea-oxygen}{\mathrm{o2\_piston\_velocity}}\left(\mathrm{air}.\mathrm{wind},\, \mathrm{temp}\right)\]

O₂ saturation concentration

Location: epi.water.o2sat

Unit: mg l⁻¹

Value:

\[\left(\href{stdlib.html#sea-oxygen}{\mathrm{o2\_saturation}}\left(\mathrm{temp},\, 0\right)\cdot \mathrm{o2\_mol\_mass}\rightarrow \mathrm{mg}\,\mathrm{l}^{-1}\,\right)\]

Sediment O₂ consumption rate

Location: epi.o2rate

Unit: kg m⁻² day⁻¹

Value:

\[\mathrm{q10} = 2 \\ \mathrm{rate20} = \left(\mathrm{sod}\cdot \mathrm{min}\left(1,\, 1-\frac{0.05 \mathrm{mg}\,\mathrm{l}^{-1}\,-\mathrm{conc}\left(\mathrm{water}.\mathrm{o2}\right)}{0.05 \mathrm{mg}\,\mathrm{l}^{-1}\,}\right)\rightarrow \mathrm{kg}\,\mathrm{m}^{-2}\,\mathrm{day}^{-1}\,\right) \\ \href{stdlib.html#response}{\mathrm{q10\_adjust}}\left(\mathrm{rate20},\, 20 \mathrm{°C}\,,\, \mathrm{hyp}.\mathrm{water}.\mathrm{temp},\, \mathrm{q10}\right)\]

Bacterial mineralization (epi)

Location: epi.water.resp

Unit: day⁻¹

This series is externally defined. It may be an input series.

Bacterial mineralization (hypo)

Location: hyp.water.resp

Unit: day⁻¹

This series is externally defined. It may be an input series.

Chlorophyll-a

Location: epi.water.chl_a

Unit: mg l⁻¹

Value:

\[\left(\mathrm{conc}\left(\mathrm{phyt}\right)\cdot \mathrm{chl\_a\_f}\rightarrow \mathrm{mg}\,\mathrm{l}^{-1}\,\right)\]

Light limitation

Location: epi.water.phyt.light_lim

Unit:

Value:

\[\mathrm{par\_sw} = \mathrm{sw}\cdot \left(1-\mathrm{f\_par}\right) \\ \mathrm{f} = \frac{\mathrm{par\_sw}}{\mathrm{max}\left(0.5\cdot \mathrm{par\_sw},\, \mathrm{iopt}\right)} \\ \mathrm{f}\cdot e^{1-\mathrm{f}}\]

Nitrogen limitation

Location: epi.water.phyt.N_lim

Unit:

Value:

\[\mathrm{cmol} = \left(\frac{\mathrm{conc}\left(\mathrm{water}.\mathrm{din}\right)}{\mathrm{n\_mol\_mass}}\rightarrow \mathrm{mmol}\,\mathrm{m}^{-3}\,\right) \\ \frac{\mathrm{cmol}^{2}}{\left(\frac{\mathrm{halfsat}}{\mathrm{phyt\_cn}}\right)^{2}+\mathrm{cmol}^{2}}\]

Phosphorus limitation

Location: epi.water.phyt.P_lim

Unit:

Value:

\[\mathrm{cmol} = \left(\frac{\mathrm{conc}\left(\mathrm{water}.\mathrm{phos}\right)}{\mathrm{p\_mol\_mass}}\rightarrow \mathrm{mmol}\,\mathrm{m}^{-3}\,\right) \\ \frac{\mathrm{cmol}^{2}}{\left(\frac{\mathrm{halfsat}}{\mathrm{phyt\_cp}}\right)^{2}+\mathrm{cmol}^{2}}\]

Phytoplankton equilibrium concentration

Location: epi.water.phyt.equi

Unit: mg l⁻¹

Value:

\[\mathrm{phyt\_eq} = \frac{\href{stdlib.html#response}{\mathrm{q10\_adjust}}\left(\mathrm{phyt\_eq\_20},\, 20 \mathrm{°C}\,,\, \mathrm{temp},\, \mathrm{phyt\_q10}\right)}{\left(\mathrm{chl\_a\_f}\rightarrow 1\right)} \\ \mathrm{phyt\_eq}\cdot \mathrm{phyt\_a}\cdot \mathrm{min}\left(\mathrm{light\_lim},\, \mathrm{min}\left(\mathrm{N\_lim},\, \mathrm{P\_lim}\right)\right)\]

Photosynthetic C fixation

Location: epi.water.phyt.fix

Unit: kg day⁻¹

Value:

\[\left(\mathrm{phyt\_turnover}\cdot \mathrm{epi}.\mathrm{water}.\mathrm{phyt}.\mathrm{equi}\cdot \mathrm{water}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

Phytoplankton death rate (epi)

Location: epi.water.phyt.death

Unit: kg day⁻¹

This series is externally defined. It may be an input series.

Phytoplankton death rate (hyp)

Location: hyp.water.phyt.death

Unit: kg day⁻¹

This series is externally defined. It may be an input series.

Epilimnion TDP

Location: epi.water.tdp

Unit: mg l⁻¹

Value:

\[\mathrm{conc}\left(\mathrm{phos}\right)+\mathrm{conc}\left(\mathrm{op}\right)\]

Epilimnion TP

Location: epi.water.tp

Unit: mg l⁻¹

Value:

\[\mathrm{tdp}+\mathrm{conc}\left(\mathrm{sed}\right)\cdot \left(\mathrm{conc}\left(\mathrm{sed}.\mathrm{phos}\right)+\mathrm{conc}\left(\mathrm{sed}.\mathrm{op}\right)\right)\]

Epilimnion TN

Location: epi.water.tn

Unit: mg l⁻¹

Value:

\[\mathrm{conc}\left(\mathrm{on}\right)+\mathrm{conc}\left(\mathrm{din}\right)+\mathrm{conc}\left(\mathrm{sed}\right)\cdot \mathrm{conc}\left(\mathrm{sed}.\mathrm{on}\right)\]

Epilimnion TOC

Location: epi.water.toc

Unit: mg l⁻¹

Value:

\[\mathrm{conc}\left(\mathrm{oc}\right)+\mathrm{conc}\left(\mathrm{sed}.\mathrm{oc}\right)\cdot \mathrm{conc}\left(\mathrm{sed}\right)+\mathrm{conc}\left(\mathrm{phyt}\right)\]

Epilimnion STS

Location: epi.water.sts

Unit: mg l⁻¹

Value:

\[\mathrm{conc}\left(\mathrm{epi}.\mathrm{water}.\mathrm{sed}\right)+\mathrm{conc}\left(\mathrm{phyt}\right)\]

Fluxes

Precipitation O₂

Source: out

Target: epi.water.o2

Unit: kg day⁻¹

Value:

\[\mathrm{cnc} = \left(0.9\cdot \href{stdlib.html#sea-oxygen}{\mathrm{o2\_saturation}}\left(\mathrm{air}.\mathrm{temp},\, 0\right)\cdot \mathrm{o2\_mol\_mass}\rightarrow \mathrm{mg}\,\mathrm{l}^{-1}\,\right) \\ \left(\mathrm{air}.\mathrm{precip}\cdot \mathrm{area}\cdot \mathrm{cnc}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

O₂ gas exchange at surface

Source: out

Target: epi.water.o2

Unit: kg day⁻¹

Value:

\[\left(\;\text{not}\;\mathrm{ice}.\mathrm{indicator}\cdot \mathrm{p\_vel}\cdot \left(\mathrm{o2sat}-\mathrm{conc}\left(\mathrm{o2}\right)\right)\cdot \mathrm{area}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

O₂ sediment consumption (epi)

Source: epi.water.o2

Target: out

Unit: kg day⁻¹

Value:

\[\left(\mathrm{epi}.\mathrm{o2rate}\cdot \left(\mathrm{area}-\mathrm{hyp}.\mathrm{area}\right)\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

Lake N deposition

Source: out

Target: epi.water.din

Unit: kg day⁻¹

Value:

\[\left(\mathrm{area}\cdot \frac{\mathrm{din\_dep}}{365.25 \mathrm{day}\,\mathrm{year}^{-1}\,}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

DOC bacterial mineralization (hypo)

Source: hyp.water.oc

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{oc}\]

DOC bacterial mineralization (epi)

Source: epi.water.oc

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{oc}\]

O₂ bacterial consumption (hypo)

Source: hyp.water.o2

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{oc}\cdot \frac{\mathrm{o2\_mol\_mass}}{\mathrm{c\_mol\_mass}}\]

O₂ bacterial consumption (epi)

Source: epi.water.o2

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{oc}\cdot \frac{\mathrm{o2\_mol\_mass}}{\mathrm{c\_mol\_mass}}\]

DOP mineralization (epi)

Source: epi.water.op

Target: epi.water.phos

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{op}\cdot \mathrm{relrate\_p}\]

DOP mineralization (hyp)

Source: hyp.water.op

Target: epi.water.phos

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{op}\cdot \mathrm{relrate\_p}\]

POP mineralization (epi)

Source: epi.water.sed.op

Target: epi.water.phos

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{sed}.\mathrm{op}\cdot \mathrm{relrate\_p}\]

POP mineralization (hyp)

Source: hyp.water.sed.op

Target: hyp.water.phos

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{sed}.\mathrm{op}\cdot \mathrm{relrate\_p}\]

DON mineralization (hyp)

Source: hyp.water.on

Target: hyp.water.din

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{on}\cdot \mathrm{relrate\_n}\]

DON mineralization (epi)

Source: epi.water.on

Target: epi.water.din

Unit: kg day⁻¹

Value:

\[\mathrm{resp}\cdot \mathrm{on}\cdot \mathrm{relrate\_n}\]

DIN sediment denitrification (epi)

Source: epi.water.din

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{denit\_a}\cdot \mathrm{din}\cdot \href{stdlib.html#response}{\mathrm{q10\_adjust}}\left(\mathrm{denit},\, 20 \mathrm{°C}\,,\, \mathrm{temp},\, \mathrm{denitQ10}\right)\cdot \frac{\mathrm{area}-\mathrm{hyp}.\mathrm{area}}{365 \mathrm{day}\,\mathrm{year}^{-1}\,}\]

DIN sediment denitrification (hyp)

Source: hyp.water.din

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{denit\_a}\cdot \mathrm{din}\cdot \href{stdlib.html#response}{\mathrm{q10\_adjust}}\left(\mathrm{denit},\, 20 \mathrm{°C}\,,\, \mathrm{temp},\, \mathrm{denitQ10}\right)\cdot \frac{\mathrm{area}}{365 \mathrm{day}\,\mathrm{year}^{-1}\,}\]

Epilimnion photosynthetic C fixation

Source: out

Target: epi.water.phyt

Unit: kg day⁻¹

Value:

\[\mathrm{fix}\]

Phytoplankton death DOC release (epi)

Source: epi.water.phyt

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}.\mathrm{death}\]

Phytoplankton death DOC release (hypo)

Source: hyp.water.phyt

Target: out

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}.\mathrm{death}\]

Epilimnion O₂ photosynthesis

Source: out

Target: epi.water.o2

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}.\mathrm{fix}\cdot \frac{\mathrm{o2\_mol\_mass}}{\mathrm{c\_mol\_mass}}\]

Phytoplankton N uptake

Source: epi.water.din

Target: out

Unit: kg day⁻¹

Value:

\[\frac{\mathrm{phyt}.\mathrm{fix}}{\href{stdlib.html#chemistry}{\mathrm{cn\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cn}\right)}\]

Phytoplankton P uptake

Source: epi.water.phos

Target: out

Unit: kg day⁻¹

Value:

\[\frac{\mathrm{phyt}.\mathrm{fix}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cp}\right)}\]

Phytoplankton C excretion

Source: epi.water.phyt

Target: epi.water.oc

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}\cdot \mathrm{excr}\]

Phytoplankton N excretion

Source: epi.water.phyt

Target: epi.water.on

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}\cdot \frac{\mathrm{excr}}{\href{stdlib.html#chemistry}{\mathrm{cn\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cn}\right)}\]

Phytoplankton P excretion

Source: epi.water.phyt

Target: epi.water.op

Unit: kg day⁻¹

Value:

\[\mathrm{phyt}\cdot \frac{\mathrm{excr}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cp}\right)}\]

Pytoplankton death P release (epi)

Source: out

Target: epi.water.sed.op

Unit: kg day⁻¹

Value:

\[\frac{\mathrm{phyt}.\mathrm{death}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cp}\right)}\]

Pytoplankton death P release (hyp)

Source: out

Target: hyp.water.sed.op

Unit: kg day⁻¹

Value:

\[\frac{\mathrm{phyt}.\mathrm{death}}{\href{stdlib.html#chemistry}{\mathrm{cp\_molar\_to\_mass\_ratio}}\left(\mathrm{phyt\_cp}\right)}\]

EasyChem-Particulate

Version: 0.0.3

File: modules/easychem.txt

Description

Particle transport and settling for EasyChem.

Authors: Magnus D. Norling

External symbols

Name Symbol Type
Atmosphere air compartment
Epilimnion epi compartment
Hypolimnion hyp compartment
Water water quantity
Particles sed quantity
Wind speed wind property
Surface area area property
Downstream downstream connection
  sett_target loc

Parameters

Name Symbol Unit Description
Particles      
Sediment settling velocity sett_vel m day⁻¹ The net settling velocity after taking into account mixing whithin (but not between) each compartment.
Resuspension factor resusp_f   Wind-proportional resuspension in epilimnion-sediment interface.
Sediment concentration of fast settling maxconc mg l⁻¹ With suspended sediment concentrations in the river higher than this, it is assumed to contain larger grain sizes that settle faster

State variables

Epilimnion suspended sediments

Location: epi.water.sed

Unit: kg

Conc. unit: mg l⁻¹

Hypolimnion suspended sediments

Location: hyp.water.sed

Unit: kg

Conc. unit: mg l⁻¹

Fluxes

Epilimnion sediment settling

Source: epi.water.sed

Target: sett_target

Unit: kg day⁻¹

Value:

\[\left(\mathrm{max}\left(0 \mathrm{m}\,\mathrm{day}^{-1}\,,\, \mathrm{sett\_vel}-\left(\mathrm{air}.\mathrm{wind}\cdot \mathrm{resusp\_f}\rightarrow \mathrm{m}\,\mathrm{day}^{-1}\,\right)\right)\cdot \mathrm{conc}\left(\mathrm{sed}\right)\cdot \left(\mathrm{area}-\mathrm{hyp}.\mathrm{area}\right)\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

Epilimnion-hypolimnion settling

Source: epi.water.sed

Target: hyp.water.sed

Unit: kg day⁻¹

Value:

\[\left(\mathrm{sett\_vel}\cdot \mathrm{conc}\left(\mathrm{sed}\right)\cdot \mathrm{hyp}.\mathrm{area}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

Hypolimnion sediment settling

Source: hyp.water.sed

Target: sett_target

Unit: kg day⁻¹

Value:

\[\left(\mathrm{sett\_vel}\cdot \mathrm{conc}\left(\mathrm{sed}\right)\cdot \mathrm{area}\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

Epilimnion SS inlet settling

Source: epi.water.sed

Target: sett_target

Unit: kg day⁻¹

Value:

\[\mathrm{in\_s} = \mathrm{in\_flux}\left(\mathrm{downstream},\, \mathrm{epi}.\mathrm{water}.\mathrm{sed}\right) \\ \mathrm{in\_q} = \mathrm{in\_flux}\left(\mathrm{downstream},\, \mathrm{epi}.\mathrm{water}\right) \\ \mathrm{in\_conc} = \left(\href{stdlib.html#basic}{\mathrm{safe\_divide}}\left(\mathrm{in\_s},\, \mathrm{in\_q}\right)\rightarrow \mathrm{mg}\,\mathrm{l}^{-1}\,\right) \\ \mathrm{excess} = \mathrm{in\_conc}-\mathrm{maxconc} \\ \left(\href{stdlib.html#response}{\mathrm{s\_response}}\left(\mathrm{excess},\, 0,\, \mathrm{maxconc},\, 0,\, \mathrm{excess}\cdot \mathrm{in\_q}\right)\rightarrow \mathrm{kg}\,\mathrm{day}^{-1}\,\right)\]

© Norsk Institutt for Vannforskning (The Norwegian Institute for Water Research), NIVA 2024.