SWAT - soil.layer.nutrients.nitrogen

mef_agri.models.soil.layer.nutrients.nitrogen.model_swat.py

Nitrate and Ammonia

class mef_agri.models.soil.layer.nutrients.nitrogen.model_swat.N_NO3_NH4_V2009(**kwargs)

Soil layer model for mineral nitrogen which contains the \(NO_3^-\) and the \(NH_4^+\)-pool. Nitrification is the only process considered herein - no losses such as nitrate leaching, denitrification or ammonia volatilization.

kwargs \(\rightarrow\) mef_agri.models.base.Model

NH4()

MQ - State

\(s_{\textrm{NH}_{4}^+,i,k}\ [\frac{kg}{ha}]\)

Returns:

amount of ammonium in the soil layer

Return type:

numpy.ndarray

NH4_uptake()

MQ - Random Output

\(s_{\textrm{NH}_{4}^{+}-u,i,k}\ [\frac{kg}{ha}]\)

Returns:

amount of ammonium removed from soil layer by the crop

Return type:

numpy.ndarray

NO3()

MQ - State

\(s_{\textrm{NO}_{3}^-,i,k}\ [\frac{kg}{ha}]\)

Returns:

amount of nitrate in the soil layer

Return type:

numpy.ndarray

NO3_uptake()

MQ - Random Output

\(s_{\textrm{NO}_{3}^{-}-u,i,k}\ [\frac{kg}{ha}]\)

Returns:

amount of nitrate removed from soil layer by the crop

Return type:

numpy.ndarray

fc()

RQ - from model with id 'zone.soil'

\(s_{\textrm{W-fc},0}\ [\ ]\)

Returns:

soil moisture at field capacity

Return type:

Requirement

initialize(epoch)

Only the super-call is done here.

Parameters:

epoch (datetime.date) – initialization epoch

lt()

RQ - from model with id '.__parent__.__parent__' (parent soil layer)

\(s_{\textrm{lt},i,0}\ [mm]\)

Returns:

layer thickness

Return type:

Requirement

ltemp()

RQ - from model with id '.__parent__.__parent__.temperature' (temperature model of parent soil layer)

\(s_{\textrm{T-t},i,k}\ [^\circ C]\)

Returns:

soil layer temperature

Return type:

Requirement

lwa()

RQ - from model with id '.__parent__.__parent__.water' (water model of parent soil layer)

\(s_{\textrm{W-a},i,k}\ [mm]\)

Returns:

water amount of soil layer

Return type:

Requirement

nitrification()

MQ - Random Output

\(s_{\textrm{N-nit},i,k}\ [\frac{kg}{ha}]\)

Returns:

amount of ammonium which is removed from the pool at current day (i.e. added to the NO3-pool)

Return type:

numpy.ndarray

update(epoch)

The following computations are performed

  • nitrification temperature factor - [R1] (equ. 3:1.3.1)

  • nitrification soil water factor - [R1] (equ. 3:1.3.2, 3:1.3.3)

  • nitrification factor - [R1] (equ. 3:1.3.6)

  • nitrification rate - [R1] (equ. 3:1.3.11 with setting volatilization factor to zero \(\Rightarrow\) equ. 3:1.3.11 is equal to equ. 3:1.3.8)

  • update N-pools

Parameters:

epoch (datetime.date) – current evaluation epoch

wp()

RQ - from model with id 'zone.soil'

\(s_{\textrm{W-wp},0}\ [\ ]\)

Returns:

soil moisture at wilting point

Return type:

Requirement

Nitrate, Ammonia and organic N

class mef_agri.models.soil.layer.nutrients.nitrogen.model_swat.N_NO3_NH4_Norg_V2009(**kwargs)

Contrary to N_NO3_NH4_V2009, this model additionally considers the organic N-pool and mineralization. Again no losses such as nitrate leaching, denitrification or ammonia volatilization.

Inherits from N_NO3_NH4_V2009

kwargs \(\rightarrow\) mef_agri.models.base.Model

N_org()

MQ - State

\(s_{\textrm{N-org},i,k}\ [\frac{kg}{ha}]\) - [R1] (section 3:5.1)

Returns:

organic N-pool

Return type:

numpy.ndarray

N_org_add()

MQ - Random Output

\(s_{\textrm{N-}\Delta\textrm{o},i,k}\ [\frac{kg}{ha\cdot day}]\) - [R1] (equ. 3:5.1.2b)

Returns:

input from decomposed crop residuals to the organic N-pool

Return type:

numpy.ndarray

chum_res()

RQ - from model with id '.__parent__.carbon' (carbon model from parent nutrient model)

\(s_{\textrm{C-rdh},i,k}\ [\frac{kg}{ha\cdot day}]\)

Returns:

amount of decomposed C from crop residuals which is added to the organic C-pool (humus)

Return type:

Requirement

cnorg()

RQ - from model with id '.__parent__' (parent nutrient model)

\(s_{\textrm{CN-o},i,k}\ [\ ]\)

Returns:

C/N ratio of organic matter in the soil layer

Return type:

Requirement

fmin()

RQ - from model with id '.__parent__.carbon' (carbon model from parent nutrient model)

\(s_{\textrm{min},i,k}\ [\frac{1}{day}]\)

Returns:

mineralization rate

Return type:

Requirement

initialize(epoch)

N_org_add() is initialized with a zero array.

Parameters:

epoch (datetime.date) – initialization epoch

mineralized_N()

MQ - Random Output

\(s_{\textrm{N-mo},i,k}\ [\frac{kg}{ha\cdot day}]\)

Returns:

mineralized N from organic N-pool

Return type:

numpy.ndarray

update(epoch)

Additionally to N_NO3_NH4_V2009.update(), the following computations are performed

  • increase of organic N-pool (proportional to humified C) - [R1] (equ. 3:5.1.2b)

  • mineralization of organic N which feeds the \(\textrm{NH}_4^+\)-pool - [R1] (equ. 3:5.1.2b)

Parameters:

epoch (datetime.date) – current evaluation epoch