Note: This page is no longer being maintained and is kept for archival purposes only.
For current information see our main page.
GWI Kurtz-Fernhout Software
Developers of custom software and educational simulations.
Home ... News ... Products ... Download ... Order ... Support ... Consulting ... Company
Garden with Insight
Product area
Help System
Quick start

Garden with Insight v1.0 Help: Weather - Precipitation

The EPIC precipitation model developed by Nicks (1974) is a first-order Markov-chain model. Thus, input for the model must include monthly probabilities of receiving precipitation. On any given day, the input must include information as to whether the previous day was dry or wet. A random number (0-1) is generated and compared with the appropriate wet-dry probability. If the random number is less than or equal to the wet-dry probability, precipitation occurs on that day. Random numbers greater than the wet- dry probability give no precipitation. Since the wet-dry state of the first day is established, the process can be repeated for the next day and so on throughout the simulation period.

If wet-dry probabilities are not available, the average monthly number of rainy days may be substituted. The probability of a wet day is calculated directly from the number of wet days: [Equation 95] where PW is the probability of a wet day, NWD is the number of rainy days, and ND is the number of days, in a month.

Equation 95

PW = ProbWetDayFromNumWetDays_frn
NWD = numWetDaysForMonth
ND = numDaysInMonth

The probability of a wet day after a dry day can be estimated as a fraction of PW [Equation 96] where P(W/D) is the probability of a wet day following a dry day and where beta is a fraction usually in the range of 0.6 to 0.9.

Equation 96

P(W/D) = beta * PW
P(W/D) = ProbWetDayAfterDryDayFromProbWetDay_frn
beta = kProbWetDayGivenDryDayCoeff_frn
PW = probWetDayFromNumWetDays_frn
beta = coeffForWetDryProbsGivenNumWetDays_frn

The probability of a wet day following a wet day can be calculated directly using the equation [Equation 97] where P(W/W) is the probability of a wet day after a wet day.

Equation 97

P(W/W) = 1.0 - beta + P(W/D)
P(W/W) = ProbWetDayAfterDryDayFromProbWetDay_frn
beta =
P(W/D) = probWetDayAfterDryDay_frn

When beta approaches 1.0, wet days do not affect probability of rainfall -- P(W/D) = P(W/W) = PW. Conversely, low beta values give strong wet day effects -- when beta approaches 0.0, P(W/W) approaches 1.0. Thus, beta controls the interval between rainfall events but has no effect on the number of wet days. For many locations, beta = 0.75 gives satisfactory estimates of P(W/D). Although equations 96 and 97 may give slightly different probabilities than those estimated from rainfall records, they do guarantee correct simulation of the number of rainfall events.

When a precipitation event occurs, the amount is generated from a skewed normal daily precipitation distribution [Equation 98] where R is the amount of rainfall for day i in mm, SND is the standard normal deviate for day I, SCF is the skew coefficient, RSDV is the standard deviation of daily rainfall in mm, and R(k) is the mean daily rainfall in month k.

Equation 98:

R = (pow(((SND - SCF/6.0) * (SCF/6.0) + 1.0), 3) - 1.0) * RSDV / SCF + Rbar
R = 2.0 * (pow(((SND - SCF/6.0) * (SCF/6.0) + 1.0), 3) - 1.0) * RSDV / SCF + Rbar
also code adds lower bound of aResult at 0.01
R = DailyRainfallBySkewedNormal_mm
SND = stdNormDeviateForRainfall
SCF = skewCoeffForRainfallForMonth
RSDV = stdDevDailyRainfallForMonth_mm
Rbar = dailyMeanRainfallForMonth_mm

If the standard deviation and skew coefficient are not available, the model simulates daily rainfall by using a modified exponential distribution [Equation 99] where mu is a uniform random number (0.0-1.0) and zeta is a parameter usually in the range of 1.0 to 2.0. The larger the zeta value, the more extreme the rainfall events. The denominator of equation 99 assures that the mean long-term simulated rainfall is correct. The modified exponential is usually a satisfactory substitute and requires only the monthly mean rainfall as input.

Equation 99:

R = power(- ln(mu), zeta) * Rbar / (integral from 0.0 to 1.0)power((- ln(chi), zeta) dx
R = Rbar * power(- ln(mu), zeta)
We think the integral is incorporated in the code when the dailyMeanRainfallForMonth_mm is
multiplied at input by rainfallNormalizingFactorForModExpDist
We do not completely understand this section of code.
R = DailyRainfallByModifiedExponential_mm
mu = uniformRandomNumber
zeta = coeffRainfallModExpDist
Rbar = dailyMeanRainfallForMonth_mm

Daily precipitation is partitioned between rainfall and snowfall using a combination of maximum daily air temperature (T(mx)) and surface layer soil temperature (T(1)). If the average of T(mx) and T(1) is zero degrees C or below, the precipitation is snowfall, otherwise, it is rainfall.
T(mx) = maxTempForDay_degC
T(1) = soilSurfaceTempWithCover_degC

Home ... News ... Products ... Download ... Order ... Support ... Consulting ... Company
Updated: May 4, 1998. Questions/comments on site to
Copyright © 1998 Paul D. Fernhout & Cynthia F. Kurtz.