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

public class Phenology extends net.simplace.sim.model.FWSimComponent
Lintul5 - Simple generic model for simulation of crop growth - Phenology part

Introduction

The sim components in the package lintul5 implement the Lintul5 algorithms from (L5). They are designed to reproduce same results (up to rounding errors) as the original FST program.

The original model is subdivided into multiple sim components (which should be used in the following order to be as close as possible to the original algorithm).

  1. Irradiation
  2. PotentialEvapoTranspiration
  3. WaterBalance
  4. Phenology
  5. RadiationUseEfficiency
  6. Lintul5

Daylength calculation is performed by the transformer component AstronomicParametersTransformer

Phenology component calculates the phenology part

Description

The component calculates phenology according to original model's CROPP() routine.

It takes inputs from the AstronomicParametersTransformer.

It's outputs are used by WaterBalance, RadiationUseEfficiency and Lintul5.

For documentation of the algorithms please consult the orginal documentation (L5)

Changes to original

Control / Program flow

Has additional inputs iDoSow and iDoHarvest. The main routine starts running when iDoSow is true and runs every day until iDoHarvest is true.

  • On iDoSow the model is (re)initialized and then the calculation is performed.
  • On iDoHarvest all the outputs/states/rates are reset to their defaults (mostly 0). No further calculation is performed.

Within the calculation, the component checks - as in original Lintul5 - whether it should start at planting or at emergence and begins phenology development when CURRENT.DOY equals cIDPL or cIDEM. Therefore you have to make sure that iDoSow occurs before or at cIDPL resp. cIDEM, otherwise development won't start.

Additional Outputs

For the different phenology events, the day of year and date are output. There are as well booleans that become true only on the day when the event occurs and booleans that stay true when the event occurs until resetting/re-initialisation.

CropCycleCount is incremented at every DoHarvest.

Vernalisation

The phenology model has included vernalisation as in (L4V). By default vernalisation is switched off, so the model calculates as original Lintul5. To switch on vernalisation, the user has to provide the adequate parameters for vernalisation and to set cIDSL to 2.

Changes to vernalisation

Introduced a lower limit for the vernalisation factor (see (O))

References

  • (L5) Joost Wolf, User guide for LINTUL5, Wageningen UR, Wageningen, 2012
  • (L4V) Joost Wolf, User guide for LINTUL4(V), Wageningen UR, Wageningen, 2012
  • (O) Ottman, M.J., Anthony Hunt, L., White, J.W., 2013. Photoperiod and vernalization effect on anthesis date in winter-sown spring wheat regions. Agronomy Journal 105, 1017-1025.
