コード例 #1
0
def test_openh():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    res = en.openH(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert not res
    clean_dir()
コード例 #2
0
def getNodeSourceQuality():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj,
            inpFile=example_1_path,
            rptFile='report.rpt',
            outFile='output.out')
    en.setqualtype(ph=epanet_proj,
                   qualType=1,
                   chemName='Chlorine',
                   chemUnits='mg/L',
                   traceNode=None)
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    source_qual_list = []
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    en.openQ(ph=epanet_proj)
    en.initQ(ph=epanet_proj, saveFlag=1)
    #sets source_ind as booster, need to find a way to acknowledge pre-set boosters
    #en.setnodevalue(ph=epanet_proj, index=source_ind, property=en.SOURCETYPE, value=1)
    for i in range(1, num_nodes + 1):
        node_type = en.getnodevalue(ph=epanet_proj,
                                    index=i,
                                    property=en.SOURCETYPE)
        if node_type == 1:
            source_qual = en.getnodevalue(ph=epanet_proj,
                                          index=source_ind,
                                          property=en.SOURCEQUAL)
            print('Node (index %d) source quality: %5.2f' % (i, source_qual))
            source_qual_list.append(source_qual)
    print('End of getNodeSourceQuality function.')
    en.closeH(ph=epanet_proj)
    en.closeQ(ph=epanet_proj)
    en.close(ph=epanet_proj)
    clean_dir()
