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()
def test_closeh(): 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.closeH(ph=epanet_proj) en.close(ph=epanet_proj) assert not res clean_dir()
def setupEpanet(self): """ This method sets up the epanet project. """ # Create epanet project. self.project = en.createproject() # Read network data from input file. en.open(ph=self.project, inpFile=self.inputPath, rptFile=self.rptFile, outFile=self.outFile) # Open and init hydaulic solver. en.openH(ph=self.project) en.initH(ph=self.project, initFlag=en.NOSAVE)
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_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()
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()
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()
def initializeHydraulicAnalysis(self): en.initH(ph=self.epanet_proj, initFlag=0)
ph = en.createproject() en.open(ph, args.input_filename, args.report_filename, args.binary_filename) en.openH(ph) ## Set time step hstep = en.gettimeparam(ph, en.HYDSTEP) print(f'Hydraulic time step was: {hstep}', end='') hstep = args.hstep en.settimeparam(ph, en.HYDSTEP, hstep) print(f', setting to: {hstep}') ## Other initialisation en.setstatusreport(ph, en.NORMAL_REPORT) en.initH(ph, en.SAVE) #en.setreport(ph, 'SUMMARY YES') #en.setreport(ph, 'NODES ALL') #en.setreport(ph, 'LINKS ALL') #en.settimeparam(ph, en.REPORTSTEP, 600) node_count = en.getcount(ph, en.NODECOUNT) link_count = en.getcount(ph, en.LINKCOUNT) en.openQ(ph) en.initQ(ph, en.NOSAVE) print(f'Node count: {node_count}, link count: {link_count}') with contextlib.ExitStack() as ctx_stack: nodevalue_wrts = [ ctx_stack.enter_context(NodeValueCSVWriter(fn, ph, nv))
def init(self): toolkit.initH(self.ph)