Class Co2InfluenceOnTranspirationHourly
- All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer
\(CO_2\) calculation
The actual \(CO_2\) concentration in the atmosphere is calculated by a linear function based on the \(CO_2\) concentration (cStartValue) in the start year (cStartYear) and the slope (cSlope).
\[ \begin{equation} CO_2(Year) = Slope \cdot (Year-StartYear) + StartValue \label{co2} \end{equation} \]Transpiration reduction
Transpiration is reduced by a factor \(f(CO_2)\) that depends linearly on the actual \(CO_2\) concentration by:
\[ \begin{eqnarray} f(CO_2) & = & Transpiration\_m \cdot CO_2 + Transpiration\_b \label{fco2}\\ ReducedActualTranspiration & = & ActualTranspiration \cdot f(CO_2(year)) \label{redtrans} \end{eqnarray} \]where \Transpiration\_m\ and \Transpiration\_b\ are the slope and the intercept of the linear function being set to 1.1. and -0.0003 respectively by default. The reduced actual transpiration is calculated by multiplying the actual transpiration as determined by crop water demand and soil water supply with the reduction factor \(f(CO_2)\). This value of reduced actual transpiration is then compared with the potential crop transpiration PTRAN to calculate crop water stress (TRANRF) (e.g. in the SimComponent lintul.LintulWaterStress and the impact on crop growth rate.
Remarks
If you want to switch of the \(CO_2\) effect on transpiration (e.g. if you use want to use the same solution with projects to calculate with and without \(CO_2\) effect), then you can parameterize the component, so that the factor is always 1:
- set cTranspiration_m to 0
- set cTranspiration_b to 1
For clarity reasons however, it is recommended to use different solutions and to remove the SimComponent from the solution, if you don't want to calculate \(CO_2\) effect on transpiration.
References
Calculations due to LintulFAST. Further reference needed!
- Author:
- Gunther Krauss, Andreas Enders
Component Variables
| Content Type | Name | Description | Data Type | Unit | Min Value | Max Value | Default Value |
|---|---|---|---|---|---|---|---|
| constant | cSlope | Slope of the linear function calculating the \(CO_2\) concentration in the atmosphere \(\eqref{co2}\) | DOUBLE | ppm/a | 0.0 | 20.0 | 3.5 |
| constant | cStartValue | Start \(CO_2\) value of the linear function calculating the \(CO_2\) concentration \(\eqref{co2}\) | DOUBLE | ppm | 220.0 | 400.0 | 350.0 |
| constant | cStartYear | Start year of the linear function calculating the \(CO_2\) concentration \(\eqref{co2}\) | INT | a | 1930 | 2020 | 1990 |
| constant | cTranspiration_b | Intercept of the linear function calculating the reduction factor \(\eqref{fco2}\) | DOUBLE | 1 | 0.0 | 20.0 | 1.1 |
| constant | cTranspiration_m | Slope of the linear function calculating the reduction factor \(\eqref{fco2}\) | DOUBLE | ppm-1 | 0.0 | 20.0 | -3.0E-4 |
| input | iPotentialTranspirationHour | (Unreduced) potential transpiration | DOUBLEARRAY | mm/d | 0.0 | 20.0 | null null null null null null null null null null null null null null null null null null null null null null null null |
| out | PotentialTranspirationHourCO2 | Reduced potential transpiration by \(CO_2\) \(\eqref{redtrans}\) | DOUBLEARRAY | mm/d | 0.0 | 20.0 | null null null null null null null null null null null null null null null null null null null null null null null null |
-
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
ConstructorsConstructorDescriptionEmpty constructor used by class.forName() -
Method Summary
Modifier and TypeMethodDescriptionprotected net.simplace.sim.model.FWSimComponentclone(net.simplace.sim.util.FWSimVarMap aVarMap) /** creates a clone from this SimComponent for use in other threadsCreate 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 voidinit()initializes the fields by getting input and output FWSimVariables from VarMapprotected voidprocess()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
-
Co2InfluenceOnTranspirationHourly
public Co2InfluenceOnTranspirationHourly()Empty constructor used by class.forName()
-
-
Method Details
-
createVariables
Create the FWSimVariables as interface for this SimComponent- Specified by:
createVariablesin interfacenet.simplace.sim.util.FWSimFieldContainer- Specified by:
createVariablesin classnet.simplace.sim.model.FWSimComponent- See Also:
-
net.simplace.simulation.model.FWSimComponent#createVariables()
-
init
protected void init()initializes the fields by getting input and output FWSimVariables from VarMap- Specified by:
initin classnet.simplace.sim.model.FWSimComponent- See Also:
-
net.simplace.simulation.model.FWSimComponent#init()
-
process
protected void process()Process the algorithm and write the results back to VarMap- Specified by:
processin classnet.simplace.sim.model.FWSimComponent- See Also:
-
net.simplace.simulation.model.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:
fillTestVariablesin 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:
clonein classnet.simplace.sim.model.FWSimComponent- See Also:
-
net.simplace.simulation.model.FWSimComponent#clone(net.simplace.simulation.util.FWSimVarMap)
-