Example #1
0
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]
Example #2
0
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]
Example #3
0
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]