Class DiurnalWeatherHelper

java.lang.Object
net.simplace.sim.components.util.helper.diurnal.DiurnalWeatherHelper

public class DiurnalWeatherHelper extends Object
Methods for calculating daylength and diurnal values WIKI_START Includes methods for integration/normalization/rescaling of piecewise linear functions, as well as methods for calculating diurnal values for radiation and temperature. == Reference == (G) Goudriaan, Modeling Potential Crop Growth Processes, 1994, (revised version Nov. 2004) WIKI_END
Author:
Gunther Krauss
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static double
    RadiationIntensitySinBeta(double t, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation intensity [radiation per hour] at a specified hour using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
    static double
    RadiationIntensitySinBetaEffective(double t, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation intensity [radiation per hour] at a specified hour using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
    static double
    RadiationIntensitySine(double t, double radiation, double daylength)
    Calculates the radiation intensity [radiation per hour] at a specified hour using simple sine curve
    static double
    RadiationSinBeta(double t, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation accumulated from beginning of day till a specified hour using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
    static double
    RadiationSinBetaEffective(double t, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation accumulated from beginning of day till a specified hour using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
    static double
    RadiationSinBetaEffectiveFromTo(double t1, double t2, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation that is accumulated within the time span from a to b using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
    static double
    RadiationSinBetaFromTo(double t1, double t2, double radiation, double daylength, int doy, double a, double b, double integral)
    Calculates the radiation that is accumulated within the time span from a to b using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
    static double
    RadiationSine(double t, double radiation, double daylength)
    Calculates the radiation accumulated from beginning of day till a specified hour using simple sine curve
    static double
    RadiationSineFromTo(double t1, double t2, double radiation, double daylength)
    Calculates the radiation that is accumulated within the time span from t1 to t2 using simple sine curve
    sortWeather(Set<Map.Entry<Object,Object[]>> entrySet, net.simplace.sim.io.resources.FWSimResourceCache cache, String dateField, String minTempField, String maxTempField, String radiationField)
    Extracts radiation and temperature information from resource and add it to a sorted TreeSet of weather entries.
    static double
    Temperature(double t, double ptmax, double tmin, double tmax, double ntmin, double daylength, double p, double tc)
    Calculates temperature at hour t Calculates the temperature during day and night according to (G) eq. 3.9, 3.10

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DiurnalWeatherHelper

      public DiurnalWeatherHelper()
  • Method Details

    • sortWeather

      public static TreeSet<ComparableWeatherEntry> sortWeather(Set<Map.Entry<Object,Object[]>> entrySet, net.simplace.sim.io.resources.FWSimResourceCache cache, String dateField, String minTempField, String maxTempField, String radiationField)
      Extracts radiation and temperature information from resource and add it to a sorted TreeSet of weather entries.
      Parameters:
      entrySet -
      cache -
      dateField -
      minTempField -
      maxTempField -
      radiationField -
      Returns:
    • RadiationIntensitySine

      public static double RadiationIntensitySine(double t, double radiation, double daylength)
      Calculates the radiation intensity [radiation per hour] at a specified hour using simple sine curve
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      daylength - day length in hours [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      Returns:
      radiation intensity [J m^-2 h^-1, kJ m^-2 h^-1 or MJ m^-2 h^-1]
    • RadiationSine

      public static double RadiationSine(double t, double radiation, double daylength)
      Calculates the radiation accumulated from beginning of day till a specified hour using simple sine curve
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - day length in hours [h]
      Returns:
      radiation from begin of day until hour t [J m^-2, kJ m^-2 or MJ m^-2]
    • RadiationSineFromTo

      public static double RadiationSineFromTo(double t1, double t2, double radiation, double daylength)
      Calculates the radiation that is accumulated within the time span from t1 to t2 using simple sine curve
      Parameters:
      t1 - begin of interval (hour as decimal from 0 to 24)
      t2 - end of interval (hour as decimal from 0 to 24)
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - in hours [h]
      Returns:
      radiation accumulated during time span from t1 to t2 [J m^-2, kJ m^-2 or MJ m^-2]
    • RadiationIntensitySinBeta

      public static double RadiationIntensitySinBeta(double t, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation intensity [radiation per hour] at a specified hour using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      daylength - day length in hours [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      doy - day of year [day]
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation intensity [J m^-2 h^-1, kJ m^-2 h^-1 or MJ m^-2 h^-1]
    • RadiationSinBeta

      public static double RadiationSinBeta(double t, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation accumulated from beginning of day till a specified hour using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - day length in hours [h]
      doy - day of year [day]
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation from begin of day until hour t [J m^-2, kJ m^-2 or MJ m^-2]
    • RadiationSinBetaFromTo

      public static double RadiationSinBetaFromTo(double t1, double t2, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation that is accumulated within the time span from a to b using SinBeta curve Uses SinBeta curve as defined in (G), eq. 3.2
      Parameters:
      t1 - begin of interval (hour as decimal from 0 to 24) [h]
      t2 - end of interval (hour as decimal from 0 to 24) [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - in hours [h]
      doy -
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation accumulated during time span from a to b [J m^-2, kJ m^-2 or MJ m^-2]
    • RadiationIntensitySinBetaEffective

      public static double RadiationIntensitySinBetaEffective(double t, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation intensity [radiation per hour] at a specified hour using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      daylength - day length in hours [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      doy - day of year [day]
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation intensity [J m^-2 h^-1, kJ m^-2 h^-1 or MJ m^-2 h^-1]
    • RadiationSinBetaEffective

      public static double RadiationSinBetaEffective(double t, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation accumulated from beginning of day till a specified hour using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - day length in hours [h]
      doy - day of year [day]
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation from begin of day until hour t [J m^-2, kJ m^-2 or MJ m^-2]
    • RadiationSinBetaEffectiveFromTo

      public static double RadiationSinBetaEffectiveFromTo(double t1, double t2, double radiation, double daylength, int doy, double a, double b, double integral)
      Calculates the radiation that is accumulated within the time span from a to b using SinBeta*(1+0.4*SinBeta) curve Uses SinBeta*(1+0.4*SinBeta) curve with SinBeta as defined in (G), eq. 3.2
      Parameters:
      t1 - begin of interval (hour as decimal from 0 to 24) [h]
      t2 - end of interval (hour as decimal from 0 to 24) [h]
      radiation - daily total radiation [J m^-2, kJ m^-2 or MJ m^-2]
      daylength - in hours [h]
      doy -
      a - shift of SinBeta curve, (G) eq. 3.3 [-]
      b - amplitude of SinBeta curve, (G) eq. 3.3 [-]
      integral - surface under the SinBeta curve, (G) eq. 3.7 [h]
      Returns:
      radiation accumulated during time span from a to b [J m^-2, kJ m^-2 or MJ m^-2]
    • Temperature

      public static double Temperature(double t, double ptmax, double tmin, double tmax, double ntmin, double daylength, double p, double tc)
      Calculates temperature at hour t Calculates the temperature during day and night according to (G) eq. 3.9, 3.10
      Parameters:
      t - the hour (decimal from 0 to 24) [h]
      ptmax - daily maximum temperature of previous day [°C]
      tmin - daily minimum temperature [°C]
      tmax - daily maximum temperature [°C]
      ntmin - daily minimum temperature of next day [°C]
      daylength - in hours [h]
      p - time duration between solar noon and maximum temperature [h]
      tc - nocturnal time coefficient [h]
      Returns:
      temperature at hour t [°C]