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()
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()
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()
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()
def runQualityAnalysis(self): en.runQ(ph=self.epanet_proj)
ctx_stack.enter_context(NodeValueCSVWriter(fn, ph, nv)) for nv, fn in nodevalue_filename_list ] linkvalue_wrts = [ ctx_stack.enter_context(LinkValueCSVWriter(fn, ph, lv)) for lv, fn in linkvalue_filename_list ] ## Simulation loop while True: t = en.runH(ph) #print(f'time after runH: {t}') #print_node_heads(ph, t, node_count) tq = en.runQ(ph) assert tq == t, f'time after en.runQ ({tq}) != en.runH ({t})' for nv_wrt in nodevalue_wrts: nv_wrt(t) for lv_wrt in linkvalue_wrts: lv_wrt(t) hstep = en.nextH(ph) qstep = en.nextQ(ph) #print(f'hstep after nextH: {hstep}') if hstep == 0: break en.closeH(ph)