net.simplace.client.simulation.lap.fao56.EquationsFAO56
Helper EquationsFAO56 for computing values due to equations from (FAO 56)
Equation numbers refers to the paper cited below.
References
(FAO 56): Allen, Crop evapotranspiration - Guidelines for computing crop water requirements - FAO Irrigation and drainage paper 56, 1998
public class EquationsFAO56 {
// Public Constructors
public EquationsFAO56();
// Constants
public static final double a_s_Default;
public static final double b_s_Default;
public static final double albedo;
public static final double lambda;
// Class Methods public static double
ReferenceEvapotranspiration(double T, double R_n,
double u_2, double e_s, double e_a, double z);
Calculates the daily crop evapotranspiration with the FAO-Penman-Montheith method
Eq. (6)
FAO Penman-Monteith equation determines the evapotranspiration from the hypothetical
grass reference surface and provides a standard to which evapotranspiration in
different periods of the year or in other regions can be compared and to which the
evapotranspiration from other crops can be related. [FAO 56, p.65f]
- T air temperature at 2 m height [°C]
- R_n net radiation at the crop surface [MJ m-2 day-1]
- u_2 wind speed at 2m height [m s-1]
- e_s saturation vapour pressure [kPa]
- e_a actual vapour pressure [kPa]
- z elevation above sea level [m]
returns crop reference evapotranspiration ET0 [mm day-1]
public static double
AtmosphericPressure(double z);
Calculates the atmospheric Pressure P
Eq. (7)
- z elevation above sea level [m]
returns atmospheric pressure P [kPa]
public static double
PsychrometricConstant(double P);
Calculates the psychrometric constant gamma as function of atmospheric pressure P
Eq. (8)
The factor is calculated from parameters for average atmospheric conditions and is
rounded to 3 decimals to be consistent with the reference.
- P atmospheric pressure [kPa]
returns psychrometric constant gamma [kPa °C-1]
public static double
SaturationVapourPressureAtTemperature(double T);
Saturation vapour pressure at air temperature T
Eq. (11)
returns vapour pressure e_0_T [kPa]
public static double
MeanSaturatedVapourPressure(double T_max, double T_min);
Mean vapour pressure of a period
Eq. (12)
- T_max maximum air temperature during period [°C]
- T_min minimum air temperature during period [°C]
returns mean vapour pressure e_s [kPa]
public static double
SlopeOfSaturationVapPressureCurve(double T);
Calculates the slope of saturation vapour pressure curve Delta as function of temperature T
Eq (13)
returns slope of saturation vapour pressure Delta [kPa °C-1]
public static double
VapourPressureFromDewpoint(double T_dew);
Actual vapour pressure at dewpoint
Eq. (14)
- T_dew dewpoint temperature [°C]
returns actual vapour pressure e_a [kPa]
public static double
VapourPressureFromPsychrometricData(double T_dry,
double T_wet, double a_psy, double z);
Actual vapour pressure derived from psychrometric data
Eq. (15)
- T_dry dry bulb temperature [°C]
- T_wet wet bulb temperature [°C]
- a_psy psychrometric constant of the instrument [°C-1]
- z elevation from sea level [m]
returns actual vapour pressure e_a [kPa]
public static double
VapourPressureFromRelHumidityMaxMin(double RH_max,
double RH_min, double T_max, double T_min);
Actual vapour pressure from maximum and minimum relative humidity
Eq. (17)
- RH_max maximum relative humidity [%]
- RH_min minimum relative humidity [%]
- T_max maximum temperature [°C]
- T_min minimum temperature [°C]
returns actual vapour pressure e_a [kPa]
public static double
VapourPressureFromRelHumidityMax(double RH_max, double
T_min);
Actual vapour pressure from maximum relative humidity
Eq. (18)
- RH_max maximum relative humidity [%]
- T_min minimum temperature [°C]
returns actual vapour pressure e_a [kPa]
public static double
VapourPressureFromRelHumidityMean(double RH_mean,
double T_max, double T_min);
Actual vapour pressure from mean relative humidity
Eq. (19)
- RH_mean mean relative humidity [%]
- T_max maximum temperature [°C]
- T_min minimum temperature [°C]
returns actual vapour pressure e_a [kPa]
public static double
EvaporationEquivalentToRadiation(double Radiation);
Converts radiation [energy/surface] to equivalent evaporation [depth of water]
Eq. (20)
returns equivalent evaporation [mm day-1]
public static double
ExtraterrestrialRadiation(double d_r, double omega_s,
double phi, double delta);
Calculates extraterrestrial radiation
Eq. (21)
- d_r inverse relative distance earth-sun
- omega_s sunset hour angle [rad]
- phi latitude [rad]
- delta solar declination [rad]
returns extraterrestrial radiation per day [MJ m-2 day-1]
public static double
DecimalDegreesToRadians(double degree);
Convert decimal degrees to radians Eq. (22)
returns radians [rad]
public static double
InverseRelativeDistanceEarthSun(int J);
Inverse relative distance Earth-Sun
Eq. (23)
- J number of the day in the year (DOY) [day]
returns inverse relative distance d_r []
public static double
SolarDeclination(int J);
Solar declination
Eq. (24)
- J number of the day in the year (DOY) [day]
returns solar declination delta [rad]
public static double
SunsetHourAngle(double phi, double delta);
Sunset hour angle
Eq. (25)
- phi latitude [rad]
- delta solar declination [rad]
returns sunset hour angle omega_s [rad]
public static double
ExtraterrestrialRadiationDiurnal(double d_r, double
delta, double phi, double omega_1, double omega_2);
Diurnal extraterrestrial radiation
Eq. (29(
- d_r
- delta
- phi
- omega_1
- omega_2
returns public static double
SolarTimeAngleBeginning(double t_l, double omega);
Solar time angle at beginning of period
Eq. (29)
- t_l length of calculation period [h]
- omega solar time angel at midpoint of hourly or shorter period [rad]
returns solar time angle at beginning omega_1 [rad]
public static double
SolarTimeAngleEnd(double t_l, double omega);
Solar time angle at end of period
Eq. (30)
- t_l length of calculation period [h]
- omega solar time angel at midpoint of hourly or shorter period [rad]
returns solar time angle at end omega_2 [rad]
public static double
SolarTimeAngleMidpoint(double t, double L_z, double L_m,
double S_c);
Solar time angel at midpoint of period
Eq. (31)
- t standard clock time at the midpoint of the period [h]
- L_z longitude of the center of the local time zone [degree]
- L_m longitude of the measurement site [degree]
- S_c seasonal correction for solar time [h]
returns public static double
SeasonalCorrectionSolarTime(int J);
Seasonal correction for solar time
Eq. (32) and (33)
*
returns seasonal correction S_c [hour]
public static double
DaylightHours(double omega_s);
Dayligth hours
Eq. (34)
- omega_s sunset hour angle [rad]
returns daylight hours N
public static double
SolarRadiation(double R_a, double n, double N, double
a_s, double b_s);
Calculates Solar Radiation from sunshine hours
Eq. (35)
- n actual duration of sunshine [h]
- N maximum possible duration of sunshine/daylight hours [h]
- R_a extraterrestrial radiation [MJ m-2 day-1]
- a_s regression constant, expressing the fraction of extrater. rad. reaching the earth on overcast day n=0
- b_s regression slope, a_s+b_s is the fraction of extrater. rad. reaching the earth on clear days n=N
returns solar or shortwave radiation R_s [MJ m-2 day-1]
public static double
ClearSkyRadiationWithAngstromVariables(double R_a,
double a_s, double b_s);
Calculates the clear-sky solar radiation when values for a_s and b_s are available
Eq. (36)
- R_a extraterrestrial radiation [MJ m-2 day-1]
- a_s regression constant, expressing the fraction of extrater. rad. reaching the earth on overcast day n=0
- b_s regression slope, a_s+b_s is the fraction of extrater. rad. reaching the earth on clear days n=N
returns Clear-sky solar radiation R_so when N=n [MJ m-2 day-1]
public static double
ClearSkyRadiation(double R_a, double z);
Calculates the clear-sky solar radiation when values for a_s and b_s are not available
Eq. (37)
- R_a extraterrestrial radiation [MJ m-2 day-1]
- z elevation above sea level [m]
returns Clear-sky solar radiation R_so when N=n [MJ m-2 day-1]
public static double
NetShortwaveRadiation(double R_s, double alpha);
Net solar or net shortwave radiation
Eq. (38)
Calculates the amount of solar radiation that is not reflected.
- incoming solar radiation [MJ m-2 day-1]
- alpha albedo or canopy reflection coefficient []
returns net shortwave radiation R_ns [MJ m-2 day-1]
public static double
NetSolarRadiation(double R_s);
Net shortvawe radiation resulting from balance of incoming and reflected solar radiation
Eq. (38)
Calculates the amount of solar radiation that is not reflected.
Albedo coefficient alpha is 0.23 for the hypothetical grass reference crop.
- R_s incoming solar radiation [MJ m-2 day-1]
returns net solar or net shortwave radiation R_ns [MJ m-2 day-1]
public static double
NetLongwaveRadiation(double R_s, double R_so, double
e_a, double T_max, double T_min);
Net longwave radiation
Eq. (39)
- R_s solar or shortwave radiation [MJ m-2 day-1]
- R_so Clear-sky solar radiation when N=n [MJ m-2 day-1]
- e_a actual vapour pressure [kPa]
- T_max maximum of day temperature [°C]
- T_min minimum of day temperature [°C]
returns net longwave radiation R_nl [MJ m-2 day-1]
public static double
NetLongwaveRadiationHourly(double R_s, double R_so,
double e_a, double T);
Net longwave radiation
Eq. (39) hourly
- R_s solar or shortwave radiation [MJ m-2 hour-1]
- R_so Clear-sky solar radiation when N=n [MJ m-2 hour-1]
- e_a actual vapour pressure [kPa]
- T temperature [°C]
returns net longwave radiation R_nl [MJ m-2 hour-1]
public static double
NetRadiation(double R_ns, double R_nl);
Net radiation (difference between incoming shortwave and outgoing longwave radiation)
Eq. (40)
Remark: equation works also for hourly values.
When R_ns and R_nl are in [MJ m-2 hour-1], the resulting
net radiation R_n is also in [MJ m-2 hour-1]
- R_ns net solar radiation [MJ m-2 day-1]
- R_nl net longwave radiation [MJ m-2 day-1]
returns net radiation R_n [MJ m-2 day-1]
public static double
SoilHeatFluxHourlyDaylight(double R_n);
Soil heat flux for hourly periods during daylight periods
Eq. (45)
returns hourly soil heat flux G_hr [MJ m-2 hour-1]
public static double
SoilHeatFluxHourlyNighttime(double R_n);
Soil heat flux for hourly periods during nighttime periods
Eq. (46)
returns hourly soil heat flux G_hr [MJ m-2 hour-1]
public static double
SolarRadiationFromExtraterrestrialRadiationAndTemp(
double R_a, double T_max, double T_min, double k_Rs);
Estimates solar radiation by extraterrestrial radiation and temperature
Eq. (50)
- R_a extraterrestrial radiation [MJ m-2 day-1]
- T_max maximum of day temperature [°C]
- T_min minimum of day temperature [°C]
- k_Rs adjustment coefficient between 0.16 (interior locations) and 0.19 (coastal locations) [°C-.5]
returns solar radiation R_s [MJ m-2 day-1]
public static double
ReferenceEvapoTranspirationByExtraterrestrialRadiation(
double R_a, double T_max, double T_min);
Estimates the reference evapo transpiration by extraterrestrial radiation and temperature
Eq. (52)
- R_a extraterrestrial radiation (evaporation equivalent) [mm day-1]
- T_max maximum of day temperature [°C]
- T_min minimum of day temperature [°C]
returns ET0 crop reference evapotranspiration ET0 [mm day-1]
public static double
ReferenceEvapoTranspirationFromSolarRadiation(double
R_s, double T_max, double T_min);
Estimates the reference evapo transpiration by solar radiation and temperature
Eq. (52) & Eq. (50) with k_Rs=0.17
see: Hargreaves, Allen, 2003, History and Evaluation of Hargreaves Evapotranspiration Equation: Eq. (3)
- R_s solar radiation (evaporation equivalent) [mm day-1]
- T_max maximum of day temperature [°C]
- T_min minimum of day temperature [°C]
returns ET0 crop reference evapotranspiration ET0 [mm day-1]
public static double
ReferenceEvapoTranspirationHourly(double R_n, double G,
double T_hr, double Delta, double gamma, double e_0, double e_a, double
u2);
Calculates hourly reference evapotranspiration
Eq. (53)
- R_n net radiation at the grass surface [MJ m-2 hour-1]
- G soil heat flux density [MJ m-2 hour-1]
- T_hr mean hourly air temperature [°C]
- Delta saturation slope vapour pressure curve at T_hr [kPa °C-1]
- gamma psychrometric constant [kPa °C-1]
- e_0 saturation vapour pressure at air temperature T_hr [kPa]
- e_a average hourly actual vapour pressure [kPa]
- u2 average hourly wind speed [m s-1]
returns reference evapotranspiration ET_0 [mm h-1]
public static double
ActualVapourPressureFromRelativeHumidityHourly(double
e_0, double RH_hr);
Estimates hourly actual vapour pressure from hourly relative humidity
Eq. (54)
returns public static double
AdjustedKCoefficientToWindAndHumidity(double K_c,
double u2, double RH_min, double h);
Adjustment of coefficient in climates where RH_min differs from 45% or where u2 is larger or smaller than 2 m/s
Eq. (62)
Same formula is used to adjust
K_cmid [Eq. (62)], K_cend [Eq. (65)], K_cb [Eq. (70)], K_cmax [Eq. (72)], K_cbfull [Eq. (99)]
returns K_c adjusted coefficient
public static double
UpperLimitKCoefficient(double K_cb, double u2, double
RH_min, double h);
Upper limit on the evaporation and transpiration from any cropped surface
Eq. (72)
- K_cb basal crop coefficient
- u2 mean value for daily wind speed at 2m height over grass during calculation period [m s-1]
- RH_min mean value for daily minimum relative humidity during calculation period [%]
- h mean maximum plant height during the period of calculation [m]
returns K_cmax upper limit
public static double
ExposedAndWettedSoilFraction(double f_c, double f_w);
Exposed and wetted soil fraction
Eq. (75)
- f_c average fraction of soil covered (or shaded by vegetation)
- f_w average fraction of soil wetted by irrigation or precipitation
returns f_ew exposed and wetted soil fraction
public static double
VegetationCoveredSoilFraction(double K_cb, double
K_cmin, double K_cmax, double h);
Effective fraction of soil covered by vegetation
Eq. (76)
- K_cb basal crop coefficient for particular day
- K_cmin minimum K_c for dry bare soil with no ground cover
- K_cmax maximum K_c immediately following wetting (Eq. 72)
- h mean plant height [m]
returns f_c effective fraction of soil covered by vegetation
public static double
KCoefficientByLAI(double K_cmin, double K_cbfull,
double LAI);
Estimated basal K_cb during the mid-season when plant densitiy is lower than full cover
Eq. (97)
- K_cmin minimum K_c for bare soil
- K_cbfull basal K_cb for for vegetation having full ground cover
- LAI actual leaf area index [m-2 m-2]
returns Estimated basal K_cb during the mid-season when plant densitiy is lower than full cover
}