Functional storage curve of storage unit |
I use a storage unit with the storage curve defined as "functional", i.e. I enter a coefficient ("A-value"), an exponent ("B-value") and a constant ("C-value") as explained in the SVMM user manual chapter B.6 on page 175. In the GUI, doing this, there is a hint about the A-, B- and C-values: They are interpreted as physical quantities with unit [m] in the formula "area = A*depth^B + C".
To me this seems uncorrect. It seems that A, B and C and even depth are just numbers in a formula (not physical quantities), since depth would be measured in [m] or similar, which becomes nonesense, if B is not 0, 1 or 2.
So my first question is if you agree about this. In this case the hint in the GUI should be corrected.
My second question is, what number is used for depth, for example, is it the number of the physical quantity depth written with unit [m]? Or written in [ft]?
This is how the area is calculated in SWMM 5 (the area has internal units of square feet).
It is pretty straightforward:
If the "A-value" less than or equal to 0.0 then the area = "C-value" Else If "B-value" equals zero then the area = "A-value" Else area = "C-value" + "A-value" * (depth * unit conversion) ^ "B-value"
Where depth is the current simulation depth (feet) in the storage node. The depth is always in units of feet during the program. If you are using SI units the depths is converted to meters in the equation and the computed area is in square meters. The area is then converted to square feet for use in the program. The equation describes the relationship of the area to the depth and the exponent can be anything (an exponent of 0 implies constant area), (an exponent of is a linear increase in area by depth), (an exponent of 2 implies a parabolic relationship between area and depth).
I hope this is clear.
Or in terms of the code:
if ( Storage[k].aCoeff <= 0.0 ) area = Storage[k].aConst; else if ( Storage[k].aExpon == 0.0 ) area = Storage[k].aConst + Storage[k].aCoeff; else area = Storage[k].aConst + Storage[k].aCoeff * pow(d*UCF(LENGTH), Storage[k].aExpon); return area / UCF(LENGTH) / UCF(LENGTH);