Calculate water balance for a flooded rice paddy
Source:R/water_balance.R
calc_water_balance_rice.RdModels the water balance of a flooded rice system with a two-layer structure: a ponded water layer above a saturated soil profile. This is physically distinct from the upland soil water balance in [calc_water_balance()]. Water is managed to maintain a target flood depth, with support for mid-season drainage events.
Usage
calc_water_balance_rice(
et,
precip,
flood_target,
flood_min,
flood_max,
seepage,
drain = NULL,
pond_init = flood_target
)Arguments
- et
Numeric vector. Daily reference ET. During flooded periods this is treated as open-water ET; no crop coefficient is applied here but you can pre-multiply if needed.
- precip
Numeric vector. Daily precipitation.
- flood_target
Numeric scalar. Target ponded water depth. Irrigation refills to this level.
- flood_min
Numeric scalar. Minimum acceptable pond depth before irrigation is triggered.
- flood_max
Numeric scalar. Maximum pond depth before bund overflow / runoff occurs.
- seepage
Numeric scalar. Daily seepage + percolation loss Represents losses through the bund and downward percolation through the hardpan (if any). Typical range: 1-5 mm/day for well-puddled California soils.
- drain
Logical vector (same length as et). TRUE on days when an intentional drainage event occurs (e.g., mid-season drain, pre-harvest drawdown). Pond is set to 0 on these days and irrigation is suppressed.
- pond_init
Numeric scalar. Initial pond depth at t = 1. Defaults to flood_target.
Value
A list with numeric vectors of length n:
- pond_depth
Ponded water depth at end of each day
- irr
Irrigation applied
- runoff
Bund overflow / surface runoff
Details
The soil profile is assumed to be continuously saturated during flooded periods, so plant-available soil water is not tracked separately. ET is applied directly to the pond layer (open-water ET during flooded periods).
Irrigation is triggered when pond_depth falls below flood_min. Farmers refill to flood_target. Runoff (bund overflow) occurs when pond_depth exceeds flood_max.
Mid-season drainage is specified as a logical vector (`drain[t] = TRUE` means the field is intentionally drained on day t). During drainage days, the pond is drawn down to pond_depth = 0 and irrigation is suppressed. This represents practices such as weed control or pre-harvest drainage.