RUFAS.biophysical.field.soil.phosphorus_cycling.manure module#
- class RUFAS.biophysical.field.soil.phosphorus_cycling.manure.Manure(soil_data: SoilData | None, field_size: float | None = None)#
Bases:
objectThis module adds and tracks manure phosphorus dynamics based on the SurPhos model.
Parameters#
- soil_dataSoilData, optional
The SoilData object used by this module to track manure phosphorus activity, creates new one if one is not provided.
- field_sizefloat, optional
Used to initialize a SoilData object for this module to work with, if a pre-configured SoilData object is not provided (ha).
Attributes#
- dataSoilData
- Stores the SoilData object for tracking the dynamics of manure phosphorus, including its distribution,
transformation, and potential loss mechanisms.
- daily_manure_update(rainfall: float, runoff: float, field_size: float, mean_air_temperature: float) None#
This method conducts daily operations on manure including decomposition, assimilation into soil, etc.
Parameters#
- rainfallfloat
The amount of rainfall on the current day (mm).
- runofffloat
The amount of runoff from rainfall on the current day (mm).
- field_sizefloat
The size of the field (ha).
- mean_air_temperaturefloat
Mean air temperature on the current day (degrees C).
Notes#
This method orchestrates the three major processes (and one more minor process) that act on manure on the manure on the surface of the field. The three major processes are leaching, decomposition, and assimilation. The minor process is the adjustment of the manure’s moisture factor. Leaching is conducted first, then the adjustment of the moisture factors. Decomposition and assimilation occur simultaneously.
- _leach_and_update_phosphorus_pools(rainfall: float, runoff: float, field_size: float) None#
This method handles all calls to the methods that determine how much phosphorus is leached from manure, how that leached phosphorus is distributed, and updates the phosphorus pools based on those values.
Parameters#
- rainfallfloat
The amount of rainfall on the current day (mm).
- runofffloat
The amount of runoff from rainfall on the current day (mm).
- field_sizefloat
The size of the field (ha).
- _add_infiltrated_phosphorus_to_soil(infiltrated_phosphorus_amount: float, field_size: float) None#
This method adds phosphorus that was dissolved in rainfall to the soil profile as outlined in SurPhos.
Parameters#
- infiltrated_phosphorus_amountfloat
The amount of phosphorus to be added to the soil profile (kg).
- field_sizefloat
The size of the field (ha).
References#
SurPhos Theoretical, page 8, paragraph below [13]
Notes#
This method follows what is outlined in SurPhos (theoretical documentation, page 8, paragraph just below eqn. [13]), which is that 80% of infiltrated phosphorus stays in the top 20 mm of soil, and the rest infiltrates deeper.