landlab

PotentialEvapotranspiration: Compute potential evapotranspiration

class PotentialEvapotranspiration(*args, **kwds)[source]

Bases: landlab.core.model_component.Component

Potential Evapotranspiration Component calculates spatially distributed potential evapotranspiration based on input radiation factor (spatial distribution of incoming radiation) using chosen method such as constant or Priestley Taylor. Ref: Xiaochi et. al. 2013 for ‘Cosine’ method and ASCE-EWRI Task Committee Report Jan 2005 for ‘PriestleyTaylor’ method. Note: Calling ‘PriestleyTaylor’ method would generate/overwrite shortwave & longwave radiation fields.

Code author: Sai Nudurupati and Erkan Istanbulluoglu

Construction:

PotentialEvapotranspiration(grid, method='Cosine',
    Priestley_taylor_const=1.26, albedo=0.6,
    latent_heat_of_vaporization=28.34, psychometric_const=0.066,
    stefan_boltzmann_const=0.0000000567, solar_const=1366.67,
    latitude=34., elevation_of_measurement=300, adjustment_coeff=0.18,
    lt=0., nd=365., MeanTmaxF=12., delta_d=5., **kwds)
Parameters:

grid: RasterModelGrid

A grid.

method: {‘Constant’, ‘PriestleyTaylor’, ‘MeasuredRadiationPT’,

‘Cosine’}, optional

Priestley Taylor method will spit out radiation outputs too.

priestley_taylor_constant: float, optional

Alpha used in Priestley Taylor method.

albedo: float, optional

Albedo.

latent_heat_of_vaporization: float, optional

Latent heat of vaporization for water Pwhv (Wd/(m*mm^2)).

psychometric_const: float, optional

Psychometric constant (kPa (deg C)^-1).

stefan_boltzmann_const: float, optional

Stefan Boltzmann’s constant (W/(m^2K^-4)).

solar_const: float, optional

Solar constant (W/m^2).

latitude: float, optional

Latitude (radians).

elevation_of_measurement: float, optional

Elevation at which measurement was taken (m).

adjustment_coeff: float, optional

adjustment coeff to predict Rs from air temperature (deg C)^-0.5.

lt: float, optional

lag between peak TmaxF and solar forcing (days).

nd: float, optional

Number of days in year (days).

MeanTmaxF: float, optional

Mean annual rate of TmaxF (mm/d).

delta_d: float, optional

Calibrated difference between max & min daily TmaxF (mm/d).

Examples

>>> from landlab import RasterModelGrid
>>> from landlab.components.pet import PotentialEvapotranspiration
>>> grid = RasterModelGrid((5, 4), spacing=(0.2, 0.2))
>>> PET = PotentialEvapotranspiration(grid)
>>> PET.name
'Potential Evapotranspiration'
>>> PET.input_var_names
('radiation__ratio_to_flat_surface',)
>>> sorted(PET.output_var_names)
['radiation__incoming_shortwave_flux',
 'radiation__net_flux',
 'radiation__net_longwave_flux',
 'radiation__net_shortwave_flux',
 'surface__potential_evapotranspiration_rate']
>>> sorted(PET.units) 
[('radiation__incoming_shortwave_flux', 'W/m^2'),
 ('radiation__net_flux', 'W/m^2'),
 ('radiation__net_longwave_flux', 'W/m^2'),
 ('radiation__net_shortwave_flux', 'W/m^2'),
 ('radiation__ratio_to_flat_surface', 'None'),
 ('surface__potential_evapotranspiration_rate', 'mm')]
>>> PET.grid.number_of_cell_rows
3
>>> PET.grid.number_of_cell_columns
2
>>> PET.grid is grid
True
>>> pet_rate = grid.at_cell['surface__potential_evapotranspiration_rate']
>>> np.allclose(pet_rate, 0.)
True
>>> grid['cell']['radiation__ratio_to_flat_surface'] = np.array([
...       0.38488566, 0.38488566,
...       0.33309785, 0.33309785,
...       0.37381705, 0.37381705])
>>> current_time = 0.5
>>> PET.update(current_time)
>>> np.allclose(pet_rate, 0.)
False
update(current_time=None, const_potential_evapotranspiration=12.0, Tmin=0.0, Tmax=1.0, Tavg=0.5, obs_radiation=350.0, **kwds)[source]

Update fields with current conditions.

Parameters:

current_time: float, required only for ‘Cosine’ method

Current time (Years)

constant_potential_evapotranspiration: float, optional for

‘Constant’ method Constant PET value to be spatially distributed.

Tmin: float, required for ‘Priestley Taylor’ method

Minimum temperature of the day (deg C)

Tmax: float, required for ‘Priestley Taylor’ method

Maximum temperature of the day (deg C)

Tavg: float, required for ‘Priestley Taylor’ and ‘MeasuredRadiationPT’

methods Average temperature of the day (deg C)

obs_radiation float, required for ‘MeasuredRadiationPT’ method

Observed radiation (W/m^2)