Function hydrology_soilWaterBalance estimates water balance of soil layers given water inputs/outputs, including the simulation of water movement within the soil.

hydrology_soilWaterBalance(
  soil,
  soilFunctions,
  rainfallInput,
  rainfallIntensity,
  snowmelt,
  sourceSink,
  runon = 0,
  lateralFlows = NULL,
  waterTableDepth = NA_real_,
  infiltrationMode = "GreenAmpt1911",
  infiltrationCorrection = 5,
  soilDomains = "single",
  nsteps = 24L,
  max_nsubsteps = 3600L,
  modifySoil = TRUE
)

Arguments

soil

Object of class soil.

soilFunctions

Soil water retention curve and conductivity functions, either 'SX' (for Saxton) or 'VG' (for Van Genuchten).

rainfallInput

Amount of water from rainfall event (after excluding interception), in mm.

rainfallIntensity

Rainfall intensity, in mm/h.

snowmelt

Amount of water originated from snow melt, in mm.

sourceSink

Local source/sink term for each soil layer (from soil evaporation or plant transpiration/redistribution) as mm/day.

runon

Surface water amount running on the target area from upslope (in mm).

lateralFlows

Lateral source/sink terms for each soil layer (interflow/to from adjacent locations) as mm/day.

waterTableDepth

Water table depth (in mm). When not missing, capillarity rise will be allowed if lower than total soil depth.

infiltrationMode

Infiltration model, either "GreenAmpt1911" or "Boughton1989"

infiltrationCorrection

Correction for saturated conductivity, to account for increased infiltration due to macropore presence

soilDomains

Either "single" (for single-domain) or "dual" (for dual-permeability).

nsteps

Number of time steps per day

max_nsubsteps

Maximum number of substeps per time step

modifySoil

Boolean flag to indicate that the input soil object should be modified during the simulation.

Value

Returns a named vector with different elements, depending on soilDomains. If

soilDomains == "single":

  • Snowmelt: Snowmelt input (mm).

  • Source/sinks: Sum of source/sink input across layers (mm).

  • Infiltration: Water infiltrated into the soil (mm).

  • InfiltrationExcess: Excess infiltration in the topmost layer (mm) leading to an increase in runoff.

  • SaturationExcess: Excess saturation in the topmost layer (mm) leading to an increase in runoff.

  • Runoff: Surface runoff generated by saturation excess or infiltration excess (mm).

  • DeepDrainage: Water draining from the bottom layer (mm). This quantity is corrected to close the water balance.

  • CapillarityRise: Water entering the soil via capillarity rise (mm) from the water table, if waterTableDepth is supplied.

  • Correction: Amount of water (mm) added to deep drainage to correct the water balance.

  • VolumeChange: Change in soil water volume (mm).

  • Substep: Time step of the moisture solving (seconds).

If soilDomains == "dual" the named vector contains the following additional elements:

  • Lateral flows: Sum of water circulating between micropores and macropores, positive when filling micropores (mm).

  • InfiltrationMatrix: Water infiltrated into the soil matrix (mm).

  • InfiltrationMacropores: Water infiltrated into the soil macropore domain (mm).

  • InfiltrationExcessMatrix/InfiltrationExcessMacropores: Excess infiltration in the topmost layer (mm) leading to an increase in runoff.

  • SaturationExcessMatrix/SaturationExcessMacropores: Excess saturation in the topmost layer (mm) leading to an increase in runoff.

  • DrainageMatrix: Water draining from the bottom layer of the matrix domain (mm). This quantity is corrected to close water balance in the micropore domain.

  • DrainageMacropores: Water draining from the bottom layer of the macropore domain (mm). This quantity is corrected to close the water balance in the macropore domain.

  • CorrectionMatrix: Amount of water (mm) added to deep drainage of soil matrix to correct the water balance.

  • CorrectionMacropores: Amount of water (mm) added to deep drainage of macropores to correct the water balance.

  • MatrixVolumeChange: Change in soil water volume in the soil matrix domain (mm).

  • MacroporeVolumeChange: Change in soil water volume in the macropore domain (mm).

Details

The single-domain model simulates water flows by solving Richards's equation using the predictor-corrector method, as described in Bonan et al. (2019).

The dual-permeability model is an implementation of the model MACRO 5.0 (Jarvis et al. 1991; Larsbo et al. 2005).

References

Bonan, G. (2019). Climate change and terrestrial ecosystem modeling. Cambridge University Press, Cambridge, UK.

Jarvis, N.J., Jansson, P‐E., Dik, P.E. & Messing, I. (1991). Modelling water and solute transport in macroporous soil. I. Model description and sensitivity analysis. Journal of Soil Science, 42, 59–70.

Larsbo, M., Roulier, S., Stenemo, F., Kasteel, R. & Jarvis, N. (2005). An Improved Dual‐Permeability Model of Water Flow and Solute Transport in the Vadose Zone. Vadose Zone Journal, 4, 398–406.

Author

Miquel De Cáceres Ainsa, CREAF

María González Sanchís, UPV-CTFC

Examples

# Define soil parameters
spar <- defaultSoilParams(4)

# Initializes soil hydraulic parameters
examplesoil <- soil(spar)

# Water balance in a single-domain simulation (Richards equation)
hydrology_soilWaterBalance(examplesoil, "VG", 10, 5, 0, c(-1,-1,-1,-1), 
                           soilDomains = "single", modifySoil = FALSE)
#>   Local source/sinks Lateral source/sinks         Infiltration 
#>         -4.000000000          0.000000000         10.000000000 
#>   InfiltrationExcess     SaturationExcess               Runoff 
#>          0.000000000          0.000000000          0.000000000 
#>         DeepDrainage      CapillarityRise           Correction 
#>          0.007104451          0.001319072         -0.001286961 
#>         VolumeChange             Substeps 
#>          5.994214620         24.000000000 
                    
# Water balance in a dual-permeability model (MACRO)
hydrology_soilWaterBalance(examplesoil, "VG", 10, 5, 0, c(-1,-1,-1,-1), 
                           soilDomains = "dual", modifySoil = FALSE)
#>           Local source/sinks         Lateral source/sinks 
#>                -4.000000e+00                 0.000000e+00 
#>        Matrix-macropore flow           InfiltrationMatrix 
#>                 4.836043e+00                 4.481027e+00 
#>       InfiltrationMacropores     InfiltrationExcessMatrix 
#>                 5.518973e+00                 0.000000e+00 
#> InfiltrationExcessMacropores       SaturationExcessMatrix 
#>                 0.000000e+00                 0.000000e+00 
#>   SaturationExcessMacropores               DrainageMatrix 
#>                 0.000000e+00                 2.868408e-02 
#>           DrainageMacropores            CapillarityMatrix 
#>                 1.175592e-05                 4.889593e-03 
#>        CapillarityMacropores             CorrectionMatrix 
#>                 7.866534e-06                -4.573672e-03 
#>         CorrectionMacropores           MatrixVolumeChange 
#>                 3.889382e-06                 5.293276e+00 
#>        MacroporeVolumeChange                 Infiltration 
#>                 6.829261e-01                 1.000000e+01 
#>           InfiltrationExcess             SaturationExcess 
#>                 0.000000e+00                 0.000000e+00 
#>                       Runoff                 DeepDrainage 
#>                 0.000000e+00                 2.869584e-02 
#>              CapillarityRise                   Correction 
#>                 4.897460e-03                -4.569782e-03 
#>                 VolumeChange                     Substeps 
#>                 5.976202e+00                 2.400000e+01