thornthwaite {ClimClass}R Documentation

Thornthwaite and Mather's water balance


Calculates Thornthwaite and Mather's water balance from monthly series of precipitation and temperature. Aimed at a classification of a site's climate according to its water balance features.


thornthwaite(series, latitude, clim_norm = NULL, first.yr = NULL,
  last.yr = NULL, quant = c(0, 0.1, 0.25, 0.5, 0.75, 0.9, 1),
  snow.init = 20, Tsnow = -1, TAW = 100, = 0.95,
  snow_melt_coeff = 1)



the monthly series of temperature and precipitation.


latitude of the station in degrees.


climatic normals.


first year of the period over which water balance is calculated. Default is NULL (calculations start with the first year of the series).


last year of the period over which water balance is calculated. Default is NULL (calculations stop with the last year of the series).


vector of quantiles for which water balance has to be assessed. Default is: min, 10th, 25th 50th, 75th, 90th, max.


initial water equivalent for snowpack (mm). Default is 20.


maximum temperature (monthly mean) for precipitation to be treated as snowfall. Default is -1 degree C.


maximum (field capacity) for soil water retention, and initial soil water content (mm). Default is 100.

fraction of snow that contributes to snowpack (0-1). 1 - is treated as liquid monthly precipitation Default is 0.95.


monthly coefficient(s) for snowmelt. Default is 1.


The algorithm for the calculation of water balance is adapted from Thornthwaite, 1948; Thornthwaite and Mather, 1955; Thornthwaite and Mather, 1957.

series is a data frame with years, months, temperature and precipitation values. Names in series columns must include: year, month, Tn and Tx (minimum and maximum temperatures, respectively) or, as an alternative, Tm (mean temperatures), and P (mandatory).

clim_norm is a monthly data frame of climate normals, with column names: "P", "Tn", "Tx", "Tm" (precipitation, minimum, maximum and mean temperature, respectively). It can be the output of function climate. If clim_norm is not NULL, any missing value in the monthly series is substituted by the corresponding climatic value in clim_norm.

At any winter season, the maximum monthly snowpack height is attained in the last month before "spring" conditions (Tm >= Tsnow), even if a month with Tm < Tsnow may occur later.

snow_melt_coeff is (are) the coefficient(s) for snow melt fraction(s) at any month where the condition for melting exists. If snow_melt_coeff = 1 (default), all the melting occurs in the first month when Tm >= Tsnow; if it is a vector, melting is spread over more than one month. If the sum of coefficients is less than 1, the residual melting occurs in one further month.

The output function is a list of two lists of data frames (balance and quantile). In both lists, data frame (and names) are the following (all variables in mm):

Precipitation (repeats input values);

Et0 (potential evapotranspiration);

Storage (water stored in soil);

Prec. - Evap. (difference between precipitation and potential evapotranspiration);

Deficit (difference between potential and real evapotranspiration, due to water unavailability in soil);

Surplus (water surplus in soil, routed to runoff).

Please, refer to the quoted references for details.

This function requires the function daylength (libr. geosphere).


A thornthwaite S3 object, consisting on a list of two lists. The first (name: W_balance) is a list of data frames containing the monthly series of all indices, the second (name: quantiles) the relevant quantiles. See details for meanings of single variables.


Giambattista Toller and Emanuele Eccel


Thornthwaite, C. W., 1948: An Approach toward a Rational Classification of Climate. Geographical Review, Vol. 38, No. 1(Jan.):55-94.

Thornthwaite, C. W., and Mather, J.R., 1955: The water balance. Publications in Climatology, Volume 8(1), Laboratory of Climatology

Thornthwaite, C. W., and Mather, J.R., 1957: Instructions and tables for computing potential evapotranspiration and the water balance. Publications in climatology, Volume 10(3), Laboratory of Climatology

See Also

climate, ExAtRa, plot.thornthwaite



# lista_cli is a list of data frames of the type "series", 
# each one referring to one station - see function "climate".
# clima_81_10 is a list of data frames having climatic means 
# of temperature and precipitation, each one referring to one station. 
# It can be the output of function "climate".
library(geosphere) # required for function daylength
lista_cli <- lista_cli[1:3] ## lista_cli is reduced to diminish elapsed time of execution!
for(k in 1 : length(lista_cli[1:3])) {
  latitude = 46, first.yr=1981, 
  last.yr=2010, snow_melt_coeff=c(0.5,0.5 )  )
# splits list into two lists
W_balance<-NULL; quantiles<-NULL
for(k in 1 : length(lista_cli))
 names(W_balance)<-names(thornt_lst); names(quantiles)<-names(thornt_lst)

[Package ClimClass version 2.1.0 Index]