示例#1
0
    def calcular(self):
        #Q=self.Q
        #3tpozo=self.tpozo
        #obs=self.obs
        #print obs
        self.d = self.controlador.obtenerDominio()

        #t_obs=self.t_obs
        #r_obs=self.r_obs
        Tmin = float(self.listaParametros[0].valoresParametro.valor)
        Tmax = float(self.listaParametros[1].valoresParametro.valor)
        Smin = float(self.listaParametros[2].valoresParametro.valor)
        Smax = float(self.listaParametros[3].valoresParametro.valor)
        T_Nint = int(self.listaParametros[4].valoresParametro.valor)
        S_Nint = int(self.listaParametros[5].valoresParametro.valor)
        c_Nint = int(self.listaParametros[6].valoresParametro.valor)
        goteo_min = int(self.listaParametros[7].valoresParametro.valor)
        goteo_max = int(self.listaParametros[8].valoresParametro.valor)

        Test_T = numpy.linspace(Tmin, Tmax, T_Nint)
        Test_S = numpy.linspace(Smin, Smax, S_Nint)
        Test_c = numpy.linspace(goteo_min, goteo_max, c_Nint)

        #[T_T, T_S] = meshgrid(Test_T, Test_S)
        #[T_T, T_c] = meshgrid(Test_T, Test_c)

        obj = numpy.zeros((T_Nint, S_Nint, c_Nint), float)
        minobj = 999999999999999
        iToptimo = 0.0
        iSoptimo = 0.0
        icoptimo = 0.0
        metodo = None
        n = Hantush(self.d, self.controlador.parametros, None)
        for n_T in range(T_Nint):
            #acui.T=Test_T(n_T)
            for n_S in range(S_Nint):
                #acui.S=Test_S(n_S)
                for n_c in range(c_Nint):
                    #acui.c=Test_c(n_c)
                    n.setearValores([Test_T[n_T], Test_S[n_S], Test_c[n_c]])

                    #print "paraemtros ", Test_T[n_T], Test_S[n_S], Test_c[n_c]
                    #Itero por todos los pozos de observacion
                    for p in self.pozosobs:
                        #Itero por las observaciones de un pozo
                        for obs in p.observaciones[0].devolverO():
                            t = obs.tiempo
                            descenso = n.funcionObjetivo2(p, t)
                            obj[n_S, n_T,
                                n_c] = obj[n_S, n_T, n_c] + numpy.power(
                                    (obs.nivelpiezometrico -
                                     (self.d.calcularH0(p.x, p.y) - descenso)),
                                    2)

        #if n_T==0 and n_S==0 and n_c==0:
        #print "obj[1,1,1] :",obj[n_S,n_T,n_c],"tiempo :",obs.tiempo,"h :",obs.nivelpiezometrico,"descenso :",descenso
                #Luego del for de goteo va la comparacion
                if (obj[n_S, n_T, n_c] < minobj):
                    minobj = obj[n_S, n_T, n_c]
                    iToptimo = n_T
                    iSoptimo = n_S
                    icoptimo = n_c
                obj[n_S, n_T, n_c] = np.log(obj[n_S, n_T, n_c])
    #acui.T=Test_T(iToptimo)
    #acui.S=Test_S(iSoptimo)
    #acui.c=Test_c(icoptimo)
        self.T = Test_T[iToptimo]
        self.S = Test_S[iSoptimo]
        self.c = Test_c[icoptimo]
        self.obj = obj[:, :, icoptimo]

        self.metodo = Hantush(self.d, self.controlador.parametros, None)
        self.metodo.setearValores([self.T, self.S, self.c])
        self.d.optimizacioneshechas[self.__str__()] = self
        retorno = {}
        retorno = {'T': self.T, 'S': self.S, 'C': self.c}
        return retorno
示例#2
0
    def cargar_demobarrera1000hantush(self):

        global ContEnsayo
        ContEnsayo=controlador.Proyecto()  

        ContEnsayo.dominio.alto = 1000
        ContEnsayo.dominio.ancho = 1000

        ContEnsayo.dominio.a=0
        ContEnsayo.dominio.b=0
        ContEnsayo.dominio.c=10

        ##Como prueba se elijio el metodo Theis de una, esto ya asocia el metodo al dominio
        m=Hantush(ContEnsayo.dominio, ContEnsayo.parametros, True) 

        #m=Theis(ContEnsayo.dominio, ContEnsayo.parametros, True)
        m.setearValores([1000,1.e-4,676.7])
        #m.setearValores([700,1.1e-4])

        #print "c ",ContEnsayo.metodo.dominio.c
        ContEnsayo.metodo=m

        #Adherimos la vista del dominio
        self.ui = UiForm()
        self.ui.setupUi(MainWindow, ContEnsayo, app.desktop().size().width(), app.desktop().size().height())

        #b = vistaPozo(QtGui.QPixmap("content/images/blackDotIcon.png"),  "pozo", self.ui.caja.scene())
        #b.setX(500)
        #b.setY(250)
        #b.id = elementoDominio.ContEnsayo.agregarPozo(500, 250)
        #self.ui.caja.botones.append(b)
        b=self.agregarPozo(500, 250)

        #pob = vistaPozo(QtGui.QPixmap("content/images/blackDotIcon.png"),  "pozo", self.ui.caja.scene())
        #pob.setX(600)
        #pob.setY(250)
        #pob.id = elementoDominio.ContEnsayo.agregarPozo(600, 250)
        #self.ui.caja.botones.append(pob)
        pob=self.agregarPozo(600, 250)

        x0=250
        y0=0
        x1=500
        y1=1000
        #r = QtCore.QLineF(x0, y0, x1, y1)
        #barrera = vistaBarrera(x0, y0, x1, y1, "barrera", self.ui.caja.scene())
        #barrera.id = ContEnsayo.agregarRecta("positivo", x0, y0, x1, y1, ContEnsayo.dominio.alto, ContEnsayo.dominio.ancho)
        #self.ui.caja.rectas.append(barrera)
        #barrera=self.agregarRecta(x0, y0, x1, y1, "positivo")

        noexec=1

        self.ventanaImpoObs(noexec, True)
        #self.vimp.archivo="ficheros/obsTheiscnbarrera.ods"
        self.vimp.archivo="ficheros/obsHantush.ods"
        self.vimp.nombre.setText('obs1')
        self.vimp.ext="ods"
        self.vimp.accionaceptar()
        self.vimp.close()

        self.ventanaImportarProyecto(noexec, True)
        #self.importar.archivo="ficheros/bombeos.txt"
        self.importar.archivo="ficheros/haintush.txt"

        self.importar.nombre.setText('ens1')
        self.importar.ext="txt"
        self.importar.accionaceptar()
        self.importar.close()

        frmasociar=QtGui.QDialog()
        asoe=asociarEnsayos.Ui_Dialog()
        asoe.setupUi(frmasociar, b.id, ContEnsayo, True)
        asoe.oe=ContEnsayo.ensayos[0]
        asoe.tipo="e"
        asoe.asociar()

        asoe.setupUi(frmasociar, pob.id, ContEnsayo, True)
        asoe.oe=ContEnsayo.observaciones[0]
        asoe.tipo="o"
        asoe.asociar()