RUFAS.routines.field.crop.water_dynamics module#

class RUFAS.routines.field.crop.water_dynamics.WaterDynamics(crop_data: CropData | None = None, cumulative_evapotranspiration: float = 0.0)#

Bases: object

Manages water dynamics related to crop growth, including water uptake, transpiration, and evaporation.

Parameters#

crop_dataOptional[CropData], optional

An instance of CropData containing crop specifications and states relevant to water dynamics. If not provided, a default instance with generic parameters is used.

cumulative_evapotranspirationfloat, default 0.0

Total water lost to evapotranspiration by the plant during the growing season (mm).

Attributes#

dataCropData

Reference to the CropData instance used to access and modify water-related parameters and states for the crop.

cumulative_evapotranspirationfloat

Total water lost to evapotranspiration by the plant during the growing season (mm).

__init__(crop_data: CropData | None = None, cumulative_evapotranspiration: float = 0.0)#
cycle_water(evaporation: float, transpiration: float, potential_evapotranspiration: float) None#

Executes the daily cycling of water between the plants, soil, and environment.

Parameters#

evaporationfloat

Evaporation on a given day (mm).

transpirationfloat

Transpiration on a given day (mm).

potential_evapotranspirationfloat

Potential evapotranspiration on a given day (mm).

Notes#

This method updates cumulative sums that are used to keep the water deficiency factor updated.

evaporate_from_canopy(potential_evapotranspiration: float) float#

Evaporates water from the canopy.

Parameters#

potential_evapotranspirationfloat

Evapotranspirative demand on the field on the current day (mm)

Returns#

float

Amount evaporated from canopy (mm)

References#

SWAT Theoretical documentation section 2:2.3.1

Notes#

This method evaporates water from the crop’s canopy until either 1) there is no more water in the canopy or 2) there is no more evapotranspirative demand. It then returns the amount of water that was evaporated from the canopy.

set_maximum_transpiration(potential_evapotranspiration_adjusted: float) None#

Sets the maximum transpiration based on the adjusted potential evapotranspiration of this day.

Parameters#

potential_evapotranspiration_adjustedfloat

Evapotranspirative demand remaining after evaporating water in the canopy (mm)

References#

SWAT Theoretical documentation section 2:2.3.2

static _determine_maximum_transpiration(leaf_area_index: float, potential_evapotranspiration_adjusted: float) float#

Calculates the maximum transpiration for a given day.

Parameters#

leaf_area_indexfloat

Leaf area index of the plant (unitless).

potential_evapotranspiration_adjustedfloat

Potential evapotranspiration adjusted for evaporation of free water from the canopy (mm).

Returns#

float

Maximum transpiration (mm).

References#

SWAT 2:2.3.5, 6

static _determine_evapotranspiration(evaporation: float, transpiration: float) float#

Calculate evapotranspiration as the sum of evaporation and transpiration.

Parameters#

evaporationfloat

Evaporation (mm).

transpirationfloat

Transpiration (mm).

Returns#

float

Total evapotranspiration (mm).

static _determine_water_deficiency(cumulative_evapotranspiration: float, cumulative_potential_evapotranspiration: float) float#

Calculate water deficiency factor.

Parameters#

cumulative_evapotranspirationfloat

Annual evapotranspiration (mm).

cumulative_potential_evapotranspirationfloat

Maximum annual evapotranspiration (mm).

Returns#

float

Water deficiency factor (unitless).

References#

SWAT 5:3.3.2