def calculo(self): self.entrada = self.kwargs["entrada"] metodo = self.kwargs["metodo"] self.Pout = Pressure(self.kwargs["Pout"]) razon = self.kwargs["razon"] self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"]) if self.kwargs["etapas"]: self.etapas = self.kwargs["etapas"] else: self.etapas = 1. self.power = Power(self.kwargs["trabajo"]) def f(Pout, rendimiento): W_ideal = self.__Wideal(Pout) power = W_ideal * self.entrada.caudalmasico.gs / rendimiento return power if metodo in [0, 3] or (metodo == 5 and self.Pout): if self.etapas == 1: razon = self.Pout.atm / self.entrada.P.atm else: razon = (self.Pout.atm / self.entrada.P.atm)**(1. / self.etapas) elif metodo in [1, 4] or (metodo == 5 and razon): if self.etapas == 1: self.Pout = Pressure(self.entrada.P * razon) else: self.Pout = Pressure(razon**self.etapas * self.entrada.P) if metodo in [0, 1]: Wideal = self.__Wideal(self.Pout.atm) power = Wideal * self.entrada.caudalmasico.gs / self.rendimientoCalculado self.power = Power(power * self.etapas) elif metodo == 2: funcion = lambda P: f(P, self.rendimientoCalculado) - self.power self.Pout = Pressure(fsolve(funcion, self.entrada.P + 1)) if self.etapas == 1: razon = self.Pout / self.entrada.P else: razon = (self.Pout / self.entrada.P)**(1. / self.etapas) elif metodo in [3, 4]: funcion = lambda rendimiento: f(self.Pout.atm, rendimiento ) - self.power self.rendimientoCalculado = Dimensionless(fsolve(funcion, 0.5)) elif metodo == 5: Wideal = self.__Wideal(self.Pout.atm) caudalmasico = MassFlow( self.power * self.rendimientoCalculado / Wideal, "gs") self.Tout = self.__Tout(Wideal) self.entrada = self.entrada.clone(caudalMasico=caudalmasico) Wideal = self.__Wideal(self.Pout.atm) self.Tout = Temperature(self.__Tout(Wideal)) self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)] self.razonCalculada = Dimensionless(self.Pout / self.entrada.P) self.deltaT = DeltaT(self.salida[0].T - self.entrada.T) self.deltaP = DeltaP(self.salida[0].P - self.entrada.P) self.cp_cv = self.entrada.Gas.cp_cv self.Pin = self.entrada.P self.Tin = self.entrada.T
def calculo(self): self.entrada = self.kwargs["entrada"] self.Pout = Pressure(self.kwargs["Pout"]) self.razon = Dimensionless(self.kwargs["razon"]) self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"]) self.power = Power(-abs(self.kwargs["trabajo"])) def f(Pout, rendimiento): W_ideal = self.__Wideal(Pout) power = W_ideal * self.entrada.caudalmasico.gs * rendimiento return power self.cp_cv = self.entrada.Gas.cp_cv if self.kwargs["metodo"] in [0, 3] or \ (self.kwargs["metodo"] == 5 and self.Pout): self.razon = Dimensionless(self.Pout / self.entrada.P) elif self.kwargs["metodo"] in [1, 4] or \ (self.kwargs["metodo"] == 5 and self.razon): self.Pout = Pressure(self.entrada.P * self.razon) if self.kwargs["metodo"] in [0, 1]: Wideal = self.__Wideal(self.Pout) G = self.entrada.caudalmasico.gs self.power = Power(Wideal * G * self.rendimientoCalculado) elif self.kwargs["metodo"] == 2: def function(P): return f(P, self.rendimientoCalculado) - self.power self.Pout = Pressure(fsolve(function, self.entrada.P.atm + 1), "atm") self.razon = Dimensionless(self.Pout / self.entrada.P) elif self.kwargs["metodo"] in [3, 4]: def function(rendimiento): return f(self.Pout.atm, rendimiento) - self.power self.rendimientoCalculado = Dimensionless(fsolve(function, 0.5)) elif self.kwargs["metodo"] == 5: Wideal = self.__Wideal(self.Pout) G = MassFlow(self.power / self.rendimientoCalculado / Wideal, "gs") self.Tout = self.__Tout(Wideal) self.entrada = self.entrada.clone(caudalMasico=G) Wideal = self.__Wideal(self.Pout) self.Tout = Temperature(self.__Tout(Wideal)) self.razonCalculada = Dimensionless(self.Pout / self.entrada.P) self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)] self.deltaT = DeltaT(self.salida[0].T - self.entrada.T) self.deltaP = DeltaP(self.salida[0].P - self.entrada.P) self.Pin = self.entrada.P self.Tin = self.entrada.T
def cambiarCurvaVista(self, ind): self.curva = self.curvas[ind] self.diametro.setValue(self.curva[0]) self.rpm.setValue(self.curva[1]) q = [ VolFlow(i).__getattribute__( VolFlow.__units__[self.unidadesCaudal.currentIndex()]) for i in self.curva[2] ] h = [ Length(i).__getattribute__( Length.__units__[self.unidadesCarga.currentIndex()]) for i in self.curva[3] ] P = [ Power(i).__getattribute__( Power.__units__[self.unidadesPotencia.currentIndex()]) for i in self.curva[4] ] n = [ Length(i).__getattribute__( Length.__units__[self.unidadesNPSH.currentIndex()]) for i in self.curva[5] ] self.Tabla.setMatrix(transpose([q, h, P, n])) self.Tabla.addRow()
def calculo(self): #TODO: De momento, no se implementan las cuestiones de cinetica de intercambio de calor y materia que definirían las dimensiones necesarias del equipo HR = self.kwargs.get("HR", 100) self.Heat = Power(self.kwargs["Heat"]) self.deltaP = Pressure(self.kwargs["deltaP"]) self.entradaAire = self.kwargs["entradaAire"] Pout = min(self.kwargs["entradaSolido"].P.atm, self.kwargs["entradaAire"].P.atm) - self.deltaP.atm aguaSolidoSalida = self.kwargs["HumedadResidual"] * self.kwargs[ "entradaSolido"].solido.caudal.kgh aguaSolidoEntrada = self.kwargs["entradaSolido"].caudalmasico.kgh if self.kwargs["mode"] == 0: Caudal_aguaenAireSalida = aguaSolidoEntrada - aguaSolidoSalida + self.entradaAire.caudalMasico.kgh * self.entradaAire.Xw Caudal_airesalida = self.entradaAire.caudalMasico.kgh * self.entradaAire.Xa if self.entradaAire.Hs > Caudal_aguaenAireSalida / Caudal_airesalida: H = Caudal_aguaenAireSalida / Caudal_airesalida else: H = self.entradaAire.Hs aguaSolidoSalida += Caudal_aguaenAireSalida / Caudal_airesalida - self.entradaAire.Hs self.SalidaAire = PsychroState(caudal=Caudal_aguaenAireSalida + Caudal_airesalida, tdb=self.entradaAire.Tdb, H=H) self.SalidaSolido = self.kwargs["entradaSolido"].clone( T=self.SalidaAire.Tdb, P=Pout, split=aguaSolidoSalida / aguaSolidoEntrada) else: pass
def readStatefromJSON(self, state): """Load instance parameter from saved file""" self.deltaP = DeltaP(state["deltaP"]) self.rendimientoCalculado = Dimensionless( state["rendimientoCalculado"]) # noqa self.headCalculada = Length(state["headCalculada"]) self.power = Power(state["power"]) self.P_freno = Power(state["P_freno"]) self.Pin = Pressure(state["Pin"]) self.PoutCalculada = Pressure(state["PoutCalculada"]) self.volflow = VolFlow(state["volflow"]) self.cp_cv = Dimensionless(state["cp_cv"]) self.statusCoste = state["statusCoste"] if self.statusCoste: self.C_bomba = Currency(state["C_bomba"]) self.C_motor = Currency(state["C_motor"]) self.C_adq = Currency(state["C_adq"]) self.C_inst = Currency(state["C_inst"]) if self.kwargs["usarCurva"]: pass self.salida = [None]
def calculo(self): self.entrada = self.kwargs["entrada"] self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"]) if self.kwargs["Pout"]: DeltaP = Pressure(self.kwargs["Pout"] - self.entrada.P) elif self.kwargs["deltaP"]: DeltaP = Pressure(self.kwargs["deltaP"]) elif self.kwargs["Carga"]: DeltaP = Pressure(self.kwargs["Carga"] * self.entrada.Liquido.rho * g) else: DeltaP = Pressure(0) if self.kwargs["usarCurva"]: if self.kwargs["diametro"] != self.kwargs["curvaCaracteristica"][ 0] or self.kwargs["velocidad"] != self.kwargs[ "curvaCaracteristica"][1]: self.curvaActual = self.calcularCurvaActual() else: self.curvaActual = self.kwargs["curvaCaracteristica"] self.Ajustar_Curvas_Caracteristicas() if not self.kwargs["usarCurva"]: head = Length(DeltaP / g / self.entrada.Liquido.rho) power = Power(head * g * self.entrada.Liquido.rho * self.entrada.Q / self.rendimientoCalculado) P_freno = Power(power * self.rendimientoCalculado) elif not self.kwargs["incognita"]: head = Length(polyval(self.CurvaHQ, self.entrada.Q)) self.DeltaP = Pressure(head * g * self.entrada.Liquido.rho) power = Power(self.entrada.Q * DeltaP) P_freno = Power(polyval(self.CurvaPotQ, self.entrada.Q)) self.rendimientoCalculado = Dimensionless(power / P_freno) else: head = Length(self.DeltaP / g / self.entrada.Liquido.rho) caudalvolumetrico = roots( [self.CurvaHQ[0], self.CurvaHQ[1], self.CurvaHQ[2] - head])[0] power = Power(caudalvolumetrico * self.DeltaP) self.entrada = Corriente( self.entrada.T, self.entrada.P.atm, caudalvolumetrico * self.entrada.Liquido.rho * 3600, self.entrada.mezcla, self.entrada.solido) P_freno = Power(polyval(self.CurvaPotQ, caudalvolumetrico)) self.rendimientoCalculado = Dimensionless(power / P_freno) self.headCalculada = head self.power = power self.P_freno = P_freno self.salida = [self.entrada.clone(P=self.entrada.P + DeltaP)] self.Pin = self.entrada.P self.PoutCalculada = self.salida[0].P self.Q = self.entrada.Q.galUSmin self.volflow = self.entrada.Q
def calculo(self): entrada = self.kwargs["entrada"] self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"]) if self.kwargs["Pout"]: DeltaP = Pressure(self.kwargs["Pout"] - entrada.P) elif self.kwargs["deltaP"]: DeltaP = Pressure(self.kwargs["deltaP"]) elif self.kwargs["Carga"]: DeltaP = Pressure(self.kwargs["Carga"] * entrada.Liquido.rho * g) else: DeltaP = Pressure(0) if self.kwargs["usarCurva"]: b1 = self.kwargs["diametro"] != self.kwargs["curvaCaracteristica"][ 0] # noqa b2 = self.kwargs["velocidad"] != self.kwargs[ "curvaCaracteristica"][1] # noqa if b1 or b2: self.curvaActual = self.calcularCurvaActual() else: self.curvaActual = self.kwargs["curvaCaracteristica"] self.Ajustar_Curvas_Caracteristicas() if not self.kwargs["usarCurva"]: head = Length(DeltaP / g / entrada.Liquido.rho) power = Power(head * g * entrada.Liquido.rho * entrada.Q / self.rendimientoCalculado) P_freno = Power(power * self.rendimientoCalculado) elif not self.kwargs["incognita"]: head = Length(polyval(self.CurvaHQ, entrada.Q)) DeltaP = Pressure(head * g * entrada.Liquido.rho) power = Power(entrada.Q * DeltaP) P_freno = Power(polyval(self.CurvaPotQ, entrada.Q)) self.rendimientoCalculado = Dimensionless(power / P_freno) else: head = Length(self.DeltaP / g / entrada.Liquido.rho) poli = [self.CurvaHQ[0], self.CurvaHQ[1], self.CurvaHQ[2] - head] Q = roots(poli)[0] power = Power(Q * self.DeltaP) entrada = entrada.clone(split=Q / entrada.Q) P_freno = Power(polyval(self.CurvaPotQ, Q)) self.rendimientoCalculado = Dimensionless(power / P_freno) self.deltaP = DeltaP self.headCalculada = head self.power = power self.P_freno = P_freno self.salida = [entrada.clone(P=entrada.P + DeltaP)] self.Pin = entrada.P self.PoutCalculada = self.salida[0].P self.volflow = entrada.Q self.cp_cv = entrada.Liquido.cp_cv
def readStatefromJSON(self, state): """Load instance parameter from saved file""" self.Pout = Pressure(state["Pout"]) self.Tout = Temperature(state["Tout"]) self.rendimientoCalculado = Dimensionless(state["rendimientoCalculado"]) # noqa self.power = Power(state["power"]) self.razonCalculada = Dimensionless(state["razonCalculada"]) self.razon = Dimensionless(state["razon"]) self.deltaT = DeltaT(state["deltaT"]) self.deltaP = DeltaP(state["deltaP"]) self.cp_cv = Dimensionless(state["cp_cv"]) self.Pin = Pressure(state["Pin"]) self.Tin = Temperature(state["Tin"]) self.cp_cv = Dimensionless(state["cp_cv"]) self.statusCoste = state["statusCoste"] if self.statusCoste: self.C_adq = Currency(state["C_adq"]) self.C_inst = Currency(state["C_inst"]) self.salida = [None]
def CalcularCurva(self): caudal = [] carga = [] potencia = [] NPSH = [] for i in range(1, self.Tabla.rowCount() - 1): q = VolFlow(float(self.Tabla.item(i, 0).text()), VolFlow.__units__[self.unidadesCaudal.currentIndex()]) caudal.append(q) h = Length(float(self.Tabla.item(i, 1).text()), Length.__units__[self.unidadesCarga.currentIndex()]) carga.append(h) P = Power(float(self.Tabla.item(i, 2).text()), Power.__units__[self.unidadesPotencia.currentIndex()]) potencia.append(P) n = Length(float(self.Tabla.item(i, 3).text()), Length.__units__[self.unidadesNPSH.currentIndex()]) NPSH.append(n) return [ self.diametro.value, self.rpm.value, caudal, carga, potencia, NPSH ]