Class Phenology
- All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer
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).
- Irradiation
- PotentialEvapoTranspiration
- WaterBalance
- Phenology
- RadiationUseEfficiency
- 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 Type | Name | Description | Data Type | Unit | Min Value | Max Value | Default Value |
---|---|---|---|---|---|---|---|
constant | cDTSMTB | increase in temperature sum as dependent on mean daily temperature | DOUBLEARRAY | °C d | - | - | - |
constant | cDVSI | initial development stage of crop (from 0 to 2) | DOUBLE | 1 | - | - | 0.0 |
constant | cIDEM | Day of emergence | INT | 1 | 0 | 366 | 0 |
constant | cIDPL | Day of planting | INT | 1 | 0 | 366 | 0 |
constant | cIDSL | development from emergence to flowering depends on temperature (=0), temperature + day length (=1), temperature + day length + vernalisation (=2) | INT | 1 | - | - | 0 |
constant | cMinimalVernalisationFactor | lower threshold for the vernalisation factor | DOUBLE | 1 | 0.0 | 1.0 | 0.0 |
constant | cPHOTTB | table of development rate reduction until flowering by daylength | DOUBLEARRAY | 1 | - | - | - |
constant | cPL | start at planting | BOOLEAN | 1 | - | - | true |
constant | cPhotoperiodTableFactor | Correction factor of development rate in dependence of day length (c.f. PHOTTB) | DOUBLEARRAY | 1 | - | - | 0.0 1.0 1.0 1.0 |
constant | cPhotoperiodTableHour | Day length for correction factor of development (c.f. PHOTTB) | DOUBLEARRAY | h | - | - | 0.0 8.0 12.0 18.0 |
constant | cTBASEM | lower threshold temp. for temperature sum increase before emergence | DOUBLE | °C | -30.0 | 50.0 | 0.0 |
constant | cTEFFMX | max. eff. temp. for temperature sum increase before emergence | DOUBLE | °C | -30.0 | 50.0 | 30.0 |
constant | cTSUM1 | temperature sum required for vegetative period (from emergence to flowering) | DOUBLE | °C d | 0.0 | 7000.0 | 1050.0 |
constant | cTSUM2 | temperature sum required for generative period | DOUBLE | °C d | 0.0 | 7000.0 | 1000.0 |
constant | cTSUMBranching | temperature sum from emergence to branching (optional) | DOUBLE | °C d | 0.0 | 7000.0 | 700.0 |
constant | cTSUMEM | required temperature sum for crop emergence | DOUBLE | °C d | 0.0 | 7000.0 | 60.0 |
constant | cTSUMMilkripeness | temperature sum from anthesis to milkripeness (optional) | DOUBLE | °C d | 0.0 | 7000.0 | 700.0 |
constant | cTsumIncrementTableMeanTemp | Average temperature for daily increase in temperature (c.f. DTSMTB) | DOUBLEARRAY | °C | - | - | -5.0 0.0 30.0 45.0 |
constant | cTsumIncrementTableRate | Daily increase in temperature sum as function of av. temp. (c.f. DTSMTB) | DOUBLEARRAY | °C | - | - | 0.0 0.0 30.0 30.0 |
constant | cVBASE | Vernalisation base thermal day | DOUBLE | d | - | - | 0.0 |
constant | cVERNRT | Vernalisation factor dependend by average temperature | DOUBLEARRAY | 1 | - | - | - |
constant | cVERSAT | Vernalisation max thermal day | DOUBLE | d | - | - | 0.0 |
constant | cVernalisationDevStage | maximal devstage up to which vernalisation is applied | DOUBLE | 1 | - | - | 0.3 |
constant | cVernalisationTableMeanTemp | Mean Temperature for vernal day rate (c.f. VERNRT) | DOUBLEARRAY | °C | - | - | 0.0 1.0 |
constant | cVernalisationTableRate | Vernal day rate as function of mean temperature (c.f. VERNRT) | DOUBLEARRAY | 1 | - | - | 1.0 1.0 |
input | iDDLP | Photoperiodic daylength | DOUBLE | h | - | - | 0.0 |
input | iDoHarvest | harvesting | BOOLEAN | 1 | - | - | false |
input | iDoInitialize | reinit | BOOLEAN | 1 | - | - | false |
input | iDoSow | sowing | BOOLEAN | 1 | - | - | false |
input | iTMAX | maximal air temperature during day (output of routine WEATHR) | DOUBLE | °C | - | - | 0.0 |
input | iTMIN | minimal air temperature during day (output of routine WEATHR) | DOUBLE | °C | - | - | 0.0 |
state | sDVS | development stage of crop (from 0 to 2) | DOUBLE | 1 | 0.0 | - | 0.0 |
state | sTSULP | temperature sum from sowing/planting | DOUBLE | °C d | 0.0 | - | 0.0 |
state | sTSUM | temperature sum from emergence | DOUBLE | °C d | 0.0 | - | 0.0 |
state | sTSUML | temperature sum from emergence inclusive day length effect | DOUBLE | °C d | 0.0 | - | 0.0 |
state | sVERN | vernalisation days | DOUBLE | d | - | - | 0.0 |
rate | rDTSULP | increase in temperature sum from planting or sowing | DOUBLE | °C | - | - | 0.0 |
rate | rDTSUM | actual increase in temperature sum from emergence without reduction (RDAYL) | DOUBLE | °C | - | - | 0.0 |
rate | rDTSUML | actual increase in temperature sum from emergence with reduction for day length (RDAYL) | DOUBLE | °C | - | - | 0.0 |
rate | rDVR | rate of phenological development | DOUBLE | d-1 | - | - | 0.0 |
rate | rRVERNR | vernal day increase rate | DOUBLE | 1 | - | - | 0.0 |
out | AnthesisDOY | DOY of Anthesis | INT | 1 | 1 | 366 | - |
out | AnthesisDate | Date of Anthesis | DATE | 1 | - | - | - |
out | BranchingDOY | DOY of Branching | INT | 1 | 1 | 366 | - |
out | BranchingDate | Date of Branching | DATE | 1 | - | - | - |
out | CropCycleCount | Period of Sowing | INT | 1 | 0 | 1000 | 0 |
out | EMERG | has emerged | BOOLEAN | 1 | - | - | false |
out | EmergenceDOY | DOY of Emergence | INT | 1 | 1 | 366 | - |
out | EmergenceDate | Date of Emergence | DATE | 1 | - | - | - |
out | FLOW | has flowered | BOOLEAN | 1 | - | - | false |
out | HasBranched | has branched | BOOLEAN | 1 | - | - | false |
out | IDEMERG | Day of emergence | INT | 1 | - | - | 0 |
out | IsAnthesis | true if Anthesis date | BOOLEAN | 1 | - | - | false |
out | IsBranching | true if Anthesis date | BOOLEAN | 1 | - | - | false |
out | IsEmergence | true if Emergence date | BOOLEAN | 1 | - | - | false |
out | IsMaturity | true if maturity date | BOOLEAN | 1 | - | - | false |
out | IsMilkripeness | true if milkripeness date | BOOLEAN | 1 | - | - | false |
out | IsPhenologyEvent | true if sowing/emergence/anthesis/maturity date | BOOLEAN | 1 | - | - | false |
out | IsSowing | true if Sowing date | BOOLEAN | 1 | - | - | false |
out | MATURITY | is mature | BOOLEAN | 1 | - | - | false |
out | MILKRIPENESS | milkripeness has occured | BOOLEAN | 1 | - | - | false |
out | MaturityDOY | DOY of Maturity | INT | 1 | 1 | 366 | - |
out | MaturityDate | Date of Maturity | DATE | 1 | - | - | - |
out | MilkripenessDOY | DOY of Maturity | INT | 1 | 1 | 366 | - |
out | MilkripenessDate | Date of Maturity | DATE | 1 | - | - | - |
out | SOW | is sown | BOOLEAN | 1 | - | - | false |
out | SowingDOY | DOY of Sowing | INT | 1 | 1 | 366 | - |
out | SowingDate | Date of Sowing | DATE | 1 | - | - | - |
out | VernalisationFactor | vernalisation factor | DOUBLE | 1 | 0.0 | 1.0 | 0.0 |
out | WithCrop | crop is present | BOOLEAN | 1 | - | - | 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
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
protected net.simplace.sim.model.FWSimComponent
clone
(net.simplace.sim.util.FWSimVarMap aVarMap) creates a clone from this SimComponent for use in other threadsfillTestVariables
(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck) called for single component test to check the components algorithm.protected void
init()
protected void
protected void
protected void
protected void
process()
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
-
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
- Specified by:
createVariables
in interfacenet.simplace.sim.util.FWSimFieldContainer
- Specified by:
createVariables
in classnet.simplace.sim.model.FWSimComponent
- See Also:
-
FWSimComponent.createVariables()
-
init
protected void init()- Specified by:
init
in classnet.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 classnet.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 classnet.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 classnet.simplace.sim.model.FWSimComponent
- See Also:
-
FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)
-