Klasse SimpleRootResidues

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.soil.soilcn.SimpleRootResidues
Alle implementierten Schnittstellen:
net.simplace.sim.util.FWSimFieldContainer

public class SimpleRootResidues extends net.simplace.sim.model.FWSimComponent
Distributes NPK of dead roots to layers, include living roots on harvest.

The component takes daily dead root biomass per layer and adds living roots per layer on harvest.

NPK content of dead and living roots is distributed proportionally to the layers.

Calculation

Total dead root TDR and total living root biomass TLR are calculated from the inputs iDeadRootsRatePerLayer \(DR_i\) and iLivingRootsPerLayer \(LR_i\) \[ TDR = \sum_{i=1}^n DR_i \\ TLR = \sum_{i=1}^n LR_i \]

DeadRootsRatePerLayer \(R_i\) is calculated as:

\[ R_i = \begin{cases} DR_i + LR_i & \text{if } DoHarvest \\ DR_i & \text{else} \end{cases} \]

DeadRootsCRatePerLayer \(RC_i\) is calculated as:

\[ RC_i = \begin{cases} 0.5 \cdot DR_i + 0.5 \cdot LR_i & \text{if } DoHarvest \\ 0.5 \cdot DR_i & \text{else} \end{cases} \]

DeadRootsNRatePerLayer \(RN_i\) is calculated using iDeadRootsNRate \(DRN\) and iLivingRootsN \(LRN\):

\[ RN_i = \begin{cases} DR_i\cdot \frac{DRN}{TDR} + LR_i \cdot \frac{LRN}{TLR} & \text{if } DoHarvest \\ DR_i\cdot \frac{DRN}{TDR} & \text{else} \end{cases} \]

For P and K the P and K dead root rates are calculated accordingly:

\[ RP_i = \begin{cases} DR_i\cdot \frac{DRP}{TDR} + LR_i \cdot \frac{LRK}{TLR} & \text{if } DoHarvest \\ DR_i\cdot \frac{DRP}{TDR} & \text{else} \end{cases} \]

\[ RK_i = \begin{cases} DR_i\cdot \frac{DRK}{TDR} + LR_i \cdot \frac{LRK}{TLR} & \text{if } DoHarvest \\ DR_i\cdot \frac{DRK}{TDR} & \text{else} \end{cases} \]

Notice

The component is sensitive to the order. It has to run after root and plant NPK components, as it takes root biomass and NPK content as inputs.

On the other hand it uses the values also on harvest - when root and NPK components may have reset their states already.

A possible solution to this problem is to use following relative order

  1. root and plant NPK components
  2. harvest managmenet
  3. SimpleRootResidues
Autor:
Gunther Krauss, guntherkrauss@uni-bonn.de

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
inputiDeadRootsKRateDaily rate of dead roots KDOUBLEg/(m2 d)--0.0
inputiDeadRootsNRateDaily rate of dead roots NDOUBLEg/(m2 d)--0.0
inputiDeadRootsPRateDaily rate of dead roots PDOUBLEg/(m2 d)--0.0
inputiDeadRootsRatePerLayerDaily rate of dead roots per layerDOUBLEARRAYg/(m2 d)---
inputiDoHarvestIf true, living biomass that is not removed is added to the dead biomass rateBOOLEAN--false
inputiLivingRootsKWeight of roots KDOUBLEg/m2--0.0
inputiLivingRootsNWeight of roots NDOUBLEg/m2--0.0
inputiLivingRootsPWeight of roots PDOUBLEg/m2--0.0
inputiLivingRootsPerLayerWeight of roots per layerDOUBLEARRAYg/m2---
outDeadRootsCRatePerLayerDaily dead roots C rate per layer, possibly incremented by roots when plant harvestedDOUBLEARRAYg/(m2 d)---
outDeadRootsKRatePerLayerDaily dead roots K rate per layer, possibly incremented by roots when plant harvestedDOUBLEARRAYg/(m2 d)---
outDeadRootsNRatePerLayerDaily dead roots N rate per layer, possibly incremented by roots when plant harvestedDOUBLEARRAYg/(m2 d)---
outDeadRootsPRatePerLayerDaily dead roots P rate per layer, possibly incremented by roots when plant harvestedDOUBLEARRAYg/(m2 d)---
outDeadRootsRatePerLayerDaily dead roots rate per layer, possibly incremented by roots when plant harvestedDOUBLEARRAYg/(m2 d)---
  • Verschachtelte Klassen - Übersicht

    Von Klasse geerbte verschachtelte Klassen/Schnittstellen net.simplace.sim.model.FWSimComponent

    net.simplace.sim.model.FWSimComponent.TEST_STATE
  • Feldübersicht

    Von Klasse geerbte Felder net.simplace.sim.model.FWSimComponent

    iFieldMap, iFrequence, iInputMap, iJexlRule, iMasterComponentGroup, iName, iOrderNumber, isComponentGroup, iSimComponentElement, iSimModel, iVarMap
  • Konstruktorübersicht

    Konstruktoren
    Konstruktor
    Beschreibung
    Empty constructor used by class.forName()
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    protected net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
     
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    Create the FWSimVariables as interface for this SimComponent
    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
    Initializes the fields by getting input and output FWSimVariables from VarMap
    protected void
    Process the algorithm and write the results back to VarMap

    Von Klasse geerbte Methoden 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

    Von Klasse geerbte Methoden java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Konstruktordetails

    • SimpleRootResidues

      public SimpleRootResidues()
      Empty constructor used by class.forName()
  • Methodendetails

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      Create the FWSimVariables as interface for this SimComponent
      Angegeben von:
      createVariables in Schnittstelle net.simplace.sim.util.FWSimFieldContainer
      Angegeben von:
      createVariables in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.createVariables()
    • init

      protected void init()
      Initializes the fields by getting input and output FWSimVariables from VarMap
      Angegeben von:
      init in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.init()
    • process

      protected void process()
      Process the algorithm and write the results back to VarMap
      Angegeben von:
      process in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • 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.
      Angegeben von:
      fillTestVariables in Klasse net.simplace.sim.model.FWSimComponent
    • clone

      protected net.simplace.sim.model.FWSimComponent clone(net.simplace.sim.util.FWSimVarMap aVarMap)
      Angegeben von:
      clone in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)