Class LintulDRUNIR

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.models.lintul.LintulDRUNIR
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

public class LintulDRUNIR extends net.simplace.sim.model.FWSimComponent

Soil water balance calculation during crop growth for a one layer soil profile including canopy interception, Drainage, RUNoff and IRrigation routines from LINTUL. The SimComponent LintulDRUNIR estimates the daily change in soil water content based on the volumes of crop water uptake, drainage water and surface run-off from a one layer soil profile. In addition, it allows the estimation of the amount of irrigation water needed for optimal crop water supply compared to rainfed conditions.

CAUTION: It is important to note that the SimComponent is only functional during the growing season of the crop. In multi-year simulations, the soil water content is reset to the user-defined initial value at sowing. In addition, this SimComponent assumes that the water content in the subsoil explored by the seminal roots is always at field capacity. This assumptions is not valid in all climate zones and soil types. Before using the SimComponent, the user should check whether it fits to the specific environmental and management conditions to be simulated. It is recommended to use this SimComponent only in humid climate zones and for single year simulations.

Soil water storage, canopy interception, drainage and surface run-off are calculated within the SimComponent, whereas crop water uptake is an input from the SimComponent EvapTran.java.

The calculation of the daily change in soil water content (WA in mm) requires the definition of the properties of the single soil layer related to water retention characteristics. The following soil hydraulic properties are required as input parameters averaged over the whole rootable soil profile (in m3 m-3) : WCWP = Soil water content (m3 m-3) at wilting point defined at a soil matric potential of -15 bar WCFC = Soil water content at field capacity (m3 m-3) defined at a soil matric potential of -0.33 bar WCST = Soil water content at saturation (m3 m-3) of the soil with water WCI =Initial soil water content (in m3 m-3 at the start of the simulation run). The amount of soil water stored for the crop at each of the soil matric potentials is calculated by multiplying the volumetric water contents with the root depth. Thus, the amount of soil water stored in the one layer soil profile at saturation, field capacity and wilting point depends directly on the rooting depth. In the case of multiple year runs, this initial volumetric soil water content is re-initialized each year on the day of sowing/planting (see explanation above)

The daily actual soil water content (WA in mm) is calculated each day depending on the root depth, the amount of water input into the soil (rainfall or irrigation minus canopy interception and surface runoff) and the amount of water lost from the soil profile (evporation, transpiration, drainage).

Canpopy interception (RNINTC)

The SimComponent assumes that canopy interception of the incoming rain depends linearly on the leaf area index of the crop with a factor of 0.25. If the daily amount of rainfall is lower than interception capacity, then rainfall is completely absorbed by the canopy and interception (RNINTC) is calculated by the following equation:

\[ \begin{eqnarray} RNINTC &=& Min(RAIN, 0.25 * LAI); \end{eqnarray} \]

If the daily amount of rainfall exceeds the interception capacity then RNINTC is equal to the interception capacity (0.25*LAI) and the excess water is reduced by surface-runoff and then it is added to the soil storage.

Surface-runoff (RUNOFF)