コード例 #3
0
def test_water_age_sim():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.setqualtype(ph=epanet_proj, qualType=2, chemName='Age', chemUnits='hours', traceNode=None)
    en.solveH(ph=epanet_proj)
    en.openQ(ph=epanet_proj)
    en.initQ(ph=epanet_proj, saveFlag=1)
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    age_list = []
    while True:
        node_age_list = []
        en.runQ(ph=epanet_proj)
        t = en.nextQ(ph=epanet_proj)
        for i in range(1, num_nodes*1):
            node_qual = en.getnodevalue(ph=epanet_proj, index=i, property=en.QUALITY)
            node_age_list.append(node_qual)
        age_list.append(node_age_list)
        if t <= 0:
            break
    en.closeQ(ph=epanet_proj)
    en.closeH(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert age_list[26] == [1.0, 2.2141675704376946, 12.939125434025273, 24.44152992466322, 13.174235412569542,
                            24.441519659540887, 15.679376648181817, 21.97064181429266, 19.048343501261524, 1.0]
    clean_dir()
コード例 #4
0
def test_getqualtype():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    qual_type = en.getqualtype(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert qual_type == [1, 0]
    clean_dir()
コード例 #5
0
def test_set_qualtype():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.setqualtype(ph=epanet_proj, qualType=2, chemName='Age', chemUnits='seconds', traceNode=None)
    qual_type = en.getqualtype(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert qual_type == [2, 0]
    clean_dir()
コード例 #6
0
def test_close():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj,
            inpFile=example_1_path,
            rptFile='report.rpt',
            outFile='output.out')
    en.close(ph=epanet_proj)
    clean_dir()
コード例 #7
0
def test_solveh_solveq():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.solveH(ph=epanet_proj)
    en.solveQ(ph=epanet_proj)
    en.report(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert os.path.isfile('output.out')
    clean_dir()
コード例 #8
0
def test_runh():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    res = en.runH(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert res == 0
    clean_dir()
コード例 #9
0
def test_water_quality():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.setqualtype(ph=epanet_proj, qualType=1, chemName='Chlorine', chemUnits='mg/L', traceNode=None)
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    num_links = en.getcount(ph=epanet_proj, object=en.LINKCOUNT)
    tlist = []
    node_cl_list = []
    link_cl_list = []
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    print('Printing hydraulic time step:')
    while True:
        en.runH(ph=epanet_proj)
        t = en.nextH(ph=epanet_proj)
        print(t)
        tlist.append(t)
        if t <= 0:
            break
    assert tlist == timesteps
    en.openQ(ph=epanet_proj)
    en.initQ(ph=epanet_proj, saveFlag=1)
    print('Printing chlorine concentration in nodes:')
    while True:
        en.runQ(ph=epanet_proj)
        t = en.nextQ(ph=epanet_proj)
        for i in range(1, num_nodes+1):
            node_qual = en.getnodevalue(ph=epanet_proj, index=i, property=en.QUALITY)
            print('Node %d: %5.2f' % (i, node_qual))
            node_cl_list.append(node_qual)
        if t <= 0:
            break
    print('Printing chlorine concentration in links:')
    while True:
        en.runQ(ph=epanet_proj)
        t = en.nextQ(ph=epanet_proj)
        for i in range(1, num_links+1):
            link_qual = en.getlinkvalue(ph=epanet_proj, index=i, property=en.QUALITY)
            print('Node %d: %5.2f' % (i, link_qual))
            link_cl_list.append(link_qual)
        if t <= 0:
            break
    en.closeH(ph=epanet_proj)
    en.closeQ(ph=epanet_proj)
    en.close(ph=epanet_proj)
    clean_dir()
コード例 #10
0
def test_stepq():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.solveH(ph=epanet_proj)
    en.openQ(ph=epanet_proj)
    en.initQ(ph=epanet_proj, saveFlag=1)
    tlist = []
    while True:
        en.runQ(ph=epanet_proj)
        tleft = en.stepQ(ph=epanet_proj)
        tlist.append(tleft)
        if tleft <= 0:
            break
    en.closeQ(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert tlist[:60] == wq_times
    clean_dir()
コード例 #11
0
def test_get_count():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    print(num_nodes)
    num_links = en.getcount(ph=epanet_proj, object=en.LINKCOUNT)
    print(num_links)
    num_tanks = en.getcount(ph=epanet_proj, object=en.TANKCOUNT)
    print(num_tanks)
    num_pat = en.getcount(ph=epanet_proj, object=en.PATCOUNT)
    print(num_pat)
    num_curv = en.getcount(ph=epanet_proj, object=en.CURVECOUNT)
    print (num_curv)
    num_contr = en.getcount(ph=epanet_proj, object=en.CONTROLCOUNT)
    print (num_contr)
    en.close(ph=epanet_proj)
    clean_dir()
コード例 #12
0
def test_initq_runq_nextq():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.solveH(ph=epanet_proj)
    en.openQ(ph=epanet_proj)
    en.initQ(ph=epanet_proj, saveFlag=1)
    tlist = []
    while True:
        en.runQ(ph=epanet_proj)
        t = en.nextQ(ph=epanet_proj)
        tlist.append(t)
        if t <= 0:
            break
    en.closeQ(ph=epanet_proj)
    en.report(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert tlist == timesteps
    clean_dir()
コード例 #13
0
def test_inith_runh_nexth():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    tlist = []
    print('Printing hydraulic time step:')
    while True:
        en.runH(ph=epanet_proj)
        t = en.nextH(ph=epanet_proj)
        print(t)
        tlist.append(t)
        if t <= 0:
            break
    en.closeH(ph=epanet_proj)
    en.close(ph=epanet_proj)
    assert tlist == timesteps
    clean_dir()
コード例 #14
0
def inject_chlorine(str_nodeID, booster_val):
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj,
            inpFile=example_1_path,
            rptFile='report.rpt',
            outFile='output.out')
    en.setqualtype(ph=epanet_proj,
                   qualType=1,
                   chemName='Chlorine',
                   chemUnits='mg/L',
                   traceNode=None)
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    num_links = en.getcount(ph=epanet_proj, object=en.LINKCOUNT)
    tlist = []
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    en.openQ(ph=epanet_proj)
    booster_node = en.getnodeindex(ph=epanet_proj, id=str_nodeID)
    print('Booster node index is %d' % (booster_node))
    #sets node as Mass Booster
    en.setnodevalue(ph=epanet_proj,
                    index=booster_node,
                    property=en.SOURCETYPE,
                    value=1)
    en.setnodevalue(ph=epanet_proj,
                    index=booster_node,
                    property=en.SOURCEQUAL,
                    value=booster_val)
    nodetype = en.getnodevalue(ph=epanet_proj,
                               index=booster_node,
                               property=en.SOURCETYPE)
    obj = QualityControl(1)  #seems to set nodetype to 1
    #obj.set_nodetype(1) runs automatically
    print(obj.get_nodetype())  #checking
    en.initQ(ph=epanet_proj, saveFlag=1)
    node_qual = en.getnodevalue(ph=epanet_proj,
                                index=booster_node,
                                property=en.SOURCEQUAL)
    print('Booster node source quality: %5.2f' % (node_qual))
    #print('End of inject chlorine function.')
    en.closeH(ph=epanet_proj)
    en.closeQ(ph=epanet_proj)
    en.close(ph=epanet_proj)
    clean_dir()
コード例 #15
0
 def __del__(self):
     # Close solver.
     en.closeH(ph=self.project)
     # Close project.
     en.close(ph=self.project)
コード例 #16
0
 def __del__(self):
     toolkit.close(self.ph)
     toolkit.deleteproject(self.ph)
コード例 #17
0
def test_hydraulic():
    epanet_proj = en.createproject()
    en.open(ph=epanet_proj, inpFile=example_1_path, rptFile='report.rpt', outFile='output.out')
    en.openH(ph=epanet_proj)
    en.initH(ph=epanet_proj, initFlag=0)
    num_nodes = en.getcount(ph=epanet_proj, object=en.NODECOUNT)
    num_links = en.getcount(ph=epanet_proj, object=en.LINKCOUNT)
    tlist = []
    head_list = []
    demand_list = []
    flow_list = []
    length_list = []
    diam_list = []
    vel_list = []
    print('Printing hydraulic time step:')
    while True:
        en.runH(ph=epanet_proj)
        t = en.nextH(ph=epanet_proj)
        print(t)
        tlist.append(t)
        if t <= 0:
            break
    assert tlist == timesteps
    print('Printing demand in nodes:')
    for node_ind in range(1, num_nodes+1):
        en.runH(ph=epanet_proj)
        demand = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.BASEDEMAND)
        print('Node %d: %5.2f' % (node_ind, demand))
        demand_list.append(demand)
    print('Printing head in nodes:')
    for node_ind in range(1, num_nodes+1):
        en.runH(ph=epanet_proj)
        head = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.HEAD)
        print('Node %d: %5.2f' % (node_ind, head))
        head_list.append(head)
    print('Printing flowrate in links:')
    for link_ind in range(1, num_links+1):
        en.runH(ph=epanet_proj)
        flow = en.getlinkvalue(ph=epanet_proj, index=link_ind, property=en.FLOW)
        print('Link %d: %5.2f' % (link_ind, flow))
        flow_list.append(flow)
    print('Printing length of links:')
    for link_ind in range(1, num_links+1):
        en.runH(ph=epanet_proj)
        length = en.getlinkvalue(ph=epanet_proj, index=link_ind, property=en.LENGTH)
        print('Link %d: %5.2f' % (link_ind, length))
        length_list.append(length)
    print('Printing diameter of links:')
    for link_ind in range(1, num_links+1):
        en.runH(ph=epanet_proj)
        diam = en.getlinkvalue(ph=epanet_proj, index=link_ind, property=en.DIAMETER)
        print('Link %d: %5.2f' % (link_ind, diam))
        diam_list.append(diam)
    print('Printing velocity in links:')
    for link_ind in range(1, num_links+1):
        en.runH(ph=epanet_proj)
        vel = en.getlinkvalue(ph=epanet_proj, index=link_ind, property=en.VELOCITY)
        print('Link %d: %5.2f' % (link_ind, vel))
        vel_list.append(vel)
    en.closeH(ph=epanet_proj)
    en.close(ph=epanet_proj)
    clean_dir()