Class LintulPhenology

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.models.lintul.LintulPhenology
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

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

LintulPhenology.java calculates the development stage (DevStage) of a crop based on the ratio between accumulated degree days and the a user-defined, crop and cultivar specific temperature sum requirement . In addition, based on the development stage, the date and the day of the year (DOY) when certain phenology events occur (e.g. anthesis, physiological maturity) are determined .

anthesis

The phenological development of the crop starts with the emergence day. This day is either determined by increasing the day of the year (DOY) when sowing occurs by a user-specified number of days. The sowing date (DOY when sowing occurs) is specified in the SimComponent "Management". Crop development between emergence and anthesis is triggered by the accumulated temperature sum (TSUM). TSUM is increased daily by the rate of effective temperature until anthesis (RTEFFAnt), which is an input either from the simComponent WeatherTransformer or from the SimComponent VernalisationAndPhotoresponse (if effective temperature depends on photoperiod and/or vernalisation requirements). The effective temperature in the WeatherTransformer is calculated as the difference between the average daily air temperature (AirTemperatureMean) and the base temperature of the crop before anthesis (BaseTempBeforeAnt as defined in the crop property file). Only days where AirTemperatureMean > BaseTempBeforeAnt are accounted for. The ratio between actual TSUM at a given day and the air temperature sum to anthesis (AirTemperatureSumAnthesis) is added daily to the development stage index (DevStage) as

\[ \begin{eqnarray} DevStage & = & TSUM / AirTemperatureSumAnthesis \end{eqnarray} \]

maturity

Similarly, crop development between anthesis and maturity is triggered by the accumulated temperature sum (TSUM). From anthesis to maturity the daily rate of effective temperature (RTEFFMat) is an input from the SimComponent WeatherTransformer where RTEFFMat is depends on the difference between the average daily air temperature (AirTemperatureMean) and the base temperature of the crop after anthesis (BaseTempBeforeMat as defined in the crop property file). Only days where AirTemperatureMean > BaseTempBeforeMat are accounted for. Again, the ratio between actual TSUM at a given day and the air temperature sum from anthesis to maturity (AirTemperatureSumMaturity) is added daily to the development stage index (DevStage) as

\[ \begin{eqnarray} DevStage & = & 1 + TSUM / AirTemperatureSumAnthesis \end{eqnarray} \]

References: Goudriaan, H.H. Van Laar, 1994. Modelling Potential Crop Growth Processes, Kluwer Academic Publishers, Dordrecht (1994) 238 pp

Author:
Gunther Krauss, Andreas Enders, Thomas Gaiser Component for the Lintul crop model

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcAirTemperatureSumAnthesisTemperature sum between crop emergence and anthesisDOUBLE°C d0.05000.0650.0
constantcAirTemperatureSumMaturityTemperature sum between crop emergence and maturityDOUBLE°C d0.010000.01350.0
constantcAirTemperatureSumMilkripenessTemperature sum between crop emergence and milk ripenessDOUBLE°C d0.07000.0-
inputcRelativeDayOfEmergenceDays between sowing and emergenceINTd036611
inputiDoHarvesttrue at the day of harvestBOOLEAN1--false
inputiDoSowtrue at the day of sowingBOOLEAN1--false
inputiRTEFFAntDaily effective temperature before anthesisDOUBLE°C0.040.00.0
inputiRTEFFMatDaily effective temperature after anthesisDOUBLE°C0.040.00.0
statesDevStageDevelopment stage of the crop (1.0=anthesis, 2.0=physiological maturityDOUBLE10.0-0.0
statesTSUMTemperature sum as accumulated effective temperature after emergenceDOUBLE°C d0.010000.00.0
raterDevStageRateincrement of the dev stageDOUBLEd-10.0-0.0
outAnthesisDOYDOY of AnthesisINT1--0
outAnthesisDateDate of AnthesisDATE1---
outCropCycleCountNumber of growth periods, starting with 0 and incremented on harvest. Used for crop rotation.INT101000
outEmergenceDOYDOY of EmergenceINT1--0
outEmergenceDateDate of EmergenceDATE1---
outIsAnthesistrue at the anthesis dateBOOLEAN1--false
outIsEmergencetrue at the emergence dateBOOLEAN1--false
outIsMaturitytrue at the maturity dateBOOLEAN1--false
outIsMilkripenesstrue at the milkripeness dateBOOLEAN1--false
outIsPhenologyEventtrue if either sowing/emergence/anthesis/maturity date occuredBOOLEAN1--false
outIsSowingtrue at the sowing dateBOOLEAN1--false
outMaturityDOYDOY of MaturityINT1--0
outMaturityDateDate of MaturityDATE1---
outMilkripenessDOYDOY of MilkripenessINT1--0
outMilkripenessDateDate of MilkripenessDATE1---
outRTEFFDaily effective temperature used to calculate the temperature sum and development stage at a given dayDOUBLE°C0.040.00.0
outSowingDOYDOY of SowingINT1--0
outSowingDateDate of SowingDATE1---
  • 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()
  • Method Summary

    Modifier and Type
    Method
    Description
    protected net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
     
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    create the FWSimVariables as interface for this SimComponent
    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
    initializes the fields by getting input and output FWSimVariables from VarMap
    protected void
    process the algorithm and write the results back to VarMap

    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

    • LintulPhenology

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

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      create the FWSimVariables as interface for this SimComponent
      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()
      initializes the fields by getting input and output FWSimVariables from VarMap
      Specified by:
      init in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.init()
    • process

      protected void process()
      process the algorithm and write the results back to VarMap
      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)
      Specified by:
      clone in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)