In LintulDRUNIR surface-runoff occurs when the sum of available soil pore space (actual soil water content (WA) - soil water content at saturation (WAST) and rainfall (RAIN in mm) exceeds the sum of canopy interception (RNINTC), soil evaporation (EVAP), crop transpiration (TRAN) and drainage (DRAIN):

\[ \begin{eqnarray} RUNOFF &=& MAX(0.0, (WA - WAST) + RAIN - (RNINTC + EVAP + TRAN + DRAIN); \end{eqnarray} \]

Deep Drainage (DRAIN)

Deep drainage (water percolating beyond the root zone) occurs when sum of rainfall and soil water content exceeds the sum of soil water content at field capacity, canopy interception, soil evaporation and crop transpiration.

\[ \begin{eqnarray} if & & DRAIN < DRATE: DRAIN = MAX(0.0, WA + RAIN - WAFC - RNINTC - EVAP- TRAN); \end{eqnarray} \] \[ \begin{eqnarray} if & & DRAIN >= DRATE: DRAIN &=& DRATE; \end{eqnarray} \]

However, if the deep drainage is greater than a maximum soil specific drainage rate (DRATE), then the deep drainage is reduced to DRATE. Thus, deep drainage is limited by the maximum drainage rate of the subsoil (DRATE, mm d-1). A high value of DRATE implies complete drainage. A low value implies restricted drainage and waterlogged conditions may occur during wet periods. A zero value means no drainage at all (impermeable layer below the root zone).

Estimation of irrigation requirements for optimum crop water supply

LintulDRUNIR contains a facility for easy comparison of crop growth under drought with growth under optimal water supply. When the irrigation-factor is set at unity (IRRIGF = 1), the model will simulate daily rates of irrigation (IRRIG, mm d-1) that exactly keep the soil at field capacity (WC = WCFC). The default setting of the irrigation-factor is zero, implying rain-fed conditions.

Calculation of daily change in soil water content (WA)

Due to the fact that the explorable soil volume increases daily during root expansion, the calculation of daily change in the amount of soil water has to take into account the additional amount of soil water gained by the daily root growth rate (RROOT in mm d-1). It is assumed that the water content of the additional proportion of subsoil explored by the vertical expansion of the roots is always at field capacity. This assumption depends on climate, soil and management conditions and the user therefore should carefully check their validity. Based on the water fluxes calculated above and the additional soil water volume (EXPLOR in mm) gained by the daily root growth rate (RateRootDepth in m d-1), LintulDRUNIR calculates the daily change in soil water content (RWA in mm) as

\[ \begin{eqnarray} RWA &=& (RAIN + IRRIG + EXPLOR) - (RNINTC + RUNOFF + TRAN + EVAP + DRAIN); \end{eqnarray} \]

Daily increase of root depth (RROTD in m d-1) is provided by the SimComponent LintulRoot.java.

Changes

Modifications compared to the FAST-Version

  • added input variables iDoSow and iDoHarvest to initialize at sowing and resetting at harvest.
  • added switch cNoSowHarvest. When true, then water content is initialized at first simulation day, not only on sowing.
  • added switch cLegacyMode. When true, the actual day's CropAvailWater is calculated from previous day's water content. The purpose is to compensate the differences that resulted by splitting the Linutul2-FAST algorithm into different modules. If one combines the component with non-Lintul2 components one can set the cLegacyMode to false.

References:

van Oijen, M. and P. Lefelaar. 2008. Lintul-2: water limited crop growth: A simple general crop growth model for water-limited growing conditions. Waageningen University, The Netherlands.

Author:
Gunther Krauss, Andreas Enders, Roelof Oomen, Thomas Gaiser

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcDRATEMaximum drainage rate (soil characteristic)DOUBLEmm/d0.0-50.0
constantcIRRIGF Irrigation rate relative to the rate needed to keep the soil water status at field capacity (WC=WCFC)DOUBLE10.01.00.0
constantcLegacyModeIf true, CropAvailWaterContent is calculated from previous day's GlobalWaterContent, else from actual day's GlobalWaterContentBOOLEAN1--true
constantcNoSowHarvestIf true, actual water content is set to initial value on first simulation dayBOOLEAN1--false
constantcWCFCSoil water content at field capacityDOUBLEm3/m30.01.00.23
constantcWCSTSoil water content at full saturationDOUBLEm3/m30.01.00.4
constantcWCWPSoil water content at wilting pointDOUBLEm3/m30.01.00.075
constantcWaterContentInitialInitial soil water content (at start of the simulation run)DOUBLEm3/m30.01.00.23
inputiActualSoilEvaporationevaporation (EVAP)DOUBLEmm/d0.020.0-
inputiActualTranspirationtranspiration (TRAN)DOUBLEmm/d0.020.0-
inputiDoHarvestIf plant is harvested on this dayBOOLEAN1--false
inputiDoSowIf plant is sown on this dayBOOLEAN1--false
inputiLAIleaf area indexDOUBLEm2/m20.011.0-
inputiRAINWater input through rainfallDOUBLEmm/d0.0100.0-
inputiRateRootDepthRate of increase in rooting depthDOUBLEm/d0.03.0-
inputiRootDepthRooting depthDOUBLEm0.05.0-
statesGlobalWaterContentActual amount of water in the soil (WA)DOUBLEmm0.01000.00.0
outCropAvailWaterContentWater available for crop (above wilting point)DOUBLEm3/m30.020.00.0
outDRAINDrainage rate below the root zoneDOUBLEmm/d0.0200.00.0
outIRRIGIrrigation rateDOUBLEmm/d0.0200.00.0
outRNINTCInterception of rain by the canopyDOUBLEmm/d0.020.00.0
outRUNOFFLoss of water by runoffDOUBLEmm/d0.02000.00.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()
  • 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
    initializes the fields by getting input and output FWSimVariables from VarMap
    protected void
    process the algorithm and write the results back to VarMap

    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

    • LintulDRUNIR

      public LintulDRUNIR()
      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()
      initializes the fields by getting input and output FWSimVariables from VarMap
      Specified by:
      init in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.init()
    • process

      protected void process()
      process the algorithm and write the results back to VarMap
      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)
      Specified by:
      clone in class net.simplace.sim.model.FWSimComponent
      See Also:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)