Beispiel #1
0
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()
Beispiel #2
0
    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
Beispiel #3
0
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()
Beispiel #4
0
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]
Beispiel #5
0
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
Beispiel #6
0
    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
Beispiel #7
0
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]
Beispiel #8
0
    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()
Beispiel #9
0
def closeEPANET():
    errcode = et.ENclose()
Beispiel #10
0
def closefile():  # ! Sredjeno - TESTIRATI
    """
    :return: void - Zatvara EPANET-ov .inp fajl => zatvoren pristup fajlu.

    """
    epa.ENclose()
Beispiel #11
0
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!")
Beispiel #13
0
 def close_epanet_file(self):
     ret = epa.ENclose()