Reference Evapotranspiration ET₀
Evapotranspiration is not measured. It is computed per plot and hour from four meteorological variables using the Penman-Monteith equation in its FAO form (Allen et al. 1998, Irrigation and Drainage Paper 56).
The result is reference evapotranspiration ET₀: the evapotranspiration of a hypothetical, well-watered, 12 cm tall grass surface with an albedo of 0.23. It is a weather index, not a measure of the actual water use of a pine or beech stand. For stand evapotranspiration see the LWF-BROOK90 simulations; ET₀ enters the climatic water balance as the atmospheric demand term.
Inputs
| Variable | Code | Unit in the DB | Use |
|---|---|---|---|
| Air temperature | AT | °C | required |
| Relative humidity | RH | % | required |
| Wind speed | WS | m/s at 10 m | required |
| Global radiation | SR | W/m² | required, × 0.0036 → MJ m⁻² h⁻¹ |
| Atmospheric pressure | AP | hPa | optional, else derived from elevation |
If one of the four required variables is missing, nothing is written for that hour.
Which sensors count. ET₀ is defined for open-field reference conditions. Only instruments with code_location = 'F' are used; only plots that never had an open-field sensor for a variable fall back to whatever is available. Where several instruments exist, values are averaged.
The computation
Everything is computed per hour. Equation numbers refer to FAO-56.
Solar position. From the day of year
The solar hour angle at the midpoint of the hour follows Eq. 31 with the seasonal correction
The bounds of the hour
If the hour lies entirely outside daylight,
Radiation balance. Clear-sky radiation (Eq. 37), net shortwave radiation with the grass albedo 0.23 (Eq. 38) and net longwave radiation (Eq. 39, with the hourly Stefan-Boltzmann constant
At night p_night_rs_rso). This is the point at which the previous implementation forced maximum longwave loss and clamped nighttime ET₀ to zero.
Soil heat flux and the denominator coefficient (Eq. 45/46) differ between day and night:
Vapour pressures (Eq. 11, 54) and the slope of the saturation curve (Eq. 13):
Wind speed at 2 m (Eq. 47). The open-field anemometers sit at 10 m while the equation is defined for 2 m — the factor is 0.75:
Atmospheric pressure and the psychrometric constant (Eq. 7, 8). Measured pressure takes precedence, otherwise it is derived from elevation:
The equation itself (Eq. 53), result in mm per hour:
Negative results — possible at night under strong longwave loss — are set to zero.
Limits
- ET₀ is not forest evapotranspiration. The reference surface is grass, not a stand. For the water balance of a pine stand, ET₀ is the driver, not the answer.
- The timestamps are wrong. By ICP specification
mm_mehcarries UTC with the start of the hour as the label; in fact the hourly labels are off by +2.0 h (2017–2023 and 2025–2026) or +1.0 h (2024) — Central European Time plus an end-of-period label. The function is called withand therefore places the sun about two hours too early: comes out too small in the morning and is clipped at 1 in the afternoon, the day/night switch for and flips at the wrong hour, and evening hours with actual sunlight receive ET₀ = 0. The diurnal cycle suffers more than the daily total, but the daily total is not unaffected. Until the timestamps are fixed at source, calling with (2024: 1) would be closer to reality — but not clean, because the offset depends on the logger's storage interval and is not a whole hour for Kienhorst (1203) and Weitzgrund. - The anemometer height is fixed. 10 m is confirmed for all eight wind sensors by
fuk.sensor_map, but it is passed as a parameter, not read per instrument. A different height requires changing the call. - No gap filling at the hourly level. If a required variable is missing the hour is dropped — and the daily value is then a sum over fewer than 24 hours, i.e. too low.
daily_completenessmust therefore be read alongside ET₀: a day at 80 % completeness is not a daily value missing 20 % of its detail, it is one that is 20 % too small. - Inputs are taken unchecked. The procedure only requires that they are not null. A stuck humidity sensor enters the computation.
- The origin code is wrong. Hourly values carry
code_data_origin = 9, which in the ICP dictionary means "missing value"; 4 ("modelled data") would be correct. The daily value inherits 1 from the aggregation trigger — "measured on plot". This must be corrected before any submission to ICP Forests; in the portal and the download the rule until then is: ET is always computed, whatever the code says.