Author:
G. Krauss
See Also:

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcDTSMTBincrease in temperature sum as dependent on mean daily temperatureDOUBLEARRAY°C d---
constantcDVSIinitial development stage of crop (from 0 to 2)DOUBLE1--0.0
constantcIDEMDay of emergenceINT103660
constantcIDPLDay of plantingINT103660
constantcIDSLdevelopment from emergence to flowering depends on temperature (=0), temperature + day length (=1), temperature + day length + vernalisation (=2)INT1--0
constantcMinimalVernalisationFactorlower threshold for the vernalisation factorDOUBLE10.01.00.0
constantcPHOTTBtable of development rate reduction until flowering by daylengthDOUBLEARRAY1---
constantcPLstart at plantingBOOLEAN1--true
constantcPhotoperiodTableFactorCorrection factor of development rate in dependence of day length (c.f. PHOTTB)DOUBLEARRAY1-- 0.0 1.0 1.0 1.0
constantcPhotoperiodTableHourDay length for correction factor of development (c.f. PHOTTB)DOUBLEARRAYh-- 0.0 8.0 12.0 18.0
constantcTBASEMlower threshold temp. for temperature sum increase before emergenceDOUBLE°C-30.050.00.0
constantcTEFFMXmax. eff. temp. for temperature sum increase before emergenceDOUBLE°C-30.050.030.0
constantcTSUM1temperature sum required for vegetative period (from emergence to flowering)DOUBLE°C d0.07000.01050.0
constantcTSUM2temperature sum required for generative periodDOUBLE°C d0.07000.01000.0
constantcTSUMBranchingtemperature sum from emergence to branching (optional)DOUBLE°C d0.07000.0700.0
constantcTSUMEMrequired temperature sum for crop emergenceDOUBLE°C d0.07000.060.0
constantcTSUMMilkripenesstemperature sum from anthesis to milkripeness (optional)DOUBLE°C d0.07000.0700.0
constantcTsumIncrementTableMeanTempAverage temperature for daily increase in temperature (c.f. DTSMTB)DOUBLEARRAY°C-- -5.0 0.0 30.0 45.0
constantcTsumIncrementTableRateDaily increase in temperature sum as function of av. temp. (c.f. DTSMTB)DOUBLEARRAY°C-- 0.0 0.0 30.0 30.0
constantcVBASEVernalisation base thermal dayDOUBLEd--0.0
constantcVERNRTVernalisation factor dependend by average temperatureDOUBLEARRAY1---
constantcVERSATVernalisation max thermal dayDOUBLEd--0.0
constantcVernalisationDevStagemaximal devstage up to which vernalisation is appliedDOUBLE1--0.3
constantcVernalisationTableMeanTempMean Temperature for vernal day rate (c.f. VERNRT)DOUBLEARRAY°C-- 0.0 1.0
constantcVernalisationTableRateVernal day rate as function of mean temperature (c.f. VERNRT)DOUBLEARRAY1-- 1.0 1.0
inputiDDLPPhotoperiodic daylengthDOUBLEh--0.0
inputiDoHarvestharvestingBOOLEAN1--false
inputiDoInitializereinitBOOLEAN1--false
inputiDoSowsowingBOOLEAN1--false
inputiTMAXmaximal air temperature during day (output of routine WEATHR)DOUBLE°C--0.0
inputiTMINminimal air temperature during day (output of routine WEATHR)DOUBLE°C--0.0
statesDVSdevelopment stage of crop (from 0 to 2)DOUBLE10.0-0.0
statesTSULPtemperature sum from sowing/plantingDOUBLE°C d0.0-0.0
statesTSUMtemperature sum from emergenceDOUBLE°C d0.0-0.0
statesTSUMLtemperature sum from emergence inclusive day length effectDOUBLE°C d0.0-0.0
statesVERNvernalisation daysDOUBLEd--0.0
raterDTSULPincrease in temperature sum from planting or sowingDOUBLE°C--0.0
raterDTSUMactual increase in temperature sum from emergence without reduction (RDAYL)DOUBLE°C--0.0
raterDTSUMLactual increase in temperature sum from emergence with reduction for day length (RDAYL)DOUBLE°C--0.0
raterDVRrate of phenological developmentDOUBLEd-1--0.0
raterRVERNRvernal day increase rateDOUBLE1--0.0
outAnthesisDOYDOY of AnthesisINT11366-
outAnthesisDateDate of AnthesisDATE1---
outBranchingDOYDOY of BranchingINT11366-
outBranchingDateDate of BranchingDATE1---
outCropCycleCountPeriod of SowingINT1010000
outEMERGhas emergedBOOLEAN1--false
outEmergenceDOYDOY of EmergenceINT11366-
outEmergenceDateDate of EmergenceDATE1---
outFLOWhas floweredBOOLEAN1--false
outHasBranchedhas branchedBOOLEAN1--false
outIDEMERGDay of emergenceINT1--0
outIsAnthesistrue if Anthesis dateBOOLEAN1--false
outIsBranchingtrue if Anthesis dateBOOLEAN1--false
outIsEmergencetrue if Emergence dateBOOLEAN1--false
outIsMaturitytrue if maturity dateBOOLEAN1--false
outIsMilkripenesstrue if milkripeness dateBOOLEAN1--false
outIsPhenologyEventtrue if sowing/emergence/anthesis/maturity dateBOOLEAN1--false
outIsSowingtrue if Sowing dateBOOLEAN1--false
outMATURITYis matureBOOLEAN1--false
outMILKRIPENESSmilkripeness has occuredBOOLEAN1--false
outMaturityDOYDOY of MaturityINT11366-
outMaturityDateDate of MaturityDATE1---
outMilkripenessDOYDOY of MaturityINT11366-
outMilkripenessDateDate of MaturityDATE1---
outSOWis sownBOOLEAN1--false
outSowingDOYDOY of SowingINT11366-
outSowingDateDate of SowingDATE1---
outVernalisationFactorvernalisation factorDOUBLE10.01.00.0
outWithCropcrop is presentBOOLEAN1--false
  • 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()
    Phenology(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 void
     
    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
     
    protected void
     
    protected void
     
    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

    • Phenology

      public Phenology(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 -
    • Phenology

      public Phenology()
      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()
    • initValues

      protected void initValues()
    • initOnSowing

      protected void initOnSowing()
    • initOnFirstCalculationDay

      protected void initOnFirstCalculationDay()
    • resetOnHarvest

      protected void resetOnHarvest()
    • process

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

      protected void CalculatePhenology()
    • 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)