RUFAS.routines.field.crop.water_uptake module#
- class RUFAS.routines.field.crop.water_uptake.WaterUptake(crop_data: CropData | None = None, water_distro_parameter: float = 10, potential_water_uptakes: List[float] | None = None, water_compensation_factor: float = 0.01, unmet_water_demands: List[float] | None = None, actual_water_uptakes: List[float] | None = None)#
Bases:
NutrientUptake
This module is responsible for all water uptake routines for a crop in a day.
Parameters#
- crop_dataCropData, optional
An instance of CropData containing specific crop parameters and states. If not provided, a default instance with generic crop parameters is created.
- water_distro_parameterfloat, default 10
Water-use distribution parameter governing water-uptake from the soil (unitless).
- potential_water_uptakesOptional[List[float]], default None
The maximum amount of water to be potentially taken up by a crop, from each soil layer (mm).
- water_compensation_factorfloat, default 0.01
Factor that determines the ability of a plant to draw water from deeper layers when demands are not met (unitless). 0 indicates no water can be drawn from deeper than expected and 1 indicates that any and all water can be drawn from deeper layers.
- unmet_water_demandsOptional[List[float]], default None
Cumulative water demands not met by all previous layers (mm).
- actual_water_uptakesOptional[List[float]], default None
The actual amount of water to be removed from the soil (mm).
Attributes#
- crop_dataCropData
Stores and provides access to crop-related data influencing root development, including parameters like root depth, growth rates, and environmental conditions affecting root expansion.
- water_distro_parameterfloat
Water-use distribution parameter governing water-uptake from the soil (unitless).
- potential_water_uptakesOptional[List[float]]
The maximum amount of water to be potentially taken up by a crop, from each soil layer (mm).
- water_compensation_factorfloat
Factor that determines the ability of a plant to draw water from deeper layers when demands are not met (unitless). 0 indicates no water can be drawn from deeper than expected and 1 indicates that any and all water can be drawn from deeper layers.
- unmet_water_demandsOptional[List[float]]
Cumulative water demands not met by all previous layers (mm).
- actual_water_uptakesOptional[List[float]]
The actual amount of water to be removed from the soil (mm).
References#
“Water Uptake By Plants” section of SWAT (5:2.2.1)
- __init__(crop_data: CropData | None = None, water_distro_parameter: float = 10, potential_water_uptakes: List[float] | None = None, water_compensation_factor: float = 0.01, unmet_water_demands: List[float] | None = None, actual_water_uptakes: List[float] | None = None)#
- uptake(soil_data: SoilData) None #
Main method that conducts all water uptake routines for a crop in a day.
Parameters#
- soil_dataSoilData
object tracking soil, from which water will be extracted.
- extract_water_from_soil(soil_data: SoilData) None #
Transfers the current day’s water uptake from soil layers to the crop.
Parameters#
- soil_dataSoilData
the object that tracks soil properties, from which to extract water.
Raises#
- Exception
If the lengths of soil_data.soil_layers and self.actual_water_uptakes aren’t equal.
Notes#
The module removes the smaller of the previously calculated “actual uptake” and the available water in each layer. The actual uptake is updated, if relevant, and the equivalent amount is removed from the layers in the SoilData object.
- classmethod _take_up_water(potential_uptakes: List[float], water_availabilities: List[float], wilting_points: List[float]) List[float] #
Calculates the actual water taken up by the plant for each soil layer.
Returns#
- uptakes: list[float]
the actual water uptake from each layer of soil (mm)
Raises#
- Exception
If the lengths of potential_uptakes, water_availabilities, and wilting_points are not all equal.
Notes#
This method is a wrapper that applies _determine_actual_layer_uptake() to each layer.
- static _determine_actual_layer_uptake(potential: float, available_water: float, wilting_point_water: float) float #
Calculates the actual water taken up by the plant for a soil layer.
Parameters#
- potentialfloat
the (adjusted and corrected) potential water uptake for a soil layer on the current day (mm)
- available_waterfloat
the water available in a soil layer (mm)
- wilting_point_waterfloat
the water content of the layer at the wilting point (mm)
Returns#
- uptakefloat
the actual water that the plant will uptake from the layer (mm)
- static _reduce_efficiency_of_uptake(potential_uptakes: List[float], water_availabilities: List[float], available_capacities: List[float]) List[float] #
Returns the potential water uptake for each layer after correcting for availability-dependent uptake efficiency.
Parameters#
- potential_uptakeslist[float]
The unadjusted potential water uptakes for each soil layer (mm).
- water_availabilitieslist[float]
The crop’s water availabilities for each soil layer (mm).
- available_capacitiesfloat
Available water capacity for each soil layer (mm).
Returns#
- corrected_potentialslist[float]
A list of corrected potential water that can be taken up from each layer by the crop on the current day.
Raises#
- Exception
If potential_uptakes, water_availabilities, and available_capacities are not all equal lengths.
Notes#
This method is a wrapper that applies _correct_layer_for_efficiency() to each layer.
- static _correct_layer_for_efficiency(potential_uptake: float, available_water: float, available_capacity: float) float #
Adjusts the potential water uptake from a layer by the uptake efficiency that is concentration-dependent.
Parameters#
- potential_uptakefloat
The (adjusted) potential water uptake from this layer by the crop on the current day (mm).
- available_waterfloat
The amount of water actual available for uptake in this layer on the current day (mm).
- available_capacityfloat
Available water capacity (not already holding water) for this layer on the current day (mm).
Returns#
- corrected_potential: float
The maximum water able to be taken up from this layer, based on the initial concentration of water in the soil layer (mm).
References#
SWAT 5:2.2.4, 5:2.2.5
- static _adjust_water_uptakes(potential_uptakes: List[float], unmet_demands: List[float], uptake_compensation: float) List[float] #
Adjusts the potential water uptakes for each layer based on drawing from deeper layers when possible.
Parameters#
- potential_uptakeslist[float]
The unadjusted potential water uptakes for each soil layer (mm).
- unmet_demandslist[float]
The crop’s water demands for each soil layer (mm).
- uptake_compensationfloat
Water uptake compensation factor: the proportion of a crop’s water demand from a given layer that can be drawn from the underlying layer when insufficient water exists in the desired layer.
Returns#
- adjustedlist[float]
The adjusted potential water to be taken up from each layer (mm).
Raises#
- Exception
If the lengths of potential_uptakes and unmet_demands are not equal.
References#
SWAT 5:2.2.3
- static _find_stratified_max_water_uptakes(root_depth: float, max_transpiration: float, water_distro_parameter: float, upper_depths: List[float], lower_depths: List[float]) List[float] #
Calculates the crop’s maximum water uptake from each soil layer during the current day.
Parameters#
- root_depthfloat
The current depth of the crop root development (mm).
- max_transpirationfloat
The maximum potential water lost to crop transpiration for the current day (mm).
- water_distro_parameterfloat
The water-use distribution parameter of the crop (unitless).
- upper_depthslist[float]
Depths to the top of each soil layer (mm).
- lower_depthslist[float]
Depths to the bottom of each soil layer (mm).
Returns#
- potential_uptakeslist[float]
The crop’s maximum potential water uptake for each soil layer (mm) during the current day.
Raises#
- Exception
If the lengths of upper_depths and lower_depths are not equal.
References#
SWAT 5:2.2.2
- static _determine_max_water_uptake_to_depth(root_depth: float, depth: float, max_transpiration: float, water_distro_parameter: float) float #
Calculate the amount of maximum amount water that can possibly be taken up by the plant under ideal conditions.
Parameters#
- root_depthfloat
Current depth of root roots (mm).
- depthfloat
Depth from the soil surface (mm).
- max_transpirationfloat
Maximum transpiration possible for the plant during the current day (mm).
- water_distro_parameterfloat
Water use distribution parameter (unitless).
Returns#
- waterfloat
Maximum amount of water potentially taken up by the plant (mm).
References#
SWAT 5:2.2.1
- _abc_impl = <_abc._abc_data object>#