RUFAS.routines.field.soil.infiltration module#
- class RUFAS.routines.field.soil.infiltration.Infiltration(soil_data: SoilData | None, field_size: float | None = None)#
Bases:
object
Simulates the infiltration of water into the soil profile using the ‘Runoff Volume: SCS Curve Number Procedure’ as described in section 2:1.1 of the SWAT (Soil and Water Assessment Tool) model documentation.
Parameters#
- soil_dataSoilData, optional
An instance of SoilData for tracking the water infiltration in the soil profile. If not provided, a new instance will be created with the specified field size.
- field_sizefloat, optional
The size of the field (ha).
Attributes#
- dataSoilData
The SoilData object that stores and manages the water infiltration data within the soil profile.
- infiltrate(rainfall: float) None #
Main routine for determining runoff and infiltration of soil for a given day.
Parameters#
- rainfallfloat
Rainfall depth of current day (mm).
Notes#
The amount of water that is allowed to infiltrate the soil profile on any given day is limited by the available capacity of the total soil profile. This means that on some days more water will infiltrate the surface soil layer than there is capacity in said layer. This works fine as long as water is allowed to percolate out of the surface layer after this.
The methodology in SWAT automatically adjusts the Second Moisture Condition Parameter. This behavior was removed from RuFaS after consulting with SMEs who determined it was inappropriate to change user input in this way. See PR #772 for more discussion.
- static _determine_first_moisture_condition_parameter(second_moisture_condition: float)#
Determine the curve number for dry (wilting point) conditions.
Parameters#
- second_moisture_conditionfloat
Curve number for average moisture conditions (unitless).
Returns#
- float
Curve number 1 (dry/wilting point conditions) (unitless).
References#
SWAT Theoretical documentation eqn. 2:1.1.4
- static _determine_third_moisture_condition_parameter(second_moisture_condition: float)#
Determine the curve number for wet (field capacity) conditions.
Parameters#
- second_moisture_conditionfloat
Curve number for average moisture conditions (unitless).
Returns#
- float
Curve number 3 (wet/field capacity conditions) (unitless).
References#
SWAT Theoretical documentation eqn. 2:1.1.5
- static _determine_retention_parameter_for_moisture_condition(moisture_condition_parameter: float) float #
Calculate the retention parameter used to determine runoff.
Parameters#
- moisture_condition_parameterfloat
Curve number for the day (from SCS runoff equations (SWAT 2:1.1)) (unitless).
Returns#
- float
Retention parameter (mm).
References#
SWAT Theoretical documentation eqn. 2:1.1.2
- static _determine_second_shape_coefficient(field_capacity: float, saturation: float, max_retention_parameter: float, third_moisture_condition_retention_parameter: float) float #
Determine the second shape coefficient for use in calculating the first shape coefficient and retention parameter for a given day.
Parameters#
- field_capacityfloat
Amount of water in soil profile at field capacity (mm).
- saturationfloat
Amount of water in soil profile when saturated (mm).
- max_retention_parameterfloat
Retention parameter calculated from curve number 1 (the driest conditions) (unitless).
- third_moisture_condition_retention_parameterfloat
Retention parameter calculated from curve number 3 (the wettest conditions) (unitless).
Returns#
- float
The second shape coefficient (unitless).
References#
SWAT Theoretical documentation eqn. 2:1.1.8
- static _determine_first_shape_coefficient(field_capacity: float, max_retention_parameter: float, third_moisture_condition_retention_parameter: float, second_shape_coefficient: float) float #
Calculate the first shape coefficient for use in calculating the retention parameter.
Parameters#
- field_capacityfloat
Amount of water in soil profile at field capacity (mm).
- max_retention_parameterfloat
Retention parameter calculated from curve number 1 (the driest conditions) (unitless).
- third_moisture_condition_retention_parameterfloat
Retention parameter calculated from curve number 3 (the wettest conditions) (unitless).
- second_shape_coefficientfloat
The second shape coefficient (unitless).
Returns#
- float
The first shape coefficient (unitless).
References#
SWAT Theoretical documentation eqn. 2:1.1.7
- static _determine_retention_parameter(soil_water_content: float, max_retention_parameter: float, first_shape_coefficient: float, second_shape_coefficient: float) float #
Return the retention parameter for a given day.
Parameters#
- soil_water_contentfloat
Amount of water held in the soil profile excluding the amount of water held in the profile at the wilting point (mm).
- max_retention_parameterfloat
Maximum retention parameter, calculated from curve number 1 (the driest conditions) (mm).
- first_shape_coefficientfloat
First shape coefficient (unitless).
- second_shape_coefficientfloat
Second shape coefficient (unitless).
Returns#
- float
Retention parameter for a given day (mm).
References#
SWAT Theoretical documentation eqn. 2:1.1.6
- static _determine_frozen_retention_parameter(max_retention_parameter: float, retention_parameter: float) float #
Determine the adjusted retention parameter if the top layer of soil is frozen.
Parameters#
- max_retention_parameterfloat
Maximum retention parameter, calculated from curve number 1. (the driest conditions) (mm).
- retention_parameterfloat
Retention parameter for a given day (mm).
Returns#
- float
Retention parameter for a given day adjusted for frozen soil (mm).
References#
SWAT Theoretical documentation eqn. 2:1.1.10
- static _determine_accumulated_runoff(rainfall: float, retention_parameter: float) float #
Calculate accumulated runoff or rainfall excess.
Parameters#
- rainfallfloat
Rainfall depth of the given day (mm).
- retention_parameterfloat
Retention parameter based on curve number (mm).
Returns#
- float
Accumulated runoff or rainfall excess (mm).
Notes#
Runoff only occurs when rainfall is greater than initial abstractions (about surface storage, interception, etc.) which are approximated as 0.2 times the retention parameter in SWAT 2:1.1 and here.
References#
SWAT Theoretical documentation eqn. 2:1.1.1, 3