RUFAS.routines.field.soil.soil module#

class RUFAS.routines.field.soil.soil.Soil(soil_data: SoilData | None = None, field_size: float | None = None)#

Bases: object

A class to manage and simulate various soil processes based on a given SoilData object.

Parameters#

soil_dataSoilData, optional

A SoilData object containing initial attribute values as well as attributes tracked and updated throughout the simulation.

field_sizefloat, optional

The size of the field in hectares (ha), used to initialize a SoilData object if a pre-configured SoilData object is not provided.

Attributes#

dataSoilData

An object that tracks all soil variables throughout the simulation.

soil_tempSoilTemp

Process component that tracks and updates the temperatures within the soil profile.

phosphorus_cyclingPhosphorusCycling

Process component managing phosphorus on top of and in the soil profile.

carbon_cyclingCarbonCycling

Process component that handles carbon cycling through decomposition in the soil.

nitrogen_cyclingNitrogenCycling

Process component for managing nitrogen within the soil profile.

evaporationEvaporation

Process component that controls evaporation from the soil.

infiltrationInfiltration

Process component that controls water infiltration from the soil surface into the profile.

percolationPercolation

Process component that controls percolation of water from upper layers to lower layers.

soil_erosionSoilErosion

Process component that tracks erosion from the soil profile.

snowSnow

Process component that tracks snow.

__init__(soil_data: SoilData | None = None, field_size: float | None = None)#
daily_soil_routine(solar_radiation: float, avg_temp: float, min_temp: float, max_temp: float, plant_cover: float, snow_cover: float, avg_annual_air_temp: float) None#

Call all non-water related daily update routines.

Parameters#

solar_radiationfloat

Solar radiation reaching the ground on the current day (MJ per square meter per day).

avg_tempfloat

Average temperature of the current day (degrees C).

min_tempfloat

Minimum temperature of the current day (degrees C).

max_tempfloat

Maximum temperature of the current day (degrees C).

plant_coverfloat

Total above-ground plant biomass and residue on the current day (kg per hectare).

snow_coverfloat

Water content of the snow cover on the current day (mm).

avg_annual_air_tempfloat

Average annual air temperature (degrees C).

daily_soil_water_routine(rainfall: float, weighting_coefficient: float, potential_evapotranspiration: float, has_seasonal_high_water_table: bool, maximum_soil_evaporation: float, avg_air_temp: float, residue: float, minimum_cover_management_factor: float, field_size: float) None#

Call all water-related daily update routines.

Parameters#

rainfallfloat

Rainfall depth of the current day (mm).

weighting_coefficientfloat

Weighting coefficient used to calculate the retention coefficient for daily curve number calculations, dependent on plant evapotranspiration (unitless).

potential_evapotranspirationfloat

Total potential evaporation and transpiration that can occur on the current day (mm).

has_seasonal_high_water_tablebool

Whether the HRU has a seasonal high water table (True/False).

maximum_soil_evaporationfloat

Maximum amount of water that can be evaporated from the soil profile on the current day (mm).

avg_air_tempfloat

Average air temperature (degrees C).

residuefloat

Biomass separated from plants on the ground (kg per hectare).

minimum_cover_management_factorfloat

Minimum value for the cover and management factor for water erosion applicable to land cover/plant (unitless).

field_sizefloat

Size of the field (ha).

Notes#

The daily phosphorus cycling method is called here because in large part the phosphorus dynamics of the soil profile depend on how much water enters and moves through the soil profile.