Class HeatStressOnGrain

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.crop.heatstress.HeatStressOnGrain
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

public class HeatStressOnGrain extends net.simplace.sim.model.FWSimComponent

HeatStressOnGrain calculates the heat stress factor (HeatStressFactor) around anthesis (approx. 30 days around anthesis) based on the daily heat stress intensity. The day which day temperature is above certain threshold TempCritical (e.g. 27 °C for winter wheat) count as heated day. The highest daily heat stress intensity occur whenever day temperature is above limited temperature TempLimit (e.g. 40 °C for winter wheat). All equations documented in (T).

The critical and limit temperatures can be customized, as well as the number of days before and after anthesis, when stress should be taken into account.

Instead of providing the number of days, one can give the devstages when the heat stress period starts and ends. The number of days are then calculated from phenology.

Daily inputs are: min and max temperatures, dev stage, temperature sum, anthesis date and yield.

Daily stress factor

\( \begin{eqnarray} TDay_i & = & Tmax_i - \frac{Tmax_i-Tmin_i}{4} \\ DailyStressFactor_i & = & \max(0,\min(1,\frac{TDay_i - TempCritical}{TempLimit-TempCritical})) \\ \end{eqnarray} \)

Heat stress factor

\( \begin{eqnarray} CummulatedHeatStressFactor & = & \sum_{i=AnthesisDOY - DaysBeforeAnthesis}^{AnthesisDoy + DaysFromAnthesis} DailyStressFactor_i \\ HeatStressFactor & = & \frac{CummulatedHeatStressFactor}{DaysBeforeAnthesis + DaysFromAnthesis+1} \\ \end{eqnarray} \)

Adjusted yield

\( \begin{eqnarray} AdjustedYield & = & (1-HeatStressFactor) \cdot Yield \\ \end{eqnarray} \)

References:

(T) Teixeira, E., Fischer, G., Velthuizen, H., Walter, C., Ewert, F. 2013. Global hot-spots of heat stress on agricultural crops due to climate change. Agriculture and Forest meteorology, 170:206-2015.

Author:
Gunther Krauss, Ehsan Eyshi Rezaei "eeyshire@uni-bonn.de"

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcBeginDevStageDevelopment stage before anthesis which thermal sensitive period startDOUBLE1--0.8
constantcDaysBeforeAnthesisThermal sensitive days before anthesisINT1--0
constantcDaysFromAnthesisThermal sensitive days after anthesisINT1--0
constantcEndDevStageDevelopment stage before anthesis which thermal sensitive period endDOUBLE1--1.3
constantcTempCriticalCritical temperature threshold to start of heat stressDOUBLE°C--27.0
constantcTempLimitThe temperature which maximum heat stress occursDOUBLE°C--40.0
inputiAnthesisDateAnthesis dateDATE1---
inputiDevStageDevelopment stageDOUBLE1--0.0
inputiTMaxDaily maximum temperatureDOUBLE°C--0.0
inputiTMinDaily minimum temperatureDOUBLE°C--0.0
inputiTempSumTemperature sumDOUBLE°C d--0.0
inputiYieldSimulated yield before heat stress adjustmentDOUBLEg/m2--0.0
statesAffectedDaysDays which heat stress occursINT1--0
statesCumulatedHeatStressFactorCumulative heat stress factorDOUBLE1--0.0
statesDaysNumber of days related to thermal sensitive periodINT1--0
statesTDayDay time temperatureDOUBLE°C--0.0
raterDailyHeatStressFactorDaily heat stress factorDOUBLE1--0.0
outAdjustedYieldAdjusted yield by heat stressDOUBLEg/m2--0.0
outBeginDOYBegin of thermal sensitive period (day of year format)INT1--0
outBeginDevStageBegin of thermal sensitive period (Development stage format)DOUBLE1--0.0
outBeginTempSumBegin of thermal sensitive period (temperature sum format)DOUBLE°C d--0.0
outEndDOYEnd of thermal sensitive period (day of year format)INT1--0
outEndDevStageEnd of thermal sensitive period (Development stage format)DOUBLE1--0.0
outEndTempSumEnd of thermal sensitive period (temperature sum format)DOUBLE°C d--0.0
outHeatStressFactorHeat stress factorDOUBLE1--0.0
  • Nested Class Summary

    Nested classes/interfaces inherited from class net.simplace.sim.model.FWSimComponent

    net.simplace.sim.model.FWSimComponent.TEST_STATE
  • Field Summary

    Fields inherited from class net.simplace.sim.model.FWSimComponent

    iFieldMap, iFrequence, iInputMap, iJexlRule, iMasterComponentGroup, iName, iOrderNumber, isComponentGroup, iSimComponentElement, iSimModel, iVarMap
  • Constructor Summary

    Constructors
    Constructor
    Description
    Empty constructor used by class.forName()
    HeatStressOnGrain(String aName, HashMap<String,net.simplace.sim.util.FWSimVariable<?>> aFieldMap, HashMap<String,String> aInputMap, org.jdom2.Element aSimComponentElement, net.simplace.sim.util.FWSimVarMap aVarMap, int aOrderNumber)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
    creates a clone from this SimComponent for use in other threads
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
     
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    fillTestVariables(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
    called for single component test to check the components algorithm.
    protected void
     
    protected void
     

    Methods inherited from class net.simplace.sim.model.FWSimComponent

    addVariable, bind, checkCondition, createSimComponent, createSimComponent, createSimComponent, createSimComponent, doProcess, getConstantVariables, getContentType, getCreateFormXML, getDescription, getEditFormXML, getFieldMap, getFrequence, getFrequenceRuleScript, getInputs, getInputVariables, getMasterComponentGroup, getName, getOrderNumber, getOutputVariables, getVariable, getVariableField, getVarMap, initialize, isConditionCheck, isVariableAvailable, performLinks, performLinks, readInputs, removeVariable, reset, runComponentTest, setVariablesDefault, toComponentLinkingXML, toDocXML, toGroupXML, toOutputDefinitionXML, toResourcesDataXML, toResourcesDefinitionXML, toString, toXML, writeVarInfos

    Methods inherited from class java.lang.Object

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

    • HeatStressOnGrain

      public HeatStressOnGrain(String aName, HashMap<String,net.simplace.sim.util.FWSimVariable<?>> aFieldMap, HashMap<String,String> aInputMap, org.jdom2.Element aSimComponentElement, net.simplace.sim.util.FWSimVarMap aVarMap, int aOrderNumber)
      Parameters:
      aName -
      aFieldMap -
      aInputMap -
      aSimComponentElement -
      aVarMap -
      aOrderNumber -
    • HeatStressOnGrain

      public HeatStressOnGrain()
      Empty constructor used by class.forName()
  • Method Details

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      Specified by:
      createVariables in interface net.simplace.sim.util.FWSimFieldContainer
      Specified by:
      createVariables in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.createVariables()
    • init

      protected void init()
      Specified by:
      init in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.init()
    • process

      protected void process()
      Specified by:
      process in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.process()
    • fillTestVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> fillTestVariables(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
      called for single component test to check the components algorithm.
      Specified by:
      fillTestVariables in class net.simplace.sim.model.FWSimComponent
      See Also:
      • net.simplace.sim.util.FWSimFieldContainer#fillTestVariables(int aParamIndex, TEST_STATE aDefineOrCheck)
    • clone

      protected net.simplace.sim.model.FWSimComponent clone(net.simplace.sim.util.FWSimVarMap aVarMap)
      creates a clone from this SimComponent for use in other threads
      Specified by:
      clone in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)