def junctions(self): nodes = [] num_nodes = toolkit.getcount(self.ph, toolkit.NODECOUNT) for node in range(1, num_nodes + 1): if toolkit.getnodetype(self.ph, node) == toolkit.JUNCTION: nodes.append(toolkit.getnodeid(self.ph, node)) return nodes
def getNodeTypeIndex(self): value = range(1, self.NodeCount + 1) # print(value) nodeTypeIndex = list() for i in value: # print(i) type = en.getnodetype(ph=self.epanet_proj, index=i) # print(type) nodeTypeIndex.append(type) return nodeTypeIndex
def print_node_heads(ph, time, node_count): print(f'Time: {time}') for i in range(1, node_count + 1): node_type = en.getnodetype(ph, i) node_id = en.getnodeid(ph, i) head = en.getnodevalue(ph, i, en.HEAD) pressure = en.getnodevalue(ph, i, en.PRESSURE) demand = en.getnodevalue(ph, i, en.DEMAND) print( f'Node: {i:2}, ID: {node_id}, type: {node_type_str[node_type]},', f'head: {head:8g}, pressure: {pressure:8g}, demand: {demand:8g}')
def getNodeNames(self): names = [] nodeCount = en.getcount(ph=self.project, object=en.NODECOUNT) for idx in range(nodeCount): index = idx + 1 # Get node id. nodeId = en.getnodeid(ph=self.project, index=index) # Get node type. nodeType = "Node" if en.getnodetype(ph=self.project, index=index) == en.TANK: nodeType = "Tank" elif en.getnodetype(ph=self.project, index=index) == en.JUNCTION: nodeType = "Junction" elif en.getnodetype(ph=self.project, index=index) == en.RESERVOIR: nodeType = "Reservoir" else: nodeType = "Unknown" names.append(nodeType + "-" + nodeId + " (tanklevel)") names.append(nodeType + "-" + nodeId + " (head)") names.append(nodeType + "-" + nodeId + " (demand)") names.append(nodeType + "-" + nodeId + " (pressure)") return names
def test_setnodevalue(): 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) elev_list = [] demand_list = [] pattern_list=[] emitter_list = [] initqual_list = [] tank_level_list = [] for node_ind in range(1, num_nodes+1): # elevation elev = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.ELEVATION) en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.ELEVATION, value=elev + 1) elev_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.ELEVATION)) # base demand demand = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.BASEDEMAND) en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.BASEDEMAND, value=demand + 1) demand_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.BASEDEMAND)) # pattern en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.PATTERN, value=0) pattern_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.PATTERN)) # emitter en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.EMITTER, value=0.01) emitter_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.EMITTER)) # initqual initqual = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.INITQUAL) en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.INITQUAL, value=initqual + 0.1) initqual_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.INITQUAL)) # tanklevel if en.getnodetype(ph=epanet_proj, index=node_ind) == en.TANK: tank_level = en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.TANKLEVEL) en.setnodevalue(ph=epanet_proj, index=node_ind, property=en.TANKLEVEL, value=tank_level + 1) tank_level_list.append(en.getnodevalue(ph=epanet_proj, index=node_ind, property=en.TANKLEVEL)) assert elev_list == [711.0, 711.0, 701.0, 696.0, 701.0, 696.0, 691.0, 701.0, 711.0, 801.0, 851.0] assert demand_list == [1.0, 151.0, 151.0, 101.0, 151.0, 201.0, 151.0, 101.0, 101.0, 0.0, 0.0] assert pattern_list == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] assert emitter_list == [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.0, 0.0] assert initqual_list == [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1.1, 1.1] assert tank_level_list ==[121.0] clean_dir()