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 hyd_simulation(self): for index in range(self.dim): index = index + 1 value = self.values[index - 1] + 0.0 errcode = et.ENsetnodevalue(index, et.EN_BASEDEMAND, self.values[index - 1]) et.ENsolveH()
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 hyd_simulation(self, ResultInp): errcode = et.ENopen(ResultInp, 'r.rtp', '') errcode = et.ENsolveH()
def hyd_simulation(self): for index in range(self.demand_dim): index = index + 1 errcode = et.ENsetnodevalue(index, et.EN_BASEDEMAND, self.cali_demand_values[index - 1]) et.ENsolveH()