Class CropEvapoTranspirationDualCoeff

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.evapotran.fao56.CropEvapoTranspirationDualCoeff
All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer

public class CropEvapoTranspirationDualCoeff extends net.simplace.sim.model.FWSimComponent
This SimComponent calculates the potential rates of crop transpiration and soil evaporation following the methods described in the FAO-56 bulletin (Allen et al., 1998). A brief description of the calculation procedure and important considerations is given below:

Although called "CropEvapoTranspiration DualCoeff", this SimComponent does not strictly follow the calculation steps described in Chapter 7 of Allen et al. (1998). This was done in good reason to accommodate the method for dynamic crop models simulations with the aim to have good estimates for potential crop transpiration and potential soil evaporation. The daily crop development index (iDVS) and leaf area index (iLAI) are used as proxy for crop development, whereas the iDoSow and iDoHarvest are Boolean variables to inform the time-step when either sowing or harvesting happen.

1. Calculation of potential crop transpiration

In this approach we use the basal crop coefficient method to calculate potential crop transpiration. Before sowing date, the basal crop coefficient (Kcb) is set to zero, and after sowing it is set to the cKcbIni parameter. When crop emerges (iDVS > 0.001), the Kcb is determined by equations 1 and 2 (Allen et al., 1998; DeJonge et al., 2017):

\[ \begin{eqnarray} KcbFull & = & cKcbMid + (0.04(cCharacteristicWindspeed-2) \nonumber \\ & &- 0.004(cCharacteristicMeanRelHumidity - 45))\left(\frac{cCropHeight}{3}\right)^{0.3} \\ Kcb & = & cKcbIni + (KcbFull - cKcbIni)(1 - e^{-cK \cdot iLAI}) \end{eqnarray} \]

Footnote: For definition of parameters see table below. Crop specific values for KcbMid and KcIni can be found in Allen et al. (1998). Please note the important consideration about equation (1) in the section 4.2 and the definition of cK (in equation 2) in section 4.3

2. Calculation of potential soil evaporation

To calculate potential soil evaporation this approach assumes that the soil evaporation reduction coefficient iK_r is always 1. The coefficient of soil evaporation (Ke) is calculated as a function of the maximum evapotranspiration rate (Kcmax) and wetted soil fraction. The Kcmax is assumed as "1.2" in standard conditions and it is not allowed to exceed Kcb+0.05 (equations 3 and 4):

\[ \begin{eqnarray} Kcmax & = & cKcbMid + (0.04(cCharacteristicWindspeed-2) \nonumber \\ & &- 0.004(cCharacteristicMeanRelHumidity - 45))\left(\frac{cCropHeight}{3}\right)^{0.3} \\ Kcmax & = & max(Kcmax, Kcb+0.05) \end{eqnarray} \]

Footnote: For definition of parameters see table below. Please note the important consideration about equation (3) in the section 4.2

After sowing day, a vegetation cover fraction (f_c) is calculated to scale Kcmax for the fraction of soil area that can be directly wetted (f_ew) by rainfall or irrigation events (Equation 5 and 6). A new variable is produced at this step, namely KeUpper, which represents the maximum soil evaporation considering the f_ew (equation 7). The Ke value is finally obtained as the difference between Kcmax and Kcb multiplied by the soil moisture reduction factor (iK_r), where Ke must not exceed the KeUpper (equation 8).

\[ \begin{eqnarray} f\_c & = & \left(\frac{max(Kcb - Kcmin, 0)}{Kcmax - Kcmin}\right) ^ {1 + 0.5 \cdot cCropHeight} \\ f\_ew & = & min(1-f\_c, f\_w) \\ KeUpper & = & Kcmax \cdot f\_ew \\ Ke & = & min(iK\_r \cdot (Kcmax - Kcb), KeUpper) \end{eqnarray} \]

Footnote: For definition of parameters see table below

3. Evapotranspiration rates

The daily evapotranspiration rates and corresponding crop transpiration and soil evaporation are calculated by multiplying the input reference evapotranspiration (iReferenceCropEvapotranspiration) with the Kcb and Ke (equations 9 to 12):

\[ \begin{eqnarray} PotentialTranspiration & = & Kcb \cdot iReferenceCropEvapotranspiration \\ PotentialSoilEvapCrop & = & Ke \cdot iReferenceCropEvapotranspiration \\ ETC & = & PotentialTranspiration + PotentialSoilEvapCrop \\ ETC\_adj & = & PotentialTranspiration \cdot iK\_s + PotentialSoilEvapCrop \end{eqnarray} \]

Footnote: For definition of parameters see table below

4. Important considerations

4.1 Evapotranspiration definitions

Both iK_r and iK_s factors are used in this SimComponent to scale the potential soil evaporation and potential transpiration rates. When either iK_r or iK_s is below 1, the outputs of this SimComponent no longer correspond to the potential rate of atmospheric demand. It is also important to note that the definition of crop evapotranspiration (ETC) implies that only the crop is under non-limiting water supply (iK_s=1), while soil evaporation can be reduced with the depletion of water in the topsoil (iK_r <=1) (Allen et al., 1998). As the goal of this SimComponent is to determine potential crop transpiration and potential soil evaporation we recommend that both iK_r and iK_s is kept equal to 1.

4.2 Atmospheric corrections

