In my previous post I wrote about using the equations developed by Khastagir and Jayasuriya for the approximate sizing of rainwater tanks. I thought they were a useful way of rapidly estimating the required size of a rain tank, now I’m not so sure. Under some circumstances the equations don’t produce physically realistic results.

Khastagir and Jayasuriya suggested the required capacity of a rainwater tank can be estimated as follows:

(1)

Where:

*A*= Roof area (m^{2})*D*= Annual water demand (L/year)*R*= Rainfall (mm)*C*= Tank volume (L)

The constants,* a* and *b* depend on the reliability (see the table below).

Reliability (%) |
a |
b |

85 | 0.08 | 5.58 |

90 | 0.15 | 5.16 |

95 | 0.29 | 4.85 |

An issue with equation 1 is that it suggests a rather odd relationship between tank capacity and roof area. An example calculation for capacity as a function of roof area for D = 2000, R = 700 and 90% reliability is shown below.

The capacity is a minimum at about 100 m^{2} and then increases. This seems unlikely. I expected, that for a constant demand, rainfall, and reliability an increase in roof area would mean we could get by with a smaller tank. Or, at least the graph would asymptote to a constant capacity that was not sensitive to further increases in area.

The roof area for the minimum capacity shown in the figure can be calculated by taking the derivative of equation 1 and setting it equal to zero.

For for this example:

m^{2}

Substituting *A _{min}* back into equation 1 gives the minimum tank capacity.

For this example

L

I doubt this has any physical meaning. Equation 1 is based on dimensional analysis and in this case I’m not sure it has resulted in a physically realistic relationship between the variables. I’ll need to do some more work on this.

R code follows.

# Expression for tank capacity C <- expression(A^(3/2)*a*exp(b*(D/(A*R)))) C.f <- function(A){eval(C[[1]])} # as a function D <- 20000 R <-700 a <- 0.15 b <- 5.16 # plot the relationship par(oma=c(2,1,0,0)) curve(C.f, from=50, to=200, xlab=expression(paste('Roof area (', m^2,')')), ylab='tank capacity (L)', las=1) D(C, 'A') # take the derivative with respect to A # A^((3/2) - 1) * (3/2) * a * exp(b * (D/(A * R))) - A^(3/2) * # a * (exp(b * (D/(A * R))) * (b * (D * R/(A * R)^2))) # find where the derivative equals zero dC <- function(A) {eval(D(C, 'A'))[[1]]} uniroot(dC, c(10,500)) # $root # [1] 98.28572 roof area for minimum storage C.min <- C.f(uniroot(dC, c(10,500))$root) C.min # [1] 655.0411 # minimum storage # Minimum storage can also be calculated... C.min.1 <- a*(2*b*D/(3*R))^(3/2)*exp(3/2) C.min.1 # [1] 655.0411

Pingback: Approximate sizing of rainwater tanks – III | tonyladson