def setDiameter(id,value): errcode=et.ENopen(Inp,"BUFF.rpt","") [errcode,index]=et.ENgetlinkindex(id) # [errcode,diameter]=et.ENgetlinkvalue(index,et.EN_DIAMETER) et.ENsetlinkvalue(index,et.EN_DIAMETER,value) errcode=et.ENsaveinpfile(InpCopy) errcode=et.ENclose()
def __init__(self, network, output, tasmax, years=82, timestep=60 * 60, tmp_dir='data/tmp/'): # super().__init__(output, tasmax, years=years, timestep=timestep, tmp_dir=tmp_dir) self.tmp_dir = tmp_dir self.tasmax = tasmax self.pumps = list() self.pipes = list() self.nodes = list() self.current_time = 0 self.current_temp = 0.0 self.timestep = timestep self.time = ((48 * 60 * 60) + (years * self.year)) self.years = years rmtree(self.tmp_dir, ignore_errors=True) makedirs(tmp_dir) et.ENopen(network, output, '') et.ENsettimeparam(0, self.time) network = tmp_dir + network.split('/')[-1] output = tmp_dir + output.split('/')[-1] et.ENsaveinpfile(network) et.ENclose() et.ENopen(network, output, '') self.network = network
def setElevation(id,value): errcode=et.ENopen(Inp,"BUFF.rpt","") [errcode,index]=et.ENgetnodeindex(id) [errcode,elevation]=et.ENgetnodevalue(index,et.EN_ELEVATION) et.ENsetnodevalue(index,et.EN_ELEVATION,elevation+value) errcode=et.ENsaveinpfile(InpCopy) errcode=et.ENclose()
def getResidulSqure_EPA(MeaData): errcode = et.ENopen(ResultInp, "BUFF.rpt", "") errcode = et.ENsolveH() ResidulSqure = {} ResidulSqure['Res'] = {} ResidulSqure['P'] = {} ResidulSqure['F'] = {} residul = [] for id in ResID: [errcode, index] = et.ENgetnodeindex(id) [errcode, value] = et.ENgetnodevalue(index, et.EN_DEMAND) ResidulSqure['Res'][id] = (value - MeaData.Data['Res'][id])**2 residul.append(value - MeaData.Data['Res'][id]) for id in PreID: [errcode, index] = et.ENgetnodeindex(id) [errcode, value] = et.ENgetnodevalue(index, et.EN_PRESSURE) ResidulSqure['P'][id] = (value - MeaData.Data['P'][id])**2 residul.append(value - MeaData.Data['P'][id]) for id in FloID: [errcode, index] = et.ENgetlinkindex(id) [errcode, value] = et.ENgetlinkvalue(index, et.EN_FLOW) ResidulSqure['F'][id] = (value - MeaData.Data['F'][id])**2 residul.append(value - MeaData.Data['F'][id]) errcode = et.ENclose() return [ResidulSqure, residul]
def generatePriorDist(): PriorDist = priorDistributon() PriorDist.pred_values = 0 PriorDist.pred_variance = 0 PriorDist.prior_values = 0 PriorDist.prior_variance = 100 PriorDist.node_id = [] errcode = et.ENopen(Inp, "BUFF.rpt", "") for i in range(DEMAND_NUM): [errcode, id] = et.ENgetnodeid(i + 1) PriorDist.node_id.append(id) errcode = et.ENclose() return PriorDist
def run(self, pressure=True, failure=True, sql_yr_w=5): et.ENopenH() et.ENinitH(0) # Run for two days to create network equilibrium time = et.ENrunH()[1] while time < 172800: et.ENnextH()[1] time = et.ENrunH()[1] while True: if not self.iterate(pressure, failure, sql_yr_w=sql_yr_w): et.ENcloseH() et.ENclose() return
def getResidulSqure_EPA(MeaData): errcode = et.ENopen(ResultInp, "BUFF.rpt", "") errcode = et.ENsolveH() ResidulSqure = {} ResidulSqure['Res'] = {} ResidulSqure['P'] = {} ResidulSqure['F'] = {} print_R_RES = 0 print_R_Pre = 0 print_R_Flo = 0 residul = [] for id in MeaData.ResID: [errcode, index] = et.ENgetnodeindex(id) [errcode, value] = et.ENgetnodevalue(index, et.EN_DEMAND) ResidulSqure['Res'][id] = (value - MeaData.Data['Res'][id])**2 print_R_RES = print_R_RES + ResidulSqure['Res'][id] residul.append(value - MeaData.Data['Res'][id]) if (len(MeaData.ResID) > 0): print_R_RES = print_R_RES / len(MeaData.ResID) for id in MeaData.PreID: [errcode, index] = et.ENgetnodeindex(id) [errcode, value] = et.ENgetnodevalue(index, et.EN_PRESSURE) ResidulSqure['P'][id] = (value - MeaData.Data['P'][id])**2 print_R_Pre = print_R_Pre + ResidulSqure['P'][id] residul.append(value - MeaData.Data['P'][id]) if (len(MeaData.PreID) > 0): print_R_Pre = print_R_Pre / len(MeaData.PreID) for id in MeaData.FloID: [errcode, index] = et.ENgetlinkindex(id) [errcode, value] = et.ENgetlinkvalue(index, et.EN_FLOW) ResidulSqure['F'][id] = (value - MeaData.Data['F'][id])**2 print_R_Flo = print_R_Flo + ResidulSqure['F'][id] residul.append(value - MeaData.Data['F'][id]) if (len(MeaData.FloID) > 0): print_R_Flo = print_R_Flo / len(MeaData.FloID) errcode = et.ENclose() print('ave Squre error: Res Flo Pre') print(' ' + str(print_R_RES) + ' ' + str(print_R_Flo) + ' ' + str(print_R_Pre)) return [ResidulSqure, residul]
def updateResult(self, ResultInp): errcode = et.ENopen(ResultInp, 'r.rtp', '') errcode = et.ENsolveH() #########update the calibrated value at sensors######### Res = {} P = {} F = {} for id in self.sensorID_Res: [errcode, index] = et.ENgetnodeindex(id) [errcode, demand] = et.ENgetnodevalue(index, et.EN_DEMAND) Res[id] = demand for id in self.sensorID_P: [errcode, index] = et.ENgetnodeindex(id) [errcode, pressure] = et.ENgetnodevalue(index, et.EN_PRESSURE) P[id] = pressure # for id in self.sensorID_F: # [errcode,index]=et.ENgetlinkindex(id) # [errcode,flow]=et.ENgetlinkvalue(index,et.EN_FLOW) # F[id]=flow self.cali_sensor['Res'] = Res self.cali_sensor['P'] = P #Save the simulated sensor pressure # self.cali_sensor['F']=F#Save the simulated sensor flow #########update the calibrated nodal pressure and pipe flow rate######### self.cali_demand_values = [] self.cali_nodal_p = [] #需要初始化 self.cali_pipe_f = [] for index in range(self.demand_dim): [errcode, pressure] = et.ENgetnodevalue(index + 1, et.EN_PRESSURE) self.cali_nodal_p.append(pressure) [errcode, demand] = et.ENgetnodevalue(index + 1, et.EN_DEMAND) self.cali_demand_values.append(demand) for index in range(Number_PIPES): [errcode, flow] = et.ENgetlinkvalue(index + 1, et.EN_FLOW) self.cali_pipe_f.append(flow) errcode = et.ENclose()
def closeEPANET(): errcode = et.ENclose()
def closefile(): # ! Sredjeno - TESTIRATI """ :return: void - Zatvara EPANET-ov .inp fajl => zatvoren pristup fajlu. """ epa.ENclose()
def copyInp(INP): errcode=et.ENopen(INP,"BUFF.rpt","") errcode=et.ENsaveinpfile(InpCopy) errcode=et.ENclose()
def tearDown(self): self.Error(et.ENclose()) print("TEAR DOWN!")
def close_epanet_file(self): ret = epa.ENclose()