BROOK90 Version 3 Updates
[Last revised - February 25, 2012]
To the BROOK90 Home page
In general, BROOK90 algorithms, and thus results, have changed very little since
Version 3.1. Those changes that could affect results are shown in full bold face below and in
Version 4 Updates.
The primary change involves the weighting for interlayer hydraulic conductivity.
However, for most sudies, the changes are probably insignificant, making BROOK90
a very stable model.
Known Issues - Version 3.4
-
The soil hydraulic parameters THETAF, PSIF, and KF are specified at "field
capacity" but this concept is not used in simulation of unsaturated flow;
values at any other wetness, including saturation, could be used. But the
field capacity values are used for source-area flow (SRFL), bypass
flow (BYFL), soil evaporation (SLVP) and the output value of root-zone soil-water
deficit (ADEF).
-
If selecting a file that is open in another program gives an error message,
then OK crashes BROOK90.
-
Fixed parameters are not checked for being within a reasonable range.
-
Parameter values are only checked for being within appropriate ranges when
parameter screens are closed (that is, on OK).
-
The warning message when BEXP > 11.5 appears even after WETINF is increased.
-
Help is not changed to match newer Help text in Version 4.
Version 3.4 - October 4, 2001
Interlayer K Weighting and Gradient -
All BROOK90 versions through 3.3 and 4.3 used interpolated interlayer
conductivities and potential gradients based on layer thickness in subroutine
VERT. The original equations produced too little flow with a thick wet layer
over a thin dry one. The fix attempted in Versions 3.3 and 4.2/4.3 reversed
the problem and gave too little flow with a thin wet layer over a thick dry
one. The solution seems to be to treat the interface as if it cannot "see"
the thickness of a thick layer. So the equations now are:
KKMEANi = exp((ln(KKi) + ln(KKi+1)) / 2)
GRADi = (PSITi - PSITi+1) / RMIN(THICKi,
THICKi+1)
Results do not differ among versions for simulations in which all layers
have the same thickness. Differences are generally small unless both layer
thickness and dryness differ greatly.
CS error fixed. - In all version 3.2x and version 3.3 changes in the
Fixed parameter CS are not made or saved due to a code error. To change CS,
edit the parameter file externally. This is corrected in Version 3.4.
International awareness, comma as decimal - Parts of
BROOK90 should now respond properly to
changing Windows-ControlPanel-RegionalSettings. The earlier incomplete test
for a comma as decimal has been improved. Data files now may have either
comma or period as the decimal point with space separators, or may be a .CSV
file with period as decimal and comma as separator. Both saved and printed
output conform to the Windows RegionalSetting. However, parameter files
must always include a comma separator after the parameter name and decimal
periods, as in previous versions. (Thanks to Ute Assmann for raising this issue.)
Changing Parameter Files During A Run - July 20, 2001
Parameters can be changed within a run. However, changes in Soil and Flow parameters will lead
to erroneous results as some of these parameters are used only at the beginning
of a run. In other words, don't change parameters in the middle of a run
that are unlikely to change from one day to the next in reality!
Version 3.3 - April 2, 2001
Version 3.3 changed the K weighting but badly - see Version 3.4 above.
Version 3.25a - February 2, 2001
Comma-separated Values - (.csv) files saved from spreadsheets like Excel can
be used for BROOK90 data files. The .csv file must have the correct 10 columns
for daily input files and 6 columns for precipitation interval files. The
.csv file must not remain open in Excel or BROOK90 won't be able to access
it. For Version 3.2x the header line of the daily input files is still needed.
If this header is in the first row of the spread sheet, then the first line
of the saved .csv file will have extra commas. These must be removed with
a text editor or various types of strange behavior will occur in BROOK90.
Version 3.25 - June 15, 2000
Parameter name changes - The call to subroutine ROUGH and the routine itself have variable Z0G changed
to Z0GS. The effect of this bug was small. In subroutine SWGRA Z0G also changed
to Z0GS to avoid confusing a variable with a parameter. Variables named CS
and CC in subroutine SWPE were renamed to CCS and CCC to avoid confusion
with the different global variables of the same name.
Parameter saving - Corrected the problem that if Fixed parameters were saved after a run, the
final INTR and INTS were saved instead of the initial values. This could
have caused errors for some users.
Bucket Model - In earlier versions setting QFPAR to zero to simulate a bucket model
does not work quite right because QFPAR is reset to 0.01; QFFC should be
set to 0.5.
Version 3.24 - October 29, 1998
EVAL Class Bug Fixed - The MID class in EVAL was defined as <5.0
mm flow in code through Version 3.23 instead of <=5.0mm; this is fixed
in Version 3.24 thanks to Dan Strobridge. This fix changes EVAL results for
the HB default files because one day is moved from HIGH to MID.
EVAL Column Bug Fixed - After a Rerun for Added Output, EVAL continued
to use the first MESFLO and FLOW columns in the daily output,
so continues to give the same results even if new MESFLO and FLOW columns
are added. This is fixed in Version 3.24.
Parameter CR in Documentation -
The parameter CR is the extinction coefficient for both net radiation (to
get net radiation at the ground, ASUBS on page SUN-3) and visible light (to
get light control on stomatal conductance, equation 34 on page PET-11). The
documentation does not make clear that this is theoretically incorrect because
visible light decreases much more rapidly than solar or net radiation downward
into the canopy. Given the uncertainty in the other parameters in equation
33 there is not much point in differentiating the two values.
AWAT - When there are no roots, e.g. when RELHT = 0, there is no TRAN and available
water AWAT = 0.
Arctic Winter Problem -
A zero divide problem exists in the call to routine AVAILEN when I0HDAY =
0, that is, when the sun does not rise in arctic winter. BROOK90 is undoubtedly
not applicable then anyway!! Users of the routine should reprogram so
SOLRAD/I0HDAY in the call is set to 0.5 to simulate an average cloud cover
for the longwave calculation. (A related potential problem of measured solar
radiation exceeding potential for the day is handled by the existing maximum
value of NOVERN = 1.)
Version 3.23 - February 6, 1998
Version 3.23 slightly modified to fix overrounding of KF and PSIM when saving
parameter file.
Version 3.23 - December 8, 1997
KPT Graph - Version 3.23 adds an onscreen "KPT Graph" of hydraulic conductivity,
K, and soil water content, THETA, vs. log of soil matric potential, PSI,
for up to 7 selected soil layers. Both linear and log K curves are shown.
Saturated K - BROOK90 versions from 3.23 on can run with KF as the saturated K, THETAF
= THSAT, and PSIF as the air-entry value, for instance with the original
Clapp-Hornberger values. However, users who do this must realize that
parameters RSSA, RSSB, QFPAR, and QFFC, which affect soil evaporation, surface
flow, and bypass flow are also defined in terms of field capacity as specified
by PSIF and THETAF; these processes therefore may not operate correctly and
should be turned off. Click on path names in Help - Flow Chart for how to
turn off specific paths.
Version 3.22
Infiltration through Layers - Added output selection of the
(macropore) infiltration downward
out of each layer. This variable did not previously have a name; it is now
called SLFL(I), the SoiL inFiLtration downward out of layer I. SLFL(I) only
occurs when INFEXP is greater than 0. Note that SLFL without subscript is
the infiltration into the soil surface - effectively SLFL(0) - and is unaffected
by the value of INFEXP. VRFL(I) (the vertical matrix flow out of a layer)
is only the matrix flow out of each layer, and does not include SLFL(I).
The total vertical flow out of a layer is VRFL(I) plus SRFL(I). This
is not clearly stated in the documentation or in Version 3.22 and earlier
Help. SLFL(I) either becomes bypass flow from deeper layers or becomes soil
water in deeper layers. VRFL(I) will generally increase with depth as SLFL(I)
decreases. For lysimeter work, users may want to assume that suction lysimeters
collect VRFL(I) whereas zero-tension lysimeters collect both VRFL(I) and
SLFLI(I).
Versions 3.1F and 3.1Q - April 18, 1997
Output with Precip Interval <1 Day - In Versions 3.1F and 3.1Q,
in the B90 main program under BEGIN PRECIP INTERVAL, .00001 should be changed
to -.01 and DTP changed to DT to read as follows:
  IF (MESFLP <= -.01) THEN MESFLP = MESFL / DT
  ELSE
  'one precip interval per day >
  MESFLP = MESFL / DT
  END IF
Also in POUTPUT.INC, MESFLP should not be divided by DTP in two places.
MESFLP is already a rate (unlike the other variable names ending in P, which
are totals for the precip interval). These MESFLP fixes only affect anyone
who has input or output measured flow with more than one precipitation interval
per day, that is, used a PRFILE.
Obscure Bug - In Version 3.1, in the routine TBYLAYER the first section
should read:
  FOR I% = 1 TO NLAYER%
  IF (RROOTI(I%) > 1E+15) THEN
  FLAG%(I%) = 1
  ELSE IF (NOOUTF% = 1 AND PSITI(I%) / 1000! <= PSICR) THEN
  FLAG%(I%) = 1
  ELSE
  FLAG%(I%) = 0
  END IF
  NEXT
This bug only appeared when MXRTLN was changed to zero for all layers in
the middle of a Version 3.2 run. FLAG%(I%) was erroneously not set to one
even when there were no roots, SUM was <1E-20, and the routine was exited
without setting ATRAN(I%) to zero. This should not have affected Version
3.1 runs where ATRANI(I%) would default to a zero value throughout the run
if there were no roots in any layer.
COMPASS BROOK