RUFAS.routines.field.soil.evaporation module#

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

Bases: object

Simulates the evaporation and transpiration from the soil profile as described in the ‘Soil Water Evaporation’ section (2:2.3.3.2) of the SWAT (Soil and Water Assessment Tool) Theoretical documentation.

Parameters#

soil_dataSoilData, optional

An instance of SoilData for tracking the evaporation and transpiration from 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 data within the soil profile.

__init__(soil_data: SoilData | None, field_size: float | None = None)#
evaporate(maximum_soil_water_evaporation: float) None#

Evaporates water from the soil profile.

Parameters#

maximum_soil_water_evaporationfloat

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

Notes#

This method takes in a maximum amount of water that may be evaporated from the soil profile, then iterates over the layers in the soil profile and determines how much to evaporate from that layer. If the amount determined to be evaporated would put the total amount of evaporation over the limit, the amount is reduced to meet the limit exactly and the loop is exited after evaporating the reduced amount from the current layer.

static _determine_depth_evaporative_demand(max_soil_water_evaporation: float, depth: float) float#

Calculates evaporative demand.

Parameters#

max_soil_water_evaporationfloat

Maximum soil water evaporation on a given day (mm).

depthfloat

Depth below the surface (mm).

Returns#

float

Evaporative demand at the given depth (mm).

References#

SWAT Theoretical documentation 2:2.3.16

static _determine_layer_evaporative_demand(max_soil_water_evaporation: float, top_depth: float, bottom_depth: float, compensation: float) float#

Calculates the evaporative demand for a given layer of soil.

Parameters#

max_soil_water_evaporationfloat

Maximum water evaporation from soil on given day (mm).

top_depthfloat

Depth of top of layer to be analyzed (mm).

bottom_depthfloat

Depth of bottom of layer to be analyzed (mm).

compensationfloat

Soil evaporative compensation coefficient (unitless).

Returns#

float

Evaporative demand for given layer of soil (mm).

References#

SWAT Theoretical documentation 2:2.3.16, 17

static _determine_evaporative_demand_reduced(evaporative_demand: float, soil_water_content: float, field_water_content: float, wilting_water_content: float) float#

Calculates evaporative demand reduced for water content and field capacity.

Parameters#

evaporative_demandfloat

Evaporative demand for current soil layer (mm).

soil_water_contentfloat

Soil water content of given layer (mm).

field_water_contentfloat

Field capacity water content of given layer (mm).

wilting_water_contentfloat

Wilting point water content of given layer (mm).

Returns#

float

Reduced evaporative demand for current layer based on how much water is in layer (mm).

References#

SWAT Theoretical documentation 2:2.3.18, 19

static _determine_amount_water_removed(reduced_evaporative_demand, soil_water_content: float, wilting_water_content: float) float#

Calculates amount of water lost from soil layer from evaporation.

Parameters#

reduced_evaporative_demandfloat

Evaporative demand reduced for water content and field capacity (mm).

soil_water_contentfloat

Soil water content of given layer (mm).

wilting_water_contentfloat

Wilting point water content of given layer (mm).

Returns#

float

Amount of water removed from soil layer by evaporation (mm).

References#

SWAT Theoretical documentation 2:2.3.20