Class BelowgroundAllocationFactor

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.experimental.intercropping.BelowgroundAllocationFactor
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

public class BelowgroundAllocationFactor extends net.simplace.sim.model.FWSimComponent
Calculates factors for below ground allocation of two crops from their root distribution.

The module uses a straigthforward approach:

  • Root Length Densities (RLD) and Root Restriction Factors (RRF) are scaled according to the area covered by each crop
  • Common RLD and RRF are just the sum of the scaled RLDs and RRFs
  • Below ground allocation factors are proportional to the scaled RRFs

Calculation

Root Length Densities per layer $rld_{1,i}, rld_{2,i}$ and are scaled to the coresponding area fractions $a_1, a_2$ occupied by the two crops and the sum of both is calculated.

\[ rld_i = rld_{1,i} \cdot a_1 + rld_{2,i} \cdot a_2 \]

Same holds for Root Restriction Factors per Layer $rrf_{1,i}, rrf_{2,i}$ \[ rrf_i = rrf_{1,i} \cdot a_1 + rrf_{2,i} \cdot a_2 \]

The maximum rooted layer is the biggest layer number, where Root Length Density is greater than 0. \[ n_{max} = max\{i | rld_i > 0\} \]

To calculate the allocations factors $f_1, f_2$, first the total sum of root restriction factors is calculated \[ s = \sum_i rrf_{1_i} + \sum_i rrf_{2,i} \]

then the factor per layer is the root restriction factor per layer divided by the sum

\[ f_{1,i} = \frac{rff_{1,i}}{s} \quad \quad f_{2,i} = \frac{rff_{2,i}}{s} \]

To get the total factors, the factor per per layers are summed up

\[ f_1 = \sum_i f_{1,i} \quad \quad f_2 = \sum_i f_{2,i} \]

References

Author:
G. Krauss
See Also:

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcAreaFraction1Area fraction covered by crop 1DOUBLE10.01.00.0
constantcAreaFraction2Area fraction covered by crop 2DOUBLE10.01.00.0
inputiRootDepth1Root depth of crop 1DOUBLEm0.0-0.0
inputiRootDepth2Root depth of crop 2DOUBLEm0.0-0.0
inputiRootLength1Root length per layer of crop 1DOUBLEARRAYm0.0--
inputiRootLength2Root length per layer of crop 2DOUBLEARRAYm0.0--
inputiRootLengthDensity1Root length density per layer of crop 1DOUBLEARRAYcm/cm30.0--
inputiRootLengthDensity2Root length density per layer of crop 2DOUBLEARRAYcm/cm30.0--
inputiRootRestrictionFactor1root restriction factor per layer of crop 1DOUBLEARRAY10.0--
inputiRootRestrictionFactor2root restriction factor per layer of crop 2DOUBLEARRAY10.0--
outFactor1Below ground allocation factor for crop 1DOUBLE10.01.00.0
outFactor1PerLayerBelow ground allocation factor for crop 1 per layerDOUBLEARRAY10.01.0-
outFactor2Below ground allocation factor for crop 2DOUBLE10.01.00.0
outFactor2PerLayerBelow ground allocation factor for crop 2 per layerDOUBLEARRAY10.01.0-
outMD95Highest layer number that contains roots (counting from 1)INT0-0
outMaxRootedLayerNumberHighest layer number that contains roots (counting from 0)INT0-0
outRootDepthRoot depthDOUBLEm0.0-0.0
outRootLengthRoot length per layer of both cropsDOUBLEARRAYm0.0--
outRootLengthDensityRoot length density per layer of both cropsDOUBLEARRAYcm/cm30.0--
outRootRestrictionFactorAveraged root restriction factor per layer of both cropsDOUBLEARRAY10.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

    Constructors
    Modifier
    Constructor
    Description
     
    called from class.forName()
    protected
    BelowgroundAllocationFactor(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 net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
     
    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
     

    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

    • BelowgroundAllocationFactor

      protected BelowgroundAllocationFactor(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 -
    • BelowgroundAllocationFactor

      public BelowgroundAllocationFactor()
      called from 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
    • init

      protected void init()
      Specified by:
      init in class net.simplace.sim.model.FWSimComponent
    • initVariables

      protected void initVariables()
    • process

      protected void process()
      Specified by:
      process in class net.simplace.sim.model.FWSimComponent
    • 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)
      Specified by:
      clone in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)