The procedure applies a correction for non-standard conditions of the atmosphere and canopy height conditions in equations 1 and 3. We recommend keeping the default values of cCharacteristicWindspeed, cCharacteristicMeanRelHumidity and cCropHeight due to the uncertainty arising from the modifications made to accommodate this method for dynamic crop growth. A further discussion and test are provided in Review and testing of the CropEvapoTranspirationDualCoeff SimComponent in SIMPLACE and Presentation: Dual Crop Coefficient - SimComponent Evaluation and Documentation Review

4.3 The relationship between Kcb and LAI

While the equation 2 is useful to scale Kcb as a function of iLAI modelers should note that the term \(1 – e^{-cK \cdot iLAI}\) is mainly introduced to scale Kcb from cKcbini to KcbFull. Therefore, when observed data of crop transpiration and LAI is not available: the cK value should be considered default (0.7) as proposed by Allen et al. (1998) and the cKcbMid should represent the potential transpiration rate at full canopy development. The value of cK should only be adjusted to meet the observed relationship between crop transpiration and LAI. A further discussion is given in Review and testing of the CropEvapoTranspirationDualCoeff SimComponent in SIMPLACE and Presentation: Dual Crop Coefficient - SimComponent Evaluation and Documentation Review

References

Allen, Richard G., Luis S. Pereira, Dirk Raes, Martin Smith, and Others. 1998. "Crop Evapotranspiration-Guidelines for Computing Crop Water Requirements-FAO Irrigation and Drainage Paper 56." Fao, Rome 300 (9): D05109.

DeJonge, Kendall C., and Kelly R. Thorp. 2017. "Implementing Standardized Reference Evapotranspiration and Dual Crop Coefficient Approach in the DSSAT Cropping System Model." Transactions of the ASABE 60 (6): 1965–81.

Review and testing of the CropEvapoTranspirationDualCoeff SimComponent in SIMPLACE

Presentation: Dual Crop Coefficient - SimComponent Evaluation and Documentation Review

Author:
Heidi Webber, Gunther Krauss, gk@uni-bonn.de, Roelof Oomen

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcCharacteristicMeanRelHumidityRegion's characteristic mean daily min relative humidity for mid/late growth seasonDOUBLE%0.0100.045.0
constantcCharacteristicWindspeedRegion's characteristic wind speed at 2m during the mid growing season m s-1DOUBLEm/s0.0-2.0
constantcCropHeightAverage crop height during mid/late seasonDOUBLEm0.05.00.0
constantcKCanopy extinction factorDOUBLE10.01.00.7
constantcKcMinMin Kc for dry bare soil with no ground coverDOUBLE10.02.00.15
constantcKcbIniNominal Kcb value during initial growth stageDOUBLE10.02.00.0
constantcKcbMidNominal peak Kcb value obtained during mid season growth stageDOUBLE10.02.01.0
constantcWettedSoilFractionFraction of soil surface wetted by rain or irrigationDOUBLE10.01.01.0
constantiK_rEvaporation reduction coefficient dependent on the cumulative depth of water depleted (evaporated) from the topsoil. For potential evaporation, iK_r must be equal to 1.DOUBLE10.01.01.0
constantiK_sCrop water stress factor (optional). For potential transpiration, iK_s must be equal to 1.DOUBLE10.01.01.0
inputiDVSDaily value of development stageDOUBLE10.02.50.0
inputiDoHarvestHarvesting flagBOOLEAN1--false
inputiDoSowSowing flagBOOLEAN1--false
inputiLAIDaily estimated leaf area indexDOUBLE10.020.00.0
inputiReferenceCropEvapotranspirationCrop reference evapotranspiration (ET0)DOUBLEmm0.020.00.0
outActualTranspirationAdjusted rate of transpiration - only when iK_r and iK_s are not always set to 1DOUBLEmm/d0.020.0-
outETCCrop ET under non-limiting water supply. Only when iK_s=1. It becomes Potential ET when both iK_s and iK_r are equal to 1DOUBLEmm/d0.020.0-
outETCUpperUpper limit (no evaporation reduction K_r) of crop ET under standard conditionsDOUBLEmm/d0.020.0-
outETC_adjAdjusted crop ET subjected to water stress. Only when K_s is not fixed to 1DOUBLEmm/d0.020.0-
outKcMaxUpper limit on ETCDOUBLE10.02.01.0
outKcbBasal crop coefficientDOUBLE10.02.0-
outKeSoil evaporation coefficient DOUBLE10.02.0-
outKeUpperUpper limit of soil evaporation coefficient (no evaporation reduction K_r)DOUBLE10.02.0-
outPotentialSoilEvapCropPotential rate of evaporation from the soil. When iK_r=1DOUBLEmm/d0.020.0-
outPotentialSoilEvapCropUpperUpper limit (no evaporation reduction K_r) of potential rate of evaporation from the soilDOUBLEmm/d0.020.0-
outPotentialTranspirationPotential rate of transpiration from the crop. When iK_s=1DOUBLEmm/d0.020.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
     
    protected void
    Calculates K_e and potential soil evaporation
    protected void
    Calculates K_cb and potential transpiration of crop
    protected void
    Process the algorithm and write the results back to VarMap
    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

    • CropEvapoTranspirationDualCoeff

      public CropEvapoTranspirationDualCoeff()
      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()
    • initValues

      protected void initValues()
    • resetOnHarvest

      protected void resetOnHarvest()
    • 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()
    • PotTran

      protected void PotTran()
      Calculates K_cb and potential transpiration of crop
    • PotSoilEvap

      protected void PotSoilEvap()
      Calculates K_e and potential soil evaporation
    • 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)