Technical Notes

Converted from the original 2010 html file to an RMarkdown file, with some light editing, in April 2020 (and a further correction to the explanation of highest permissible filtered flow in Nov 2020)


This calculator was developed for the Little Stringybark Creek project by:

  • Christopher J Walsh, The University of Melbourne(maintainer:;

  • Tim D Fletcher, Monash University;

  • Darren Bos, University of Melbourne;

  • Sharyn Rossrakesh, Melbourne Water;

  • Veronika Nemes, Claire Edwards and Andrew O’Keefe, Department of Sustainability and Environment, Victoria;

(with subsequent improvements to the underlying code by Rhys Eddy of Enviss P/L).

This page gives the full technical details of the revised EB calculator that was used for the Stormwater Fund, beginning 15 Feb 2010. <Technical details of the original (now non-functional) EB calculator (used for the Stormwater Tender 2008-2009) can be found here.

The pollutant removal in EB calculator is derived from research undertaken at the Facility for Advancing Water Biofiltration (FAWB: see We particularly wish to thank Dr. Belinda Hatt and Assoc. Prof. Ana Deletic for their contribution. The infiltration modelling was assisted by advice and calibration from Dale Browne (Department of Civil Engineering, Monash University).

It uses RStudio Shiny, a package that permits a web-based applications using the mathematical and statistical program R.

The calculator uses two primary models written as R functions: tankmodel() and gardenmodel(), both in the file modelfunctions.R. Running these in R allows more flexibility: other rainfall records can be used, uses of tank water other than the calculator’s limited options can be modelled (the ‘other’ argument in tankmodel), other soil profiles can be used (using the functions filter.profile() to produce a data frame that is used for the filtr.prfile argument of gardenmodel()).

More complex treatment trains can be calculated in R as well, using the functions and (see this page for more information.)

Overview of the differences between the old and new EB calculators

  • The new web calculator has been somewhat simplified, with fewer options (e.g consideration of unconnected surfaces, or the presence of septic tanks are no longer included): however, the new calculator gives the option of tanks with leaks for passive irrigation (which can substantially increase environmental benefit with little loss of yield from the tank);

  • The old raingarden model assumed a uniform infiltration rate for surrounding soils. The new model assumes a variable soil profile closer to that observed in systems already built in Mt Evelyn. The infiltration capacity of the underlying soil = 0.005 mm/h, while that of the surface 30 cm is assumed to be 2.5 mm/h;

  • The old EB index was based on three subindices:

    1. reduction in flow frequency,

    2. reduction in nitrogen export, and

    3. volume of water consumed.

    The new EB index is based on four sub indices that are of more direct ecological relevance to streams:

    1. reduction in flow frequency (as before),

    2. equivalence between the pre-urban volume of subsurface flows and filtered flows from rain-gardens,

    3. median concentrations of 3 pollutants in filtered flows from rain-garden (N, P, TSS), and

    4. reduction in total volume of water exported (can be used or lost through evapo-transpiration).

  • The old raingarden model assumed an erroneously high evapotranspiration (ET) loss (to correct for the overly conservative soil profile assumption). The new model assumes ET loss from a wet, vegetated raingarden of x m\(^2\) is equivalent to the theoretical potential ET loss from x m\(^2\) (using Bureau of Meteorology PET estimates). Unvegetated systems are assumed to have no ET loss. However, if an unlined raingarden is within 3 m of at least one large tree, the effective area available for ET loss is assumed to be equal to half the canopy area of the tree(s) (+ area of raingarden, if vegetated).

Rainfall data used by the calculator

The calculator uses the rainfall record from Croydon, which is a few km west of Mt Evelyn. So, the results produced will be applicable for most of the eastern suburbs of Melbourne, and any other area with similar climate (temperate, mean annual rainfall of ~900 mm), and with thick, clayey soils.

The caculator uses 3 years of rainfall data:

  • an average year, 1965 (actually Apr 1965 – Mar 1966), 956 mm;

  • a dry year, 1967, 661 mm;

  • a wet year, 1970, 1085 mm.

The old tankmodel calculated EB indices using the mean value for all three years, and the old gardenmodel used just data from 1965. In the new version, both the raingarden and tank models calculate EB indices using just 1965 data, although the web calculator uses the wet and dry year for graphical comparisons. The new calculator now gives the option of trying two other rainfall series (but these only use a single (average) year for now.

Still not enough detail for you? Read on!

The R function tankmodel() estimates tank water usage and overflow frequency. This function requires input of the following variables (some of which the EB calculator requires the user to enter, and others that the calculator assumes values for).

  • Daily runoff or rainfall data. EB calculator uses daily runoff data for Croydon over three years that were chosen from the available record (6 minute records) from that site for which there was no missing data, and no accumulated data >1 day in duration. The three years chosen represent a year with average rainfall (1965: actually 1 Apr 1965 – 31 Mar 1966, with 950 mm of rain), a dry year (1967 with 660 mm), and a wet year (1970, with 1085 mm). Runoff was derived from hourly data (while none of the chosen years had missing data, 1967 and 1970 each had nine blocks for which rainfall was aggregated, ranging from 2 to 24 hours: for all but 3 of these blocks, the aggregated data was distributed across the blocks in proportion to rain that was recorded at the Melbourne station over the same block. For the remaining 3 blocks for which Melbourne also lacked data (all <8 h), the aggregated rainfall was distributed evenly across the block. Runoff was estimated from the hourly data by assuming that the first 1 mm in a rain event was lost to evaporation (and therefore did not become runoff), and that a rain event was defined as any record of rain that followed at least one hour of zero recorded rain. This calculation of hourly runoff for the Croydon record was calculated using the function compile.inflow(), and then converted to daily runoff. EB indices are calculated using 1965 data, but all three years are used for graphical comparisons.

  • Tank volume, and the volume of water in the tank at the beginning of the simulation. EB calculator uses the value entered for tank volume in the second tab of the web interface, and assumes that the tank was 50% full at the start of the simulation.

  • Catchment area for the tank. EB calculator uses the roof area values entered in the ‘Your tank’ tab for this variable.

  • Initial loss of rainfall before it becomes runoff. EB calculator sets this to zero, because initial loss has been estimated already in the runoff input vector.

  • First flush volume. EB calculator requires this as an input. There are many types of first flush diverters that divert varying amounts of water from the tank before allowing runoff to enter. Acritical assumption for EBI calculator is that any diverted first flush water either overflows to the modelled raingarden, or if there is no raingarden to the property’s normal garden. If first flush water is diverted to a stormwater drain, then the estimated benefit to the stream should be considered zero.

  • Number of people living in the house. EB calculator uses the number of people entered in the first tab. This is used to calculate consumption patterns as below.

Water usage volumes are assumed as follows (after Wilkenfield and associates 2006). When each use is selected on the second tab the following values are used.

  • Toilet. The calculator assumes toilets use 18.9 L per person per day.

  • Washing machine. The calculator assumes washing machines use 35.31 L per day for the first person and 23.54 L for each additional person.

  • Hot water systems. The calculator assumes that hot water systems use 46.9 L per person per day (calculated from Wilkenfield’s estimate of 61.9 minus half the washing machine use).

  • Garden area. The calculator uses the value entered in the second tab.

  • Annual outdoor irrigation and monthly distribution. EBI calculator assumes garden watering uses 12,971 L/100 m\(^2\) of garden per year, spread over the 12 months of the year in the following proportions: 0.27, 0.21, 0.09, 0.07, 0.05, 0, 0, 0, 0.03, 0.04, 0.04, 0.2.

  • Other uses. The tankmodel() function allows the user to supply their own monthly usage patterns which are then spread evenly across the days of each month. The calculator assumes zero other uses, but allows them to be entered in the second tab. Use for drinking and car-washing has very small effects on yield, and have not been included as options. They could be included as part of other uses.

The EB calculator takes uses selected and the number of people and calculates and estimated daily demand for the house for water from the tank, over the 3 years. (The program actually uses a matrix of demand patterns for all possible combinations of uses for the given number of people and the given garden area.) For each day over the period, inflow from runoff is added to the volume in the tank at the end of the previous day and subtracts the demand that can be extracted from the available volume. If the demand exceeds the volume in the tank at the start of the day, then only the available volume is used. If the inflow exceeds the space available in the tank after demand is extracted, then the excess is assumed to overflow from the tank.

tankmodel() records the complete time series of water consumed, that overflowed and that remained in the tank each day. The function tankEBstats() takes each series and calculates two of the four sub- indices (overflow frequency and volume reduction). Tanks score zero for the other two sub-indices: filtered flow volume and filtered flow pollutant concentrations (because tanks do not restore lost infiltration flows). The EB score is the average of the four sub-indices (2 scoring zero), calculated for the average year (1965).

The flow-frequency sub-index is a measure of the reduction in runoff frequency afforded by the tank. It is assumed that runoff is generated from the roof 121 d/y, and that overland flow would have been generated from the pre-urban forest floor 12 d/y. Furthermore, it is assumed that any impervious areas that are not connected to the formal (piped) stormwater drainage system do not contribute to increased runoff frequency (while this is unlikely to be the case, the finding that such areas currently have no detectable environmental impact compared to the directly connected impervious areas, they are not considered a high priority for treatment). The flow-frequency sub-index is calculated as:

\[ \begin{aligned} FF = (1 - max(\frac{R_g - R_n}{R_u - R_n}), 0) * A/100 \end{aligned} \]

where A = the area (m\(^2\)) of currently connected roof to be drained by the tank; R\(_g\) = number of days of runoff per year from the roof following treatment by tank (or garden, see below); R\(_n\) = frequency of runoff from the roof in pre-urban state (12 d/y; R\(_u\) = frequency of runoff from the roof before treatment (121 d/y). All three indices are standardized by impervious catchment area: one unit measures the environmental benefit from 100 m\(^2\).

The volume reduction target is based on the understanding that the replacement of vegetation by roofs or paving reduces the amount of rainwater that is lost back to the air through evapotranspiration. In the forest of Mt Evelyn before development, 85% of average annual rainfall was lost back to the air, and only 15% drained to the creek. The optimal target therefore is for 85% of rainfall to be used (in houses and exported to the sewerage treatment plant), or to be lost through vegetation.

The volume-reduction sub-index is calculated as:

\[ \begin{aligned} VR = (1 - \frac{V_g - V_n}{V_u - V_n}) * A/100 \end{aligned} \] where V is the runoff volume, and other conventions as for FF.

If a tank system uses all runoff that drains to it, it is possible for this subindex to be as high as 1.36 (in this region). We have chosen to encourage as much extraction as possible from tanks, because we know it will be impossible to lose the target volume of runoff from rain-gardens in this catchment.

The overall EB score for a tank without any infiltration = (0.25 x FF + 0.25 x VR). The maximum potential EB score for a 100 sq m impervious surface is 1. The maximum EB score a rainwater tank treating such a surface (without a leak for passive irrigation) can score is 0.59: [0.25* x 1 + 0.25 x 1.36]. If an appropriate slow leak is incorporated into the tank design to allow passive irrigation of an appropriately large area of garden, restoration of lost infiltration and evapotranspiration losses are achievable, meaning closer to the maximum potential score is possible.

The EB calculator allows the modelling of four simple scenarios:

  1. a tank by itself,

  2. a rain-garden by itself

  3. a tank and a rain-garden with novinteraction (note in this case, an unchecked assumption is that diverted first flush water from the tank goes to the garden and not the stormwater drain), and

  4. a tank whose overflow (and first flush) drains to the raingarden.

More complex scenarios can be modelled by using the R-functions outside the webpage environment, or by running EBI calculator in separate runs and doing some simple calculations. For instance, to estimate the EB improvement of connecting an existing rainwater tank to household appliances, first calculate EB scores for the existing set up, and then calculate the scores for the proposed set up. The EB improvement that could attract a rebate is the difference between the two.

Raingarden behaviour is modelled using the function gardenmodel(). It uses hourly inflow data. If there is no tank upstream, the model uses hourly rainfall data from Croydon (1965, as above -other rainfall data can be used if gardenmodel is run using R: see above), converted to impervious runoff (by removing the first mm of rain in each day), and multiplied by the impervious catchment area to get inflow in litres per hour. If there is a tank upstream, then the daily overflow (and firstflush, if relevant) volume from the tank is converted to hourly data (with the overflow volume distributed among the hours to match the hourly runoff pattern). This calculation of inflows from a tank is done with with the functions distribute.firstflush(), distribute.overflow(), and compile.inflow().

The gardenmodel() function requires a filter profile as an input. The default filter profile for Mt Evelyn is as follows:

















This default profile assumes a pond depth of 20cm (0.2 dm, porosity of air = 1: this depth is subtracted from subsequent depths to calculate depth below the soil surface), and filter medium of loamy sand (to soil depth of 55cm (5.5 dm), porosity =0.4, with underlying gravel to 100cm deep (porosity = 0.6). It assumes that the top 30 cm (3 dm) has an infiltration capacity of 0.25 dm/h (25 mm/h), with the underlying soils with much lower infiltration capacity (0.005 mm/h). This soil profile is a close approximation to that found in our monitored raingarden.

These values are changed as a result of the pond and filter depths, depth of surface soil, and medium values that are entered on the web page. The depth of surface soil is zero for conventional rain-gardens, but a 60cm deep, sub-lawn gravel-filled infiltration system under 10 cm of surface soil would have depth of surface soil = 10cm). The soil profile for such a system would be adjusted to the following value:











The web page asks for dimensions of the rain-garden that allow it to adjust the above soil profiles, and to calculate the area and perimeter of the filter and pond. It also asks if the bottom is lined, and how much of the sides are lined. From this information, the gardenmodel works out the volume of water that can exfiltrate out through the sides or bottom of the garden at each time step given the depth of water in the garden. The web version assumes that the underlying infiltration rate is also 0.005 mm/h, but this can be altered using the argument in the R version of the model.

The web page asks if the raingarden is vegetated (setting the isveg argument in the R model). If vegetated the model assumes that water is lost from the garden (when it contains any) at a rate equivalent to the potential evapotranspiration rate for Croydon. (Other transpiration rates could be incorporated by including in the rainfall input file.) If it is unvegetated no evapotranspiration is assumed. (Infiltration systems that are sunk below turf should be considered unvegetated as grass roots are unlikely to be deep enough to access water in the system). However, any infiltration system that is at laeast partly unlined is assumed to be accessible by trees within 3 m of the system. The calculator asks for the area (the web page asks for the diameter and converts to area) of the canopy of any nearby trees. The calculator assumes that nearby trees lose water to evapo-transpiration at 0.5 times the potential rate from their canopy area.

The critical variables in the gardenmodel() function are Af (area of filter), Ap (area of pond), carea (impervious catchment area) all in sq m; Pf (perimeter of filter), Hf (height of the medium-filled filter), Hp (height of pond), Ho (Height of outlet pipe, if present), all in m (entered as cm on the web page). The web page assumes that an outlet pipe will be choked to permit an outflow at the rate of (impervious catchment area + filter area) * 0.3. This is approximately 3 times the median baseflow in Olinda Creek (a separation of low and high flow: Clausen and Biggs 1997; Poelsma, Fletcher, and Burns 2013), and is therefore the highest permissible filtered flow. If the outlet pipe is a standard unchoked agricultural pipe, then outlet.rate.L.h should equal the infiltration rate of the filtration medium.

The gardenmodel() steps through each time step, distributing existing water in the system plus inflow water between pond, filter, outlet pipe (if present), surrounding soils through exfiltration, and if the capacity of each of these sinks is exceeded by inputs, then water is allocated to overflow. Water quality of the filtered water flowing out of the system is modelled as follows.

Nitrogen concentration of stormwater inflows is assumed to be 2.2 mg/L. Overflow water is assumed to have the same nitrogen concentration as inflow water. and nitrogen removal is modelled according to the following table, and the resulting concentrations are assumed for water flowing out through the outflow pipe, as well as water exfiltrating into the surrounding soils (as it is assumed that N loss from soils is minimal, as it will be dominated by nitrate which is mobile through soils):





Loamy sand



if ADWP <= 4 days, then 59%, else 59% - 0.3% * ADWP (in days)

Loamy sand



if ADWP <= 5 days, then -101%, else -101% - 0.2% * ADWP (in days)









Gravel (Scoria)




Notes: ADWP = Antecedent dry-weather period; The calculator does not allow the option of a vegetated gravel rain-garden.

Phosphorus concentration of inflow water is assumed to equal 0.35 mg/L. For outflow pipe water from sand or loamy sand systems, phosphorus concentration is assumed to be 26% of inflow concentration if vegetated, and 14% of inflow concentrations in unvegetated systems. Unvegetated gravel systems are assumed to reduce P concentrations by 20%. Water that exfiltrates into surrounding soils is assumed to lose almost all phosphorus, with a concentration of 0.001 mg/L assumed.

It is assumed that all sand or loamy sand systems are very efficient at reducing total suspended solids (99% removal through outlet pipes). Unvegetated gravel systems are assumed to reduce TSS concentrations by 20%.

The gardenmodel() function produces a list of the following values:

  • budget, a list of vectors of hourly values for inflow (flowin), outflow through an outlet pipe if present (out), evapotranspiration loss (et), nitrogen load in outflow (Nout), nitrogen concentration of outflow (Nconcout), phosphorus concentration of outflow (Pconcout), total suspended solid concentration of outflow (TSSout), overflow (over), volume of water in pond (store.pond), volume of water in filter (store.filter), exfiltration flow to surrounding soils (Qexf), height of water in system (

  • filter profile used.

The environmental benefit scores are calculated using the function garden.EBstats, which requires as input:

  • budget, as above;

  • carea, impervious catchment area of direct runoff inputs into raingarden;

  • gardenarea, area of the filter;

  •, mean annual rainfall, set to 950 mm for Mt Evelyn in the web page;

  •, target number of days for overflow from the system, set to 12 for Mt Evelyn;

  • ndaysro.urban, number of days of impervious runoff = number of days with >1 mm rainfall, set to 121 for Mt Evelyn;

  •, target x percentile nitrogen concentration for any flow out of the system, set to 0.6 mg/L for Mt Evelyn;

  •, target x percentile phosphorus concentration for any flow out of the system, set to 0.05 mg/L for Mt Evelyn;

  •, target x percentile nitrogen concentration for any flow out of the system, set to 20 mg/L for Mt Evelyn;

  • percentile, value of x in the above percentiles, set to 50, i.e. medians;

  •, permissible flow rate out of the outflow pipe.

The EB score of the garden is calculated based on the total area of all upstream impervious surfaces: those draining directly to the garden plus catchment areas of any tanks that drain into the garden. The EB score is the mean of four sub-indices:

  1. The flow-frequency sub-index, FF.

  2. The volume-reduction index, VR. Both of these indices were described for tanks, above.

  3. The water-quality sub-index, WQ, calculated as the mean of the following three sub-sub-indices:

\[ \begin{aligned} (1 - max(\frac{[N]_g - [N]_t}{2.2 - [N]_t}),0) * A/100 \end{aligned} \] \[ \begin{aligned} (1 - max(\frac{[P]_g - [P]_t}{0.35 - [P]_t}),0) * A/100 \end{aligned} \] \[ \begin{aligned} (1 - max(\frac{[TSS]_g - [TSS]_t}{150 - [TSS]_t}),0) * A/100 \end{aligned} \] where [N], [P], [TSS] are concentrations of nitrogen, phosphorus and total suspended solids, respectively. [X]\(_g\) is the median (or other defined percentile) concentration of element [X] flowing from the system, and [X]\(_t\) is the target concentration as defined above. The first number in each denominator is the assumed concentration of untreated stormwater in mg/L. A is the impervious catchment area, as defined above for the other sub-indices.

  1. The filtered flow volume index, FV, calculated as:

\[ \begin{aligned} if(FV_g < FV_{forest}), FV = \frac{FV_g}{FV_{forest}} * A/100 \end{aligned} \] \[ \begin{aligned} if(FV_g > FV_{pasture}), FV = max(1-\frac{FV_g-FV_{pasture}}{FV_{forest}},0) * A/100 \end{aligned} \] \[ \begin{aligned} else, FV = A/100 \end{aligned} \]

where FV\(_g\) = the volume of filtered water flowing out of the system, both through the outlet pipe (if present), and through exfiltration to the surrounding soils. FV\(_{forest}\) and FV\(_{pasture}\) represent the bounds of ideal filtered flow volume. They are derived from the model of Zhang, Dawes, and Walker (2001) that predicted evapotranspiration and runoff from catchments with forest and pasture vegetation, as a function of annual rainfall (Fig. 1). Following the logic above for volume reduction, we assume the ideal volume of filtered flow corresponds to the volume of stream flow generated from a forest. However, we assume that good ecological health would still be feasible if stream flow volumes approached the volumes generated by grassed catchments. We therefore award systems a perfect score for the filtered volume index if the filtered volume is between the runoff volume from a forest and that from pasture.

Fig. 1. A. the stream flow coefficients from forested and grassed (pasture) catchments as predicted by annual rainfall (Zhang, Dawes, and Walker 2001). The black squares indicate the predicted stream flow coefficients for a catchment with Mt Evelyn’s rainfall. B. The relationship between the filtered volume (as a proportion of total runoff) and FV in Mt Evelyn.


Clausen, B., and B. J. F. Biggs. 1997. “Relationships Between Benthic Biota and Hydrological Indices in New Zealand Streams.” Journal Article. Freshwater Biology 38 (2): 327–42.

Poelsma, P.J, T D Fletcher, and M. J. Burns. 2013. “Restoring Natural Flow Regimes: The Importance of Multiple Scales (La Restauration d’un Régime d’écoulement Naturel : La Mise En Oeuvre à Plusieurs échelles).” Conference Proceedings. In Novatech, edited by J-L Bertrand-Krajewski and TD Fletcher. GRAIE.

Wilkenfield and associates. 2006. “Water Saving Requirements for New in Victoria: Options for Flexible Compliance.” Department of Sustainability and Environment, Melbourne, Australia.

Zhang, L., W. R. Dawes, and G. R. Walker. 2001. “Response of Mean Annual Evapotranspiration to Vegetation Changes at Catchment Scale.” Journal Article. Water Resources Research 37: 701–8.