Class LintulPhenology
- All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer
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 Type | Name | Description | Data Type | Unit | Min Value | Max Value | Default Value |
---|---|---|---|---|---|---|---|
constant | cAirTemperatureSumAnthesis | Temperature sum between crop emergence and anthesis | DOUBLE | °C d | 0.0 | 5000.0 | 650.0 |
constant | cAirTemperatureSumMaturity | Temperature sum between crop emergence and maturity | DOUBLE | °C d | 0.0 | 10000.0 | 1350.0 |
constant | cAirTemperatureSumMilkripeness | Temperature sum between crop emergence and milk ripeness | DOUBLE | °C d | 0.0 | 7000.0 | - |
input | cRelativeDayOfEmergence | Days between sowing and emergence | INT | d | 0 | 366 | 11 |
input | iDoHarvest | true at the day of harvest | BOOLEAN | 1 | - | - | false |
input | iDoSow | true at the day of sowing | BOOLEAN | 1 | - | - | false |
input | iRTEFFAnt | Daily effective temperature before anthesis | DOUBLE | °C | 0.0 | 40.0 | 0.0 |
input | iRTEFFMat | Daily effective temperature after anthesis | DOUBLE | °C | 0.0 | 40.0 | 0.0 |
state | sDevStage | Development stage of the crop (1.0=anthesis, 2.0=physiological maturity | DOUBLE | 1 | 0.0 | - | 0.0 |
state | sTSUM | Temperature sum as accumulated effective temperature after emergence | DOUBLE | °C d | 0.0 | 10000.0 | 0.0 |
rate | rDevStageRate | increment of the dev stage | DOUBLE | d-1 | 0.0 | - | 0.0 |
out | AnthesisDOY | DOY of Anthesis | INT | 1 | - | - | 0 |
out | AnthesisDate | Date of Anthesis | DATE | 1 | - | - | - |
out | CropCycleCount | Number of growth periods, starting with 0 and incremented on harvest. Used for crop rotation. | INT | 1 | 0 | 100 | 0 |
out | EmergenceDOY | DOY of Emergence | INT | 1 | - | - | 0 |
out | EmergenceDate | Date of Emergence | DATE | 1 | - | - | - |
out | IsAnthesis | true at the anthesis date | BOOLEAN | 1 | - | - | false |
out | IsEmergence | true at the emergence date | BOOLEAN | 1 | - | - | false |
out | IsMaturity | true at the maturity date | BOOLEAN | 1 | - | - | false |
out | IsMilkripeness | true at the milkripeness date | BOOLEAN | 1 | - | - | false |
out | IsPhenologyEvent | true if either sowing/emergence/anthesis/maturity date occured | BOOLEAN | 1 | - | - | false |
out | IsSowing | true at the sowing date | BOOLEAN | 1 | - | - | false |
out | MaturityDOY | DOY of Maturity | INT | 1 | - | - | 0 |
out | MaturityDate | Date of Maturity | DATE | 1 | - | - | - |
out | MilkripenessDOY | DOY of Milkripeness | INT | 1 | - | - | 0 |
out | MilkripenessDate | Date of Milkripeness | DATE | 1 | - | - | - |
out | RTEFF | Daily effective temperature used to calculate the temperature sum and development stage at a given day | DOUBLE | °C | 0.0 | 40.0 | 0.0 |
out | SowingDOY | DOY of Sowing | INT | 1 | - | - | 0 |
out | SowingDate | Date of Sowing | DATE | 1 | - | - | - |
-
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 net.simplace.sim.model.FWSimComponent
clone
(net.simplace.sim.util.FWSimVarMap aVarMap) create the FWSimVariables as interface for this SimComponentfillTestVariables
(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck) called for single component test to check the components algorithm.protected void
init()
initializes the fields by getting input and output FWSimVariables from VarMapprotected void
process()
process the algorithm and write the results back to VarMapMethods 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
-
LintulPhenology
public LintulPhenology()Empty constructor used by class.forName()
-
-
Method Details
-
createVariables
create the FWSimVariables as interface for this SimComponent- 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()initializes the fields by getting input and output FWSimVariables from VarMap- Specified by:
init
in classnet.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 classnet.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 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) - Specified by:
clone
in classnet.simplace.sim.model.FWSimComponent
- See Also:
-
FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)
-