Class EvapTranDemand

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

public class EvapTranDemand extends net.simplace.sim.model.FWSimComponent
EvapTranDemand.java estimates the potential crop transpiration and potential soil evaporation

EvapTranDemand.java estimates the potential crop transpiration and potential soil evaporation either from daily reference ET (REFET) measurements which are specified by the user or by a modified PENMAN approach.

Reference ET measurements (Citation to this section not found)

This approach assumes that daily observations of a reference ET (r.g. Class A Pan evaporation) are available. If the user-specified measured REFET (mm d-1) is used, the SimComponent calculates the potential crop transpiration (PTRAN in mm d-1) as

\[ \begin{eqnarray} PTRAN & = & REFET \cdot f \end{eqnarray} \]

where f is a function of the intercepted radiation (fractionalInterception) and of a FractionModifierFactor which is by default 1.2 but can be modified in the solution by the user. The fraction modifier assumes that the reference ET estimated from an open water surface (like Class A pan measurements) is lower than the reference ET from a well-water, dense vegetation cover. The radiation fraction intercepted by the crop (fractionalInterecption) is estimated with

\[ \begin{eqnarray} fractionalInterception & = & 1.0 - e^{-K \cdot LAI} \end{eqnarray} \]

where K is the extinction coefficient for photosynthetically active radiation (by default 0.6) and LAI is the leaf area index at a given day.

The potential soil evaporation (PEVAP in mm d-1) is then estimated as the difference between REFET and PTRAN:

\[ \begin{eqnarray} PEVAP & = & REFET - PTRAN \end{eqnarray} \]

Modified PENMAN approach (Van Oijen and Lefelaar, 2008)

The modified PENMAN approach calculates potential crop transpiration (PTRAN in mm d-1 or kg m-2 d-1) as

\[ \begin{eqnarray} PTRAN & = & (1.0 - e^{0.5 \cdot LAI}) \frac {NRADC \cdot \frac{SLOPE}{(SLOPE+0.067)} + 2.4 \cdot 10^{6} \cdot WDF \cdot (SVP - VP) \cdot PSYCH / (SLOPE + PSYCH)}{2.4\cdot 10^{6}} \end{eqnarray} \]

where PSYCH is the psychrometric constant (0.067 kPa °C-1) and, assuming 25% reflection from the crop canopy, NRADC (net radiation absorption rate by the crop in J m-2 d-1) is

\[ \begin{eqnarray} NRADC & = & DTR \cdot 10^{6} \cdot (1.0 - 0.25) - BOLTZM \cdot (DAVTMP+273.0)^{4} \cdot 86400 \cdot MAX(0.0, 0.55 \cdot (1.0- \frac{VP}{SVP})) \end{eqnarray} \]

with DTR as the daily solar radiation (J m-2 d-1), DAVTMP as the mean air temperature (°C), BOLTZM as Stefan-Boltzman constant (5.668 10^-8 J m-2 s-1 K-4), VP as the mean daily vapour pressure (kPa) and SVP as the saturated vapour pressure (kPa).

The slope of the saturation vapor pressure curve is calculated as

\[ \begin{eqnarray} SLOPE & = & 4158.6 \cdot \frac {SVP} {(DAVTMP+239.0)^{2}} \end{eqnarray} \]

and the wind function (WDF) is defined as

\[ \begin{eqnarray} WDF & = & 2.63 * (1.0 + 0.54 * WN) \end{eqnarray} \]

where WN is the average daily wind speed (m s-1) at a height of 2 m.

Potential soil evaporation (PEVAP in mm d-1 or kg m-2 d-1) is calculated as

\[ \begin{eqnarray} PEVAP & = & e^{(-0.5*LAI)} \cdot \frac{(NRADS \cdot \frac{SLOPE}{(SLOPE+PSYCH)} + 2.4 \cdot 10^{6} \cdot WDF \cdot (SVP - VP) \cdot \frac{PSYCH}{SLOPE + PSYCH}}{2.4\cdot 10^{6}} \end{eqnarray} \]

where NRADS is the net radiation absorption rate by the soil in J m-2 d-1 with

\[ \begin{eqnarray} NRADS & = & DTR \cdot 10^{6} \cdot (1.0 - 0.15) - BOLTZM \cdot (DAVTMP+273.0)^{4} \cdot 86400 \cdot MAX(0.0, 0.55 \cdot (1.0- \frac{VP}{SVP})) \end{eqnarray} \]

assuming 15% reflection from the soil surface.

References: van Oijen, M. and P. Leffelaar. 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, Thomas Gaiser

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcFractionModifierFactorUser-defined modifier to increase the intercepted radiation by default by 20% DOUBLE10.010.01.2
constantcKExtinction coefficient for photosynthetically active radiationDOUBLE10.01.00.6
constantcUseOpenPanEvaporationFlag to use the measured values of the reference ET (REFET)BOOLEAN1--true
inputiAirTemperatureMeanMean daily air temperatureDOUBLE°C-50.050.0-
inputiLAILeaf Area IndexDOUBLEm2/m20.010.0-
inputiOpenPanEvaporationObserved/measured open pan evaporationDOUBLEmm/d0.020.0-
inputiRAINDaily precipitation DOUBLEmm/d0.0400.0-
inputiRadiationDaily solar radiationDOUBLEMJ/(m2 d)0.040.0-
inputiVapourpressureDaily vapour pressure DOUBLEkPa0.020.0-
inputiWindspeedAverage daily wind speed at 2 m heightDOUBLEm/s0.050.0-
outPotentialEvapotranspirationSum of potential soil evaporation and crop transpiration as calculated by the modified PENMAN apporachDOUBLEmm/d0.022.00.0
outPotentialSoilEvaporationPotential soil evaporation according to PENMANDOUBLEmm/d0.020.00.0
outPotentialTranspirationPotential crop transpiration according to PENMAN DOUBLEmm/d0.020.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<?>>
    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

    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

    • EvapTranDemand

      public EvapTranDemand()
      Empty constructor used by class.forName()
  • Method Details

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      Create the FWSimVariables as interface for this SimComponent
      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)