Class SimpleAutomaticIrrigation

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.management.SimpleAutomaticIrrigation
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

public class SimpleAutomaticIrrigation extends net.simplace.sim.model.FWSimComponent
Simple automatic irrigation component to be used in combination with SimComponents calculating soil water balance in layered soils

This SimComponent requires input about daily available mobile water (WM) and retained water (WR) in each soil layer with the relevant soil depth from other SimComponents like SlimWater or ImprovedSoilWater. The depth of the soil moisture control section for triggering irrigation time and volume is defined by the variable cIrrigationTriggerDepth.

In a first step, the sum of available mobile soil water (iWM) and retained water (iWR) within the soil moisture control section is calculated (CumulativeAvailableWater) and compared to the difference between cSoilWaterFieldCapacity and cSoilWaterWiltingPoint for layers above cIrrigationTriggerDepth (cumulativeWRH).

If the ratio between CumulativeAvailableWater and cumulativeWRH is lower than cIrrigationTriggerFactor, then irrigation is triggered. The irrigation volume applied AppliedIrrigationDepth is calculated as the difference between available water capacity and actual available water over the whole soil depth. The calculated AppliedIrrigationDepth is added to the incoming iRAIN and the sum is output as RainAndIrrigation.

Thus, after each irrigation event the soil profile should be at field capacity if no run-off occurs. The module also determines whether surface run-off should be calculated (CalculateRunoff) if iRAIN exceeds cMaxRainWithoutRunoff (amount of rain below which no surface run-off can occur).

Author:
gk

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcIrrigationTriggerDepthdepth to sum plant available water to, to determine if irrigation is requiredDOUBLEm--0.0
constantcIrrigationTriggerFactorfraction of total plant available water in a given depth of soil below which irrigation is appliedDOUBLE1--0.0
constantcMaxRainWithoutRunoffmaximum precipitation at which no runoff is calculatedDOUBLEmm/d--0.0
constantcSoilLayerDepthdepth of soil layersDOUBLEARRAYm---
constantcSoilWaterFieldCapacityfield capacity per layerDOUBLEARRAYm3/m3---
constantcSoilWaterWiltingPointwilting point per layerDOUBLEARRAYm3/m3---
constantcUseLegacyCalculationOfMaxWRIf true, then the maximum of WR will be the difference of field capacity and wilting point. If false, then it's the difference of field capacity and half wilting point.BOOLEAN--true
inputiRAINprecipitationDOUBLEmm/d--0.0
inputiWMmobile water per layerDOUBLEARRAYmm---
inputiWRretained water per layerDOUBLEARRAYmm---
outAppliedIrrDepthdaily applied depth of irrigationDOUBLEmm/d--0.0
outCalculateRunoff-BOOLEAN--true
outCumulativeAppliedIrrDepthcumulative applied depth of irrigationDOUBLEmm--0.0
outRainAndIrrigationprecipitation + irrigationDOUBLEmm/d--0.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
    Constructor
    Description
    Empty constructor used by class.forName()
    SimpleAutomaticIrrigation(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)
    creates a clone from this SimComponent for use in other threads
    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
     

    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

    • SimpleAutomaticIrrigation

      public SimpleAutomaticIrrigation(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 -
    • SimpleAutomaticIrrigation

      public SimpleAutomaticIrrigation()
      Empty constructor used by 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
      See Also:
      • FWSimComponent.createVariables()
    • init

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

      protected void process()
      Specified by:
      process in class net.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 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)
      creates a clone from this SimComponent for use in other threads
      Specified by:
      clone in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)