The BROOK90 Hydrologic Model

For Evaporation, Soil Water, and Streamflow

[Revised - June 28, 2019]

C. Anthony Federer, 5 Blueberry Ln Unit T2, Falmouth ME 04105, USA

June 28, 2019 - Version 4.8a adds a CC0 1.0 Universal License to BROOK90. - This clarifies that my versions of BROOK90, their documentation, and this web site are in the public domain (not copyright). See License below for details. The full text of this license is referenced from this page and from the Help menu on the BROOK90 main window. Reference to the license has been added to the beginning of every source code file.

June 28, 2019 - My earlier BROOK2 model, which differs considerably from BROOK90, has been removed from this web site. As far as I know, no one has used it for two decades. Please email me if you are interested in it.

January 11, 2019
- R Versions of BROOK90 are now available. Both BROOK90 Version 4.8 and LWF-BROOK90 have recently been recoded into the R programming language. See the Versions section of this page for more information.

May 22, 2018 - Corrected KPT section in Documentation. Added a supplement to History.

October 9, 2017 - Version 4.8 fixes several bugs and adds several capabilities to the main window. See Version 4 Updates for details. Email me at if you find problems.

July 10, 2015 - Version 4.7 fixes two bugs. See Version 4 Updates for details.

November 21, 2013 - Brook90 links pointing to will no longer work. Please go to instead.

Purpose -- Documentation -- License -- Running the Model -- Automating the Model -- Simulated Processes
Limitations -- Versions of BROOK90 and BROOK2 -- Acknowledgements


Home Page
Documentation Version 4
Version 3
Published Papers
Using BROOK90
History of
the BROOK Models
CC0 License


BROOK90 Version 4.8a
June 28, 2019
BROOK90 Data Files
Jun 28, 2019
BROOK90 Documentation
June 28, 2019
BROOK90 Source Code (optional)
June 28, 2019
Sample AutoIt script (optional)
June 28, 2019
msvbm60.dll (if needed)
comdlg32.ocx (if needed)


BROOK90 simulates vertical soil water movement and daily evapotranspiration for all land surfaces at all times of year using a process-oriented approach with physically-meaningful parameters. Only enough streamflow generation pathways are included to allow comparison with measured streamflow where available (see flow chart). The complexities of hillslope hydrology and spatial distribution have been omitted in order to focus on the details of the factors controlling evaporation.

BROOK90 can fill a wide range of needs: as a research tool to study the water budget and water movement on small plots, as a teaching tool for evaporation and soil water processes, as a water budget model for land managers and for predicting climate change effects, and as a fairly complex water budget model against which simpler models can be tested.

Input of daily precipitation and maximum and minimum temperatures is required, and daily solar radiation, vapor pressure, and wind speed are desirable. The model estimates interception and transpiration from a single layer (big leaf) plant canopy, soil and snow evaporation, snow accumulation and melt, and soil-water movement through one or more soil layers (including macropore-assisted infiltration). Stormflow is generated by a variable source area or simple pipe flow. Delayed flow is from soil drainage and a first-order groundwater storage. BROOK90 uses a Shuttleworth-Wallace modification to Penman-Monteith potential evaporation in order to separate transpiration and soil evaporation from sparse canopies. Actual transpiration is reduced below potential using Federer's method based on root density with depth, plant resistance, and a critical leaf-water potential. Water movement between soil layers is integrated using Darcy's Law and variable time-steps.


Documentation for BROOK90 (in HTML 4 Transitional) can be viewed online or downloaded above. The downloaded documentation can be unzipped into any folder, and printed from any browser.
NOTE: Both the model and the documentation have changed over time. I recommend that users obtain the latest versions.

The model can be cited as either of the following:

Federer, C.A. 2002. BROOK 90: A simulation model for evaporation, soil water, and streamflow.

Federer, C.A., C. Vörösmarty, and B. Fekete. 2003. Sensitivity of annual evaporation to soil and root properties in two models of contrasting complexity. J Hydrometeorology 4:1276-1290.

The BROOK90 Publications page (see link above) lists many of the publications that have used BROOK90.

The second edition of "Physical Hydrology" by S. L. Dingman (Prentice Hall, New Jersey, USA) uses BROOK90 to illustrate hydrologic modeling and gives BROOK90 algorithms for some processes. Readers should note that the KKMEAN equation on page 264 has been changed in later versions of BROOK90 to eliminate the weighting for layer thicknesses (THICK).

BROOK90 License

The potential submission of R versions of BROOK90 to CRAN (Comprehensive R Archive Network) has raised the question of what software license applies to BROOK90. As stated under Versions below, Versions 3.1Q and 3.1F were written by me when I was an employee of the USDA Forest Service, and thus their source code was prevented by law from carrying any copyright. They have always been in the public domain within the United States (at least) and carry no restrictions on their use. After my retirement from the U.S. Government, I translated BROOK90 into Visual Basic for Windows and have maintained that source code through many later versions. After selling Windows versions as shareware for a few years I stopped charging and called BROOK90's executable, source code, and documentation "freeware", intending that it should be in the public domain and that I had relinquished all rights. To clarify this status I have now waived copyright and related rights in my work worldwide through the CC0 1.0 Universal public domain dedication. Anyone, anywhere, may copy, modify, and distribute BROOK90 and its components, including this web site, even for commercial purposes, all without asking permission.

