net.simplace.usermodules.thomas.SlimWater

SimWater.java is a routine for transient simulations of soil water balance of a multiple layer soil profile

* The SimComponent SlimWater estimates the daily change in soil water content in a variable number of soil layers based on the volumes of crop water uptake, soil evaporation, surface run-off and seepage below the root zone. Besides soil and weather input files, the SimComponent needs a separate input file (SlimProperties or SlimFile) where input parameters which are specific to the SimComponents SlimWater (and SlimRoots) are defined by the user.

CAUTION: It is important to note that the SimComponent does not consider canopy interception nor lateral subsurface run-off (interflow) in the water balance calculation. Soil water storage, surface run-off (WFAST), soil evporation (EVAPS), crop transpiration (EVAPC) and seepage (WSEEP) are calculated within the SimComponent, whereas potential soil evporation (POTES) and crop transpiration (PEVAPC) must be provided by other SimComponents (e.g. EvapTranDemand or CropEvapoTranspirationDualCoeff.java).

Definition of soil water fractions _

The water present in each layer is subdivided in different fractions. The fractions are defined according to the soil water content at certain soil matrix potentials for each soil layer: (1) SAT(i): Water content (m3 m-3) of saturated soil (SAT(i) at 0 kPa) (2) DUL(i): Water content (m3 m-3) at field capacity or Drained Upper Limit (DUL(i) at 33 kPa=0.33 bar=pF2.5) (3) AML(i): Water content (m3 m-3) at an intermediate soil water potential between field capacity (DUL) and wilting point (RLL) (AML(i) at 200 kPa=2.0 bar=pF3.3) (4) RLL(i): Water content (m3 m-3) at wilting point (RLL(i) at 1500 kPa). (5) SW(i): Initial soil water content at the start of the simulation (m3 m-3)

In relation to these cardinal points, different soil water fractions are calculated for each soil layer depending on their layer thickness (THICKL in m) : (1) Mobile water (mm): WM=(SAT(I)-DUL(I))*THICKL*1000 (2) Maximum retainable water (WRH in mm): WRH=(DUL(i)-RLL(I))*THICKL*1000 (3) Actual amount of retained water at the start of simulation (WR in mm): WR=(SW(i)-RLL(I))*THICKL*1000; and WR=<WRH (4) Half of the water retained at Wilting Point (WHT15R in mm): WHT15R = 0.5*RLL(I)*THICKL*1000 (5) Maximum amount of mobile water in the top soil layer which triggers run-off generation (WM1S in mm): WM11S=(SAT(1)-DUL(1))*THICKL*1000 (6) Fraction of water which is not available to solute transport (WRS in mm): WRS is set to WHT15R i.e. half of the water retained at wilting point (7) Fraction of water which is not available for upward movement of water and solutes in the topsoil layers (WFR in mm): WFR = (DUL(I)-AML(I))*THICKL*1000 (as defined in AFRCWHEAT 1995, not in Addiscott and Whitmore (1991)) (8) Fraction of water in finer pores (between 2 bar (pF3.3) and 0.5*Wilting point) available for upward movement (WR33 in mm): WR33 = (AML(I)-0.5*RLL(I))*THICKL*1000

NOTE: Due to various change in the definition of AML(i), WHT15R, and WRS the definitions of WFR and WR33 and the equations for upward movement of water and oslutes within the top soil layers may need substantial revision

The daily actual amount of water in each of the fractions in each layer is calculated depending on the amount of water input into the soil (rainfall or irrigation) and the water losses due to surface run-off, drainage (see function "LeachingWater() and RedistributionWithinLayers()", soil evaporation (see function CalculateEvaporation()) and crop transpiration (function Avail() and TakeUp()).

Canpopy interception

Currently SlimWater does not account for crop canopy interception. However, when combining SlimWater with LintulDRUNIR.java or HillFlow1D.java, the interception could be obtained from these SimComponents.

Surface-runoff

Surface run-off is calculated as the excess of cumulative subdaily rainfall aliquots (WALIQ in mm) which exceed the water retention capacity of the first soil layers. SlimWater breaks the daily amount of rainfall down into user-defined aliquots (WALIQ, default value: 3 mm). WALIQ is defined in the SlimProperties input file. Each aliquot is then added to the first soil layer and either added to the fraction of retained water (if WRH<WR) or to the mobile fraction (WM), until the infiltration capacity (WM1S=WM(1)) of the first layer is reached. The excess water of each aliquot is then accumulated and constitutes the run-off volume. NOTE: The amount of surface-runoff is highly sensitive to the ratio between the rainfall aliquot (WALIQ) and the thickness of the first soil layer (THICKL). In the original version of Slim the default values for THJICKL and WALIQ where 0.5 and 0.05m respectively. Thus a ratio of THICKL:WALIQ of 1:10 is recommended (Addiscott & Whitmore 1991).

Percolation or leaching of water

The water (aliquot) which infiltrates into the first soil layer is routed vertically to the layers below. The water transport from one layer to the other consists of a vertical movement (see function LeachingWater()) of half of the product of the mobile water times a user defined fraction (SlimAlfa) from the upper layer to the lower layer, a horizontal redistribution within the lower layer (RedistributionWithinLayers()) and a second leaching of the remaining excess water from the upper layer. This procedure tries to mimic the gradual vertical flow over water through the whole soil profile within one day. SlimAlfa is related to the clay content of each layer. Addiscott& Whitmore (1991) recommend for mineral soil layers the following SlimAlfa values:

SlimAlfa = 1.0 when %clay <= 9.5 SlimAlfa = 1.0271-0.000302*%clay when 9.5 < %clay < 58.3 SlimAlfa = 9.0 when %clay >=58.3

If the leached water reaches the last soil layer, the leachable fraction of the mobile water (WM*SlimAlfa) leaves the rootable zone and is thus added to the amount of daily seepage (WSEEP).

Soil evaporation

POtential soil evaporation (POTES)

Originally the subroutine of SLIM to calculate potential soil evporation received the potential open pan evaporation (EVAPO) from the subroutine EVAPW.FOR. Then potential crop transpiration (EVAPC) was derived from EVAPO by considering daily LAI of the crop and the light extinction coefficient. Finally, potential soil evaporation (POTES) was calculated as

POTES = (EVAPO - EVAPC) * 0.9 * (1.0 - ECUM / WRHTopsoil); (This equation should probably be revised for cases when EVAP is not open pan evaporation)

where WRHTopsoil was the total retention capacity of the top soil layer (in mm) and ECUM was the daily moisture deficit in the retained water fraction of the topsoil layer (WRH-WR). Thus, potential soil evpaoration was the difference between the open pan evaporation and the potential crop transpiration, reduced by 10% and limited by the proportion of retained water in the topsoil layer. In addition, if POTES was close to zero it was set to a user defined minimum value ELIM.

Later, when incorporated in Sirius and AFRCWHEAT, the open pan evporation approach was replaced by potential evapotranspiration according to Penman-Monteith, but the approach to calculate POTES remained the same except that the availability of soil water was increased by considering the first four layers when calculating WRHTopsoil.

Within SIMPLACE, SlimWater receives as input value for potential crop transpiration (EVAPC) and potential evapotranspiration (EVAP) from the SimComponents EvapTranDemand.java or CropEvapoTranspirationDualCoeff.java: (1) EvapTranDemand calculates potential crop transpiration (EVAPC) and potential soil evaporation by a modified Penman approach and potential evapotranspiration (EVAPO) is defined as the sum of both (2) Dual coefficient approach calculates potential crop transpiration (EVAPC) according to FAO (Allen et al. 1991) and the potential evapotranspiration (EVAPO) is set to the reference ET multiplied with the Kc value according to Allen et al. (1991) In both cases the SlimWater calculates POTES with equation1 and the calculation of WRHTopsoil takes into account a user specified soil depth (tMaxSoilEvaporationdepth im m) from which soil evaporation can occur

== Actual soil evaporation (EVAPS) == (Remark: The source code of this section should be revised) Actual evaporation is calculated by reducing POTES gradually depending on (1) wet or dry status of the topsoil, (2) the season (summer or winter) and (3) the amount of mobile water and retained within the maximum soil evaporation depth. Reduction 1a: When the soil is wet (irrespective of the season), EVAPS is reduced to 90% of POTES Reduction 1b: When the soil is dry and (i) it is summer, POTES is divided by the number of successive days when evaporation exceeds rainfall and EVAPS is reduced to 90% of this value, but the reduction is limited until EVAPS is 0.5 mm (ii) it is winter and the soil is very dry, EVAPS is reduced to 30% of POTES. Otherwise, it is reduced to a value betweeen 90 and 30% of POTES Reduction 2: If EVAPS can be satisfied by the amount of mobile water in the first soil layer, no further reduction occurs. Otherwise EVAPS is further reduced by the amount of retained water in the top soil layers which are within the user defined maximum soil evaporation depth. In this routine, the demand for evaporation from the atmosphere is shared between these topsoil layers. This routine allows for upward movement of water between these layers within the retained soil water fraction in the fine pores (WFR)

Crop transpiration (EVAPC)

Crop transpiration depends on the one hand on crop available water in the soil profile (CAWT) and on the other hand on the crop demand (PTRAN). The potential crop water demand (potential crop transpiration, PEVAPC) is an input from other SimComponents (see above). (Note: Potential crop considers only the transpirative demand of the crop as a function of leaf area and atmospheric conditions; the demand for soil evaporation is excluded). Crop available water is a function of soil available water and the water uptake capacity (related to root properties) of the roots. Therefore, SlimWater estimates first the amount of available soil water for crop uptake in each soil layer as the amount of mobile water (SAWM(i)=WM(i)) plus 25% of the retained water (SAWR(i)=0.25*WR(i)). Then the soil available water in each layer is multiplied with the root uptake factor FRR(i) which is supplied by other SimComponents (e.g. SlimRoots) to obtain the crop available water in the mobile (CAWM(i)) and the retained fraction (CAWR(i)). The sum of both fraction and over all layers is the total crop available water CAWT. If CAWT is greater than PEVAPC then actual crop transpiraiton (EVAPC) is equal to the potential crop transpiration (PEVAPC). Otherwise EVAPC is reduced to CAWT. The assumption that only 25% of the retained water is available to the crops is a crititcal issue. Therefore, other assumptions have been implemented in the SimComponent ImprovedSoilWater.java.

If the amount of mobile water within the soil profile (CAWMT) is sufficient to cover the crop water demand (EVAPC), the uptake of the water from the individual soil layers occurs from the mobile fractions only. The uptake from the individual layers is proportional to their share in total CAWMT. If CAWMT is not sufficient, then the mobile water fraction is exhausted within each layer and the remaining crop water demand is satisfied from the soil layers' retained water fraction. The uptake from an indiviual layer is according to the share of its retained crop available water (CAWR(i)) in the total retained crop available water (CAWRT) in the soil profile.

\[ \begin{eqnarray} if & & DRAIN >= DRATE: DRAIN &=& DRATE; \end{eqnarray} \]

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantTHICKLThickness of layersDOUBLEm0.00120.00.03
constantcALFAThe proportion of the mobile water that moves downwards each dayDOUBLEARRAY---
constantcCalculateRunoffWaterIf set to true runoff water is calculated, otherwise entire rain is intercepted by the soilBOOLEAN1--false
constantcDPThe proportion of water lost from layer MD (the layer : containing the drains) that is lost through the drainsDOUBLE10.020.00.0
constantcELIMMinimum daily evaporation (mm)DOUBLEmm0.020.00.05
constantcIFWGEN-BOOLEANmm--false
constantcLatitudeLatitudeDOUBLE°-90.090.050.7
constantcMDNumber of layer containing mole drainsINT1010000
constantcMTNumber of layers in the topsoilINT1010005
constantcMaxSoilEvaporationDepth-DOUBLEm0.020.00.12
constantcSEEDDSeed depthDOUBLEm0.00120.00.02
constantcSMDSoil Moisture DeficitDOUBLEmm0.020.00.0
constantcSoilLayerDepth-DOUBLEARRAYm---
constantcSoilWaterFieldCapacity-DOUBLEARRAYm3/m3---
constantcSoilWaterInitial-DOUBLEARRAYm3/m3---
constantcSoilWaterReducedThreshold-DOUBLEARRAYm3/m3---
constantcSoilWaterSaturation-DOUBLEARRAYm3/m3---
constantcSoilWaterWiltingPoint-DOUBLEARRAYm3/m3---
constantcWALIQThe aliquot size in the rainfall splitting routine (mm)DOUBLEmm0.020.03.0
constantcWM1SWM in the top layer at saturation (mm)DOUBLEmm0.020.010.3
constantcWMGENSDefault values for WM solidDOUBLEmm0.020.01.9
constantcWMGENTDefault values for WMDOUBLEmm0.020.02.75
constantcWRGENSDefault values for WR solidDOUBLEmm0.020.011.6
constantcWRGENTDefault values for WRDOUBLEmm0.020.09.1
constantcWRSSthe water that is not accessible to the solute in the subsoilDOUBLEmm0.020.07.15
constantcWRSTthe water that is not accessible to the solute in the topsoilDOUBLEmm0.020.04.35
inputiFRRRootsRestrictionFactor-Array DOUBLEARRAY1---
inputiMD95-INT1010000
inputiPotentialSoilEvaporationPotentialSoilEvaporationDOUBLEmm0.020.0-
inputiPotentialTranspirationPotentialTranspirationDOUBLEmm0.020.0-
inputiRAINPrecipitationDOUBLEmm0.020.0-
inputiReferenceCropEvapotranspiration-DOUBLEmm0.020.0-
inputiWithCrop-BOOLEAN1--false
statesCAPS-DOUBLEARRAYmm---
statesCAPW-DOUBLEARRAYmm---
statesCAW-DOUBLEmm0.02000000.00.0
statesCAWM-DOUBLEARRAYmm---
statesCAWMT-DOUBLEmm0.02000000.00.0
statesCAWR-DOUBLEARRAYmm---
statesCAWRT-DOUBLEmm0.02000000.00.0
statesCAWT-DOUBLEmm0.02000000.00.0
statesDEF-DOUBLEmm-2000.0200000.0-
statesECUM-DOUBLEmm-2000.02000.0-
statesNNR-DOUBLEmm0.02000.0-
statesSOILAV-DOUBLEARRAYmm---
statesTWM-DOUBLEmm0.0200000.00.0
statesTWR-DOUBLEmm0.0200000.00.0
statesTWRH-DOUBLEmm0.0200000.00.0
statesWFRAmount of water not available for upward movement of solutes or waterDOUBLEARRAYmm---
statesWHT15RRetained water below 0.5*wilting point in layer iDOUBLEARRAYmm---
statesWLM-DOUBLEARRAYmm---
statesWMMobile water (mm)DOUBLEARRAYmm---
statesWMBeforeLeachingMobile water before leachingDOUBLEARRAYmm---
statesWRRetained water (mm)DOUBLEARRAYmm---
statesWR33-DOUBLEARRAYmm---
statesWRHRetained water at field capacity in layer iDOUBLEARRAYmm---
statesW_out-DOUBLEARRAYmm---
outActualEvapoTranspiration-DOUBLEmm0.020.00.0
outActualSoilEvaporation-DOUBLEmm0.020.00.0
outActualTranspiration-DOUBLEmm0.020.00.0
outCumulativeActualSoilEvaporation-DOUBLEmm0.02000000.00.0
outCumulativeActualTranspiration-DOUBLEmm0.02000000.00.0
outDRYFAC-DOUBLEARRAY1---
outPotentialEvapoTranspiration-DOUBLEmm0.022.00.0
outPotentialSoilEvaporation-DOUBLEmm0.020.00.0
outPotentialTranspiration-DOUBLEmm0.020.00.0
outTLW-DOUBLEmm0.02000.00.0
outTotalCropAvailVolumetricWaterContentFirstLayer-DOUBLEmm0.0--
outTotalCropAvailVolumetricWaterContentPerLayer-DOUBLEARRAYmm0.050.0-
outTotalCropAvailWaterContent-DOUBLEmm0.0--
outTotalCropAvailWaterContentFirstLayer-DOUBLEmm0.0--
outTotalCropAvailWaterContentPerLayer-DOUBLEARRAYmm0.0--
outTotalVolumetricWaterContentFirstLayer-DOUBLEmm0.0--
outTotalVolumetricWaterContentPerLayer-DOUBLEARRAYmm0.00.6-
outTotalVolumetricWaterContentUpperLayers-DOUBLE0.0--
outTotalWaterContent-DOUBLEmm0.01000.0-
outTotalWaterContentFirstLayer-DOUBLEmm0.0--
outTotalWaterContentLowerLayers-DOUBLEmm0.0--
outTotalWaterContentPerLayer-DOUBLEARRAYmm0.0--
outTotalWaterContentUpperLayers-DOUBLEmm0.0--
outWDRAIN-DOUBLEmm0.02000.0-
outWFAST-DOUBLEmm0.02000.0-
outWSEEP-DOUBLEmm0.02000.0-
outWaterBalance-DOUBLEmm-20000.020000.00.0



public class SlimWater extends net.simplace.simulation.model.FWSimComponent {
// Public Constructors
public SlimWater();
// Protected Constructors
protected SlimWater(String aName, HashMap aFieldMap, HashMap aInputMap,
Element aSimComponentElement, FWSimVarMap aVarMap, int aOrderNumber);


// Public Instance Methods
public HashMap createVariables(); // Defines
net.simplace.simulation.model.FWSimComponent



// Protected Instance Methods
protected void init(); // Defines
net.simplace.simulation.model.FWSimComponent


protected void process(); // Defines
net.simplace.simulation.model.FWSimComponent


protected FWSimComponent clone(FWSimVarMap aVarMap);
// Defines net.simplace.simulation.model.FWSimComponent




}



Hierarchy: java.lang.Object - net.simplace.simulation.model.FWSimComponent (net.simplace.simulation.util.FWSimFieldContainer) - SlimWater