def design_WSUR(Aimp, dcv, tarQ, tarTSS, tarTP, tarTN, soilK, maxsize ): #Design of Ponds & Lakes # input: Imparea = Impervious Area to treat # tarQ = Runoff reduction target # tarTSS = TSS reduction target # tarTP = TP reduction target # tarTN = TN reduction target # soilK = soil hydraulic conductivity # maxsize = maximum allowable system size if Aimp == 0: #if there is no impervious area to design for, why bother? return [np.inf, 1] #size the system psystem = ddcv.retrieveDesign(dcv, "PB", soilK, [tarQ, tarTSS, tarTP, tarTN, 100]) if psystem == np.inf: #if the system cannot be designed, it will return infinity return [np.inf, 1] system_area = Aimp * psystem #add extra area to the system (multipliers for batters) batter_multiplier = 1.3 Areq = system_area * batter_multiplier diff = Areq/system_area if Areq > maxsize: #if the final design exceeds the maximum allowable size, forget it! print "Warning, Maximum System Size Exceeded" return [np.inf, 1] return [Areq, diff]
def design_IS(Aimp, dcv, tarQ, tarTSS, tarTP, tarTN, soilK, maxsize ): #Design of Infiltration systems # input: Imparea = Impervious Area to treat # tarQ = Runoff reduction target # tarTSS = TSS reduction target # tarTP = TP reduction target # tarTN = TN reduction target # soilK = soil hydraulic conductivity # maxsize = maximum allowable system size if Aimp == 0: #if there is no impervious area to design for, why bother? return [np.inf, 1] #size the system psystem = ddcv.retrieveDesign(dcv, "IS", soilK, [tarQ, tarTSS, tarTP, tarTN, 100]) if psystem == np.inf: #if the system cannot be designed, it will return infinity return [np.inf, 1] system_area = Aimp * psystem #if the system design has passed to this point: i.e. not impossible and there is impervious to treat, then add planning constraints #find setback requirement based on soilK if soilK >= 3600: setback = 1.0 elif soilK >= 1800: setback = 1.0 elif soilK >= 360: setback = 1.0 elif soilK >= 180: setback = 1.0 elif soilK > 36: setback = 2 elif soilK > 3.6: setback = 4.0 #metres else: print "Soil is unsuitable for infiltration" return [np.inf, 1] Areq = m.pow((m.sqrt(system_area)+2*setback),2) diff = Areq/system_area if Areq > maxsize: #if the final design exceeds the maximum allowable size, forget it! print "Warning, Maximum System Size Exceeded" return [np.inf, 1] return [Areq, diff]
def design_BF(Aimp, dcv, tarQ, tarTSS, tarTP, tarTN, soilK, maxsize ): #Design of Biofiltration systems # input: Imparea = Impervious Area to treat # tarQ = Runoff reduction target # tarTSS = TSS reduction target # tarTP = TP reduction target # tarTN = TN reduction target # soilK = soil hydraulic conductivity # maxsize = maximum allowable system size if Aimp == 0: #if there is no impervious area to design for, why bother? return [np.inf, 1] #size the system psystem = ddcv.retrieveDesign(dcv, "BF", soilK, [tarQ, tarTSS, tarTP, tarTN, 100]) if psystem == np.inf: return [np.inf, 1] system_area = Aimp * psystem #if the system design has passed to this point: i.e. not impossible and there is impervious to treat, then add planning constraints #an infiltrating system (extra space around it required), determine the setback required if soilK > 180: setback = 1.0 #metres elif soilK > 36: setback = 2.0 #metres elif soilK > 3.6: setback = 4.0 #metres else: setback = 5.0 #metres Areq = m.pow((m.sqrt(system_area)+2*setback),2) diff = Areq/system_area #final check, if the system has exceeded maximum size, return 'impossible' = inf if Areq > maxsize: #if the final design exceeds the maximum allowable size, forget it! print "Warning, Maximum System Size Exceeded" return [np.inf, 1] return [Areq, diff]