The full text of the license is on this web site at CC0 License.

Running the Model

BROOK90 runs on all versions of Windows from XP through 10. It is easily installed manually and does not use the Windows registry. The Compass Brook computers are virus-protected by Avast.

Download the latest version of BROOK90 and and the BROOK90 Data Files from the links above, and unzip them into any folder.

Two additional files may also need to be downloaded. Msvbm60.dll (Visual Basic 6) is included in all versions of Windows through Windows 8. However, comdlg32.ocx (Windows Common Dialog) has not been included in recent Windows versions. In 32-bit Windows these two files should be placed in the C:\Windows\System\ folder. In 64-bit versions, they should placed be in c:\Windows\SysWOW64\ (if BROOK90 still fails to open , run regsvr32 c:\Windows\SysWOW64\comdlg32.ocx with administrator privileges to register it).

Users wishing to modify BROOK90 can download the VB source code. The algorithm routines should be easily translatable for other compilers, but the Windows GUI is very tricky to modify.

To make a test run:

To learn about BROOK90:

BROOK90 Version 4 reads daily input from a data file as it runs. Data files must be produced or modified by using a text editor such as TextPad, which allows column moves, or by using a spreadsheet program like Excel to produce a .CSV or .PRN file.

BROOK90 optionally allows for precipitation input at intervals less than once a day. When used, this data is read from a separate precip interval file.

BROOK90 Version 4 requires six separate parameter files: Location, Flow, Canopy, Soil, Fixed, and Initial files. Each contains a number of names and values that must be in correct order. These files can be created and edited either within BROOK90 (safer) or externally with a text editor. With some restrictions, these values and even the whole file can be changed within a model run.

Output values of a many variables may be produced at iteration, precip, daily, monthly, and annual intervals. Graphic output of precipitation, snow, soil water, evaporation, simulated streamflow, and measured streamflow (if input) over time can be displayed during a run.

Automating the Model

The scripting software AutoIt can be used to automate BROOK90. It is freeware, comprehensive, and fairly easy to use. A sample script can be download above. The script requires the default data and parameter files to be in the B90V4.exe folder.

Simulated Processes

Inputs of daily precipitation and maximum and minimum temperatures are required, and daily solar radiation, vapor pressure, and wind speed are desirable. Precipitation may be input several times per day. Water is stored in the model as intercepted rain, intercepted snow, snow on the ground, soil water in from one to many layers, and groundwater (see Flow Chart).

Snowmelt is based on a degree day factor and accounts for snowpack temperature and liquid water content. The factor is modified for canopy cover as determined by LAI and SAI.

Net throughfall plus snowmelt may 1)infiltrate into the soil matrix of the surface horizon, 2) infiltrate directly to deeper horizons via vertical macropore flow, 3) go immediately to streamflow via impaction on a variable saturated source area, or 4) go immediately to streamflow via vertical macropore flow followed by downslope pipe flow. Streamflow can also be produced by delayed flow from vertical or downslope soil drainage and from a first-order groundwater store.

Evaporation is the sum of five components: evaporation of intercepted rain and snow, snow and soil evaporation, and transpiration from a single-layer canopy. The model estimates potential interception and transpiration from a single-layer plant canopy using the Shuttleworth and Wallace (1985) method for separating transpiration and soil evaporation in sparse canopies. Evaporation of intercepted rain or snow is calculated with a canopy resistance of zero and aerodynamic resistances based on canopy height, coupled with a canopy capacity and an average storm duration. For potential transpiration, canopy resistance depends on maximum leaf conductance, reduced for humidity, temperature, and light penetration. Aerodynamic resistances are modified from Shuttleworth and Gurney (1990); they depend on leaf area index, which can vary seasonally, and on canopy height, which determines stem area index. Snow evaporation or condensation depends on the aerodynamic resistances and the vapor gradient. Soil evaporation resistance depends on soil water potential in the top soil layer. Actual transpiration is the lesser of potential transpiration and a soil water supply rate determined by plant resistance, rhizosphere resistance, minimum (critical) leaf water potential, root distribution, and soil water potential in the soil layers (Federer 1979).

Below ground, the model includes one to many soil layers, which may have differing physical properties. Water in the soil matrix moves vertically according to Darcy's Law for unsaturated or saturated flow. Integration of the continuity equation is by explicit forward difference (Euler), but with a variable iteration time step that limits changes in layer water content and in potential gradients. For different layer thicknesses, the interlayer conductivity and gradient behaves as if both layers have the thickness of the thinner layer. The relationships among matric potential, soil water content, and hydraulic conductivity are parameterized by a modified Clapp and Hornberger (1978) formulation

Water is added to groundwater by gravity drainage from the deepest soil layer.The groundwater component of streamflow is simulated as a fixed fraction of groundwater each day. A fixed fraction of the groundwater outflow may be deep seepage.

A variety of output variables can be selected for each of the model time intervals: iteration, precip interval, day, month, and year. All output files are text files, so they can easily be imported into any spreadsheet, database, or plotting programs. Graphs of simulated and measured streamflow and snow and soil water storages can be plotted to the screen at run time.

BROOK90 has numerous parameters, but all parameters are provided externally and are generally physically meaningful. Parameter fitting is not necessary to obtain reasonable results. However, a procedure is described for modifying important parameters to improve the fit of simulated to measured streamflow. Parameter values are read from several files at run time. Parameters can be changed and new parameter files saved from within BROOK90.


BROOK90 has no allowance for non-green leaves, which can intercept precipitation and radiation but do not transpire. There is no provision for soil frost, so infiltration and percolation are never frost-limited. There is no provision for reduction of leaf area index after prolonged water stress. Albedo does not depend on solar elevation, canopy structure, or snow age. Snowpack energy balance is affected only by temperature and vapor pressure, not by radiation. A constant snow density is assumed to determine how much of the canopy is covered by snow.

The Shuttleworth-Wallace theory used for evaporation assumes a bare soil under a canopy that is uniformly distributed vertically and horizontally. Snow evaporation for tall leafless canopies is not handled well by the Shuttleworth-Gurney parameterization of canopy resistances; consequently a severe and arbitrary correction factor is required. Aerodynamic resistances assume neutral stability in both daytime and nighttime; this may be one cause of the snow evaporation problem.

There is no provision in BROOK90 for internal calculation of phenology or growth.

BROOK90 has no provision for spatial distribution of parameters in the horizontal and no provision for lateral transfer of water to adjacent downslope areas. There is only a single, first order groundwater reservoir. There is no channel routing.

Versions of BROOK90 and BROOK2

Two major developments of BROOK90 occurred in Germany in 2018.

BROOK90 has been used around the world for over 20 years; but with the exception of LWF-BROOK90, I (C.A. Federer) am unaware of any versions not written by me until the R versions just described. It is personally very gratifying to see that this original sole-authored model has survived and is still being developed.

BROOK90 Versions 1 and 2 were partial models, written in QuickBasic for DOS PCs in 1992-93; although they were used by several other scientists, they are obsolete and should not be used.

Version 3.1Q is the final QuickBasic version. It was translated into Fortran-77 as Version 3.1F, which could run on a mainframe. Both were completed in January 1995, when I retired from the U.S. Forest Service. Only minor changes have been made in the model algorithms since then, but these changes affect results in some cases.

LWF-BROOK90 is a modification of Version 3.1F by Martin Kennel and his colleagues in Germany. They added a front end with graphics output, vanGenuchten soil parameterization, stand development over time, and temperature-dependent phenology. LWF-BROOK90 has been widely used in Europe. Documentation is Hammel, K. and M. Kennel. 2001. Charakterisierung und Analyse der Wasserverfügbarkeit und des Wasserhaushalts von Waldstandorten in Bayern mit dem Simulationsmodell BROOK90. Forstliche Forschungsberichte München 185.

In 1997 I reprogrammed the model in Visual Basic 3 for Windows, adding the usual Windows GUI. Much of the code is still VB3. Minor fixes and improvements followed from Version 3.22 through 3.4; these changes are documented in BROOK90 Version 3 Updates. Version 3.3 changed the interpolation of interlayer conductivities and gradients, but badly.

In 2000, Version 4.0 separated the parameter input from a single file into six separate files, and altered several parameters. Version 4.1 in 2001 compiled the model in 32-bit Visual Basic 6 for Windows 95, which is the current configuration. (I still modify code on an XP machine but BROOK90 runs fine in Windows 10). Later in 2001, Version 4.4 changed the interpolation again, to its current form. Changes in Version 4 are described in BROOK90 Version 4 Updates. Several obscure bugs have been fixed in Versions 4.7 and 4.8, so all versions prior to 4.8 are obsolete.

The current version is documented in BROOK90 Documentation. Documentation for earlier versions is no longer available; users of those versions presumably already have it.

BROOK90 bears some similarities to its predecessor, BROOK2, but the two models are quite distinct and should not be confused. BROOK90 uses the Penman-Monteith equation for potential transpiration where BROOK2 uses the Hamon method. For sparse canopies BROOK90 uses the Shuttleworth and Wallace (1985) separation of soil evaporation and transpiration, whereas BROOK2 uses arbitrary functions. BROOK90 allows soil water movement through and transpiration from multiple soil layers, whereas BROOK2 has a single root zone. The citation for BROOK2 is Federer, C.A. and D. Lash. 1978b, rev 1983. BROOK: A hydrologic simulation model for eastern forests. Water Resour Res Cent Res Rep 19. Univ New Hampshire, Durham. Please email me if you are interested in the BROOK2 model.


This model is dedicated to three deceased colleagues and friends who supported and contributed to the BROOK models: Bob Pierce, Hans Keller, and Cindy Veen.

BROOK90 is a one-person project. Early versions were written by me, C. Anthony Federer, when I was a scientist with the U.S. Forest Service. Windows-based versions and these web pages are the product of my retirement under my "business" name, Compass Brook. Please email me at if you have any questions about BROOK90.

[Compass Brook logo]