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
NetShortwaveRadiation(double R_s, double alpha);
Net solar or net shortwave 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.
- 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
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
NetSolarRadiation(double R_s);
Net shortvawe radiation resulting from balance of incoming and reflected solar radiation
Eq. (38)
- 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
NetRadiation(double R_ns, double R_nl);
Net radiation (difference between incoming shortwave and outgoing longwave radiation)
Eq. (40)
- 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
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
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
}