Class RunoffSurfaceCover
- All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer
This SimComponent calculates the surface cover fraction for runoff and erosion simulations. The algorithm follows the same formulations used in the APSIM (Agricultural Production Systems sIMulator) platform, which was adapted from the PERFECT model (Littleboy et al., 1992).
The soil cover fraction is expressed by the Beer-lambert law as a function of the leaf area index (LAI) and surface organic matter. Both variables can be obtained from a crop growth SimComponent (e.g., LintulBiomass) or prescribed in a management component. The calculation procedure for determining the surface cover fraction is described in the following equations:
\[ \begin{eqnarray} Cover_{Green} & = & 1 - e^{(-K_{Green} \cdot LAI_{Green})} \\ Cover_{Senes} & = & 1 - e^{(-K_{Senes} \cdot LAI_{Senes})} \\ Cover_{SurfOM} & = & 1 - e^{(-K_{SurfOM} \cdot LAI_{SurfOM})} \\ Cover_{Total} & = & 1 - [(1 - Cover_{Green}) \cdot (1 - Cover_{Senes})] \cdot CanHFac \\ CoverFraction & = & 1 - [(1 - Cover_{Total}) \cdot (1 - Cover_{SurfOM})] \\ \end{eqnarray} \]Where LAIGreen (iGreenLAI) is the green LAI (m2/m2); LAISenes (iSenesLAI) is the dry LAI still attached to the crop stems (m2/m2); SurfOM (iSurfOM) is the soil surface residues (t/ha); KGreen (cGreenK), KSenes (cSenesK), and KSurfOM (cSurfOMK) are the extinction coefficients for green LAI, for senesced LAI and SurfOM, respectively (all dimensionless); CoverGreen, CoverSenes and CoverSurfOM are the respective calculated cover fractions; CoverTotal is the total cover fraction of the canopy corrected by crop height; CanHFac is the correction factor (0-1) of CoverTotal as a function of canopy height (iHeight); CoverFraction (CoverFrac) is the final soil cover fraction (0-1) taking into account the crop canopy and soil surface residues. The CanHFac is calculated using an interpolation table consisting of canopy height (cCanopyFactorsHeight) and the respective reducing factors (cCanopyFactors). The effect of height is typically neglected (e.g., CanHFac=1) when the crop height is below 60 cm.
References
APSIM v7.1 source code. Last time accessed: Dec-14-2022. URL: https://github.com/APSIMInitiative/APSIMClassic
Littleboy, M., D.M. Silburn, D.M. Freebairn, D.R. Woodruff, G.L. Hammer, and J.K. Leslie. 1992. Impact of soil erosion on production in cropping systems. I. Development and validation of a simulation model. Aust. J. Soil Res. 30, 757-774.
Holzworth, Dean P., Neil I. Huth, Peter G. deVoil, Eric J. Zurcher, Neville I. Herrmann, Greg McLean, Karine Chenu, et al. "APSIM - Evolution towards a New Generation of Agricultural Systems Simulation." Environmental Modelling & Software 62 (December 2014): 327–350. https://doi.org/10.1016/j.envsoft.2014.07.009
- Author:
- Murilo Vianna, Gunther Krauss, gk@uni-bonn.de
Component Variables
Content Type | Name | Description | Data Type | Unit | Min Value | Max Value | Default Value |
---|---|---|---|---|---|---|---|
input | cGreenK | Extinction coefficient for green LAI | DOUBLE | 1 | 0.0 | 2.0 | 0.5 |
input | cSenesK | Extinction coefficient for senesced LAI | DOUBLE | 1 | 0.0 | 2.0 | 0.3 |
input | cSurfOMK | Extinction coefficient for organic matter surface | DOUBLE | 1 | 0.0 | 2.0 | 0.5 |
input | iGreenLAI | Green Leaf Area Index (LAI) | DOUBLE | m2/m2 | 0.0 | 20.0 | - |
input | iHeight | Crop Height | DOUBLE | mm | 0.0 | 10000.0 | - |
input | iSenesLAI | Senesced Leaf Area Index (LAI) | DOUBLE | m2/m2 | 0.0 | 20.0 | - |
input | iSurfOM | Soil surface organic matter | DOUBLE | g/m2 | 0.0 | 100000.0 | - |
out | CoverFrac | Surface cover fraction for runoff calculations | DOUBLE | 1 | 0.0 | 1000.0 | - |
-
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()
Initialises 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
-
RunoffSurfaceCover
public RunoffSurfaceCover()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:
-
net.simplace.simulation.model.FWSimComponent#createVariables()
-
init
protected void init()Initialises the fields by getting input and output FWSimVariables from VarMap- Specified by:
init
in 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:
process
in 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:
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:
-
net.simplace.simulation.model.FWSimComponent#clone(net.simplace.simulation.util.FWSimVarMap)
-