def _cp0(self, flash): "Set ideal properties to state""" cp0 = refprop.therm0(flash["t"], flash["D"], flash["x"]) self.v0 = unidades.SpecificVolume(self.R*self.T/self.P.kPa) self.rho0 = unidades.Density(1/self.v0) self.P0 = unidades.Pressure(cp0["p"], "kPa") self.P_Pideal = unidades.Pressure(self.P-self.P0) self.h0 = unidades.Enthalpy(cp0["h"]/self.M, "kJkg") self.u0 = unidades.Enthalpy(cp0["e"]/self.M, "kJkg") self.s0 = unidades.SpecificHeat(cp0["s"]/self.M, "kJkgK") self.a0 = unidades.Enthalpy(cp0["A"]/self.M, "kJkg") self.g0 = unidades.Enthalpy(cp0["G"]/self.M, "kJkg") self.w0 = unidades.Speed(cp0["w"]) cp0 = refprop.therm0(float(self.T), self.rho0/self.M, flash["x"]) self.cp0 = unidades.SpecificHeat(cp0["cp"]/self.M, "kJkgK") self.cv0 = unidades.SpecificHeat(cp0["cv"]/self.M, "kJkgK") self.cp0_cv = unidades.Dimensionless(self.cp0/self.cv0) self.gamma0 = self.cp0_cv self.rhoM0 = unidades.MolarDensity(self.rho0/self.M) self.hM0 = unidades.MolarEnthalpy(self.h0*self.M) self.uM0 = unidades.MolarEnthalpy(self.u0*self.M) self.sM0 = unidades.MolarSpecificHeat(self.s0*self.M) self.aM0 = unidades.MolarEnthalpy(self.a0*self.M) self.gM0 = unidades.MolarEnthalpy(self.g0*self.M) self.cpM0 = unidades.MolarSpecificHeat(self.cp0*self.M) self.cvM0 = unidades.MolarSpecificHeat(self.cv0*self.M)
def calculo(self, st): self.x = unidades.Dimensionless(st.x) self.region = st.region self.phase = self.getphase(phase=st.phase) self.name = st.name self.synonim = st.synonim self.CAS = st.CAS self.T = unidades.Temperature(st.T) self.P = unidades.Pressure(st.P, "MPa") self.Tr = unidades.Dimensionless(st.Tr) self.Pr = unidades.Dimensionless(st.Pr) self.v = unidades.SpecificVolume(st.v) self.rho = unidades.Density(st.rho) cp0 = {} cp0["v"] = st.v0 cp0["h"] = st.h0 * 1000 cp0["s"] = st.s0 * 1000 cp0["cp"] = st.cp0 * 1000 cp0["cv"] = st.cv0 * 1000 cp0["w"] = st.w0 self._cp0(cp0) self.Liquido = ThermoWater() self.Gas = ThermoWater() if self.x == 0: # only liquid phase self.fill(self, st.Liquid) self.fill(self.Liquido, st.Liquid) self.sigma = unidades.Tension(st.sigma) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) elif self.x == 1: # only vapor phase self.fill(self, st.Vapor) self.fill(self.Gas, st.Vapor) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) else: # two phases self.fill(self.Liquido, st.Liquid) self.sigma = unidades.Tension(st.sigma) self.fill(self.Gas, st.Vapor) self.h = unidades.Enthalpy(st.h) self.s = unidades.SpecificHeat(st.s) self.u = unidades.SpecificHeat(st.u) self.a = unidades.Enthalpy(st.a) self.g = unidades.Enthalpy(st.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None) self.Hvap = unidades.Enthalpy(st.Hvap, "kJkg") self.Svap = unidades.SpecificHeat(st.Svap, "kJkgK")
def readStatefromJSON(self, state): """Load instance parameter from saved file""" self.L = unidades.Length(state["L"]) self.rho = unidades.Density(state["rho"]) self.mu = unidades.Viscosity(state["mu"]) self.material = state["material"] self.Dn = state["Dn"] self.rugosidad = unidades.Length(state["rugosidad"]) self.De = unidades.Length(state["De"]) self.w = unidades.Length(state["w"]) self.Di = unidades.Length(state["Di"]) self.eD = unidades.Dimensionless(state["eD"]) self.seccion = unidades.Area(state["seccion"]) self.A = unidades.Area(state["A"]) self.V = unidades.Speed(state["V"]) self.Re = unidades.Dimensionless(state["Re"]) self.K = unidades.Dimensionless(state["K"]) self.DeltaP_h = unidades.DeltaP(state["DeltaP_h"]) self.DeltaP_ac = unidades.DeltaP(state["DeltaP_ac"]) self.f = unidades.Dimensionless(state["f"]) self.DeltaP_f = unidades.DeltaP(state["DeltaP_f"]) self.DeltaP_v = unidades.DeltaP(state["DeltaP_v"]) self.DeltaP = unidades.DeltaP(state["DeltaP"]) self.DeltaP_100ft = unidades.Dimensionless(state["DeltaP_100ft"]) self.Tout = unidades.Temperature(state["Tout"]) self.Heat = unidades.Power(state["Heat"]) self.Pin = unidades.Pressure(state["Pin"]) self.Pout = unidades.Pressure(state["Pout"]) self.statusCoste = state["statusCoste"] if self.statusCoste: self.C_adq = unidades.Currency(state["C_adq"]) self.C_inst = unidades.Currency(state["C_inst"]) self.salida = [None]
def calculo(self): self.entrada = self.kwargs["entrada"] self.L = unidades.Length(self.kwargs["l"]) if self.entrada.x == 0: self.rho = self.entrada.Liquido.rho self.mu = self.entrada.Liquido.mu else: self.rho = self.entrada.Gas.rho self.mu = self.entrada.Gas.mu self.material = self.kwargs["material"][0] + " " + self.kwargs[ "material"][1] self.Dn = self.kwargs["material"][3] self.rugosidad = unidades.Length(self.kwargs["material"][2], "mm") self.De = unidades.Length(self.kwargs["material"][6], "mm") self.w = unidades.Length(self.kwargs["material"][5], "mm") self.Di = unidades.Length((self.De - 2 * self.w)) self.eD = unidades.Dimensionless(self.rugosidad / self.Di) self.seccion = unidades.Area(pi / 4 * self.Di**2) self.A = unidades.Area(pi * self.De * self.L) self.V = unidades.Speed(self.entrada.Q / self.seccion) self.Re = Re(self.Di, self.V, self.rho, self.mu) K = 0 for accesorio in self.kwargs["accesorios"]: K += accesorio[2] * accesorio[3] self.K = unidades.Dimensionless(K) self.DeltaP_h = unidades.Pressure(g * self.kwargs["h"] * self.rho) self.DeltaP_ac = unidades.Pressure(self.K * self.V**2 / 2 * self.rho) self.f = f_friccion(self.Re, self.eD) self.DeltaP_f = self.__DeltaP_friccion() #TODO: self.DeltaP_v = unidades.Pressure(0) self.DeltaP = unidades.Pressure(self.DeltaP_f + self.DeltaP_ac + self.DeltaP_h) self.DeltaP_100ft = self.DeltaP * 100 / self.L.ft self.Pout = unidades.Pressure(self.entrada.P - self.DeltaP) if self.kwargs["thermal"] == 0: self.Tout = self.entrada.T self.Heat = unidades.Power(0) else: cambiador = Heat_Exchanger() cambiador.calculo(entrada=self.entrada, modo=self.kwargs["thermal"], Heat=self.kwargs["Q"], deltaP=self.DeltaP, A=self.A, U=self.kwargs["U"], Text=self.kwargs["Text"]) self.Tout = cambiador.salida[0].T self.Heat = cambiador.Heat self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)] self.Pin = self.entrada.P self.Pout = self.salida[0].P
def fill(self, fase, flash, thermo, mol, transport, dielec, thermo0): fase.update(Fluid(thermo)) fase.fraccion = flash["xliq"] fase.M = unidades.Dimensionless(mol["wmix"]) fase.rho = unidades.Density(flash["Dliq"] * fase.M) fase.u = unidades.Enthalpy(fase["e"] / fase.M, "Jg") fase.cv = unidades.SpecificHeat(fase["cv"] / fase.M, "JgK") fase.cp = unidades.SpecificHeat(fase["cp"] / fase.M, "JgK") fase.h = unidades.Enthalpy(fase["h"] / fase.M, "Jg") fase.s = unidades.SpecificHeat(fase["s"] / fase.M, "JgK") fase.w = unidades.Speed(fase["w"]) fase.joule = unidades.TemperaturePressure(fase["hjt"], "KkPa") fase.Z = unidades.Dimensionless(fase["Z"]) fase.A = unidades.Enthalpy(fase["A"] / fase.M, "Jg") fase.G = unidades.Enthalpy(fase["G"] / fase.M, "Jg") fase.xkappa = unidades.InvPressure(fase["xkappa"], "kPa") fase.alfav = unidades.InvTemperature(fase["beta"]) # fase.dpdD = fase["dpdD"] #derivative dP/dD [kPa-L/mol] # fase.d2pdD2 = fase["d2pdD2"] #derivative d^2p/dD^2 [kPa-L^2/mol^2] # fase.dpdt = unidades.PressureTemperature(fase["dpdt"], "kPaK") # fase.dDdt = fase["dDdt"] #derivative dD/dt [mol/(L-K)] # fase.dDdp = fase["dDdp"] #derivative dD/dp [mol/(L-kPa)] # # fluido2=refprop.therm3(flash["t"], flash["Dliq"], flash["xliq"]) # fase.xisenk = fluido2["xisenk"] # fase.xkt = fluido2["xkt"] # fase.betas = fluido2["betas"] # fase.bs = fluido2["bs"] # fase.xkkt = fluido2["xkkt"] # fase.thrott = fluido2["thrott"] # fase.pint = fluido2["pint"] # fase.spht = fluido2["spht"] # fase.fpv = refprop.fpv(flash["t"], flash["Dliq"], flash["p"], flash["xliq"]) # fase.chempot = refprop.chempot(flash["t"], flash["Dliq"], flash["xliq"]) # fase.fgcty = refprop.fgcty(flash["t"], flash["Dliq"], flash["xliq"]) # fase.fugcof = refprop.fugcof(flash["t"], flash["Dliq"], flash["xliq"]) # fase.virb = refprop.virb(flash["t"], flash["xliq"])["b"] # fase.virc = refprop.virc(flash["t"], flash["xliq"])["c"] # fase.vird = refprop.vird(flash["t"], flash["xliq"])["d"] # fase.virba = refprop.virba(flash["t"], flash["xliq"])["ba"] # fase.virca = refprop.virca(flash["t"], flash["xliq"])["ca"] if transport: fase.mu = unidades.Viscosity(transport["eta"], "muPas") fase.k = unidades.ThermalConductivity(transport["tcx"]) fase.Prandt = unidades.Dimensionless(fase.mu * fase.cp / fase.k) else: fase.mu = unidades.Viscosity(None) fase.k = unidades.ThermalConductivity(None) fase.Prandt = unidades.Dimensionless(None) fase.dielec = unidades.Dimensionless(dielec["de"]) fase.cp0 = unidades.SpecificHeat(thermo0["cp"] / fase.M) fase.cp0_cv = unidades.Dimensionless(fase.cp0 / fase.cv)
def fill(self, fase, estado): fase._bool = True fase.M = self.M fase.rho = unidades.Density(estado.rho) fase.v = unidades.SpecificVolume(estado.v) fase.Z = unidades.Dimensionless(self.P * estado.v / R / 1000 * self.M / self.T) fase.h = unidades.Enthalpy(estado.h) fase.s = unidades.SpecificHeat(estado.s) fase.u = unidades.Enthalpy(estado.u) fase.a = unidades.Enthalpy(fase.u - self.T * fase.s) fase.g = unidades.Enthalpy(fase.h - self.T * fase.s) fi = exp((fase.g - self.g0) / 1000 / R * self.M / self.T) fase.fi = [unidades.Pressure(fi)] fase.f = [unidades.Pressure(self.P * f) for f in fase.fi] fase.cv = unidades.SpecificHeat(estado.cv) fase.cp = unidades.SpecificHeat(estado.cp) fase.cp_cv = unidades.Dimensionless(fase.cp / fase.cv) fase.gamma = fase.cp_cv fase.w = unidades.Speed(estado.w) fase.rhoM = unidades.MolarDensity(fase.rho / self.M) fase.hM = unidades.MolarEnthalpy(fase.h * self.M) fase.sM = unidades.MolarSpecificHeat(fase.s * self.M) fase.uM = unidades.MolarEnthalpy(fase.u * self.M) fase.aM = unidades.MolarEnthalpy(fase.a * self.M) fase.gM = unidades.MolarEnthalpy(fase.g * self.M) fase.cvM = unidades.MolarSpecificHeat(fase.cv * self.M) fase.cpM = unidades.MolarSpecificHeat(fase.cp * self.M) fase.mu = unidades.Viscosity(estado.mu) fase.nu = unidades.Diffusivity(fase.mu / fase.rho) fase.k = unidades.ThermalConductivity(estado.k) fase.alfa = unidades.Diffusivity(fase.k / fase.rho / fase.cp) fase.epsilon = unidades.Dimensionless( iapws._Dielectric(estado.rho, self.T)) fase.Prandt = unidades.Dimensionless(estado.mu * estado.cp / estado.k) fase.n = unidades.Dimensionless( iapws._Refractive(fase.rho, self.T, self.kwargs["l"])) fase.alfav = unidades.InvTemperature(estado.deriv("Tpv") / fase.v) fase.kappa = unidades.InvPressure(-estado.deriv("pTv") / fase.v) fase.kappas = unidades.InvPressure( -1 / fase.v * self.derivative("v", "P", "s", fase)) fase.joule = unidades.TemperaturePressure(estado.deriv("Tph")) fase.deltat = unidades.EnthalpyPressure(estado.deriv("pTh")) fase.alfap = unidades.Density(fase.alfav / self.P / fase.kappa) fase.betap = unidades.Density(-1 / self.P * estado.deriv("vTp")) fase.fraccion = [1] fase.fraccion_masica = [1]
def fill(self, fase, st): """Fill phase properties""" fase._bool = True fase.M = self.M fase.v = unidades.SpecificVolume(st.v) fase.rho = unidades.Density(st.rho) fase.Z = unidades.Dimensionless(st.Z) fase.h = unidades.Enthalpy(st.h, "kJkg") fase.s = unidades.SpecificHeat(st.s, "kJkgK") fase.u = unidades.Enthalpy(st.u, "kJkg") fase.a = unidades.Enthalpy(st.a, "kJkg") fase.g = unidades.Enthalpy(st.g, "kJkg") fase.fi = [unidades.Dimensionless(st.fi)] fase.f = [unidades.Pressure(st.f, "MPa")] fase.cv = unidades.SpecificHeat(st.cv, "kJkgK") fase.cp = unidades.SpecificHeat(st.cp, "kJkgK") fase.cp_cv = unidades.Dimensionless(st.cp_cv) fase.gamma = fase.cp_cv fase.w = unidades.Speed(st.w) fase.rhoM = unidades.MolarDensity(fase.rho / self.M) fase.hM = unidades.MolarEnthalpy(fase.h * self.M) fase.sM = unidades.MolarSpecificHeat(fase.s * self.M) fase.uM = unidades.MolarEnthalpy(fase.u * self.M) fase.aM = unidades.MolarEnthalpy(fase.a * self.M) fase.gM = unidades.MolarEnthalpy(fase.g * self.M) fase.cvM = unidades.MolarSpecificHeat(fase.cv * self.M) fase.cpM = unidades.MolarSpecificHeat(fase.cp * self.M) fase.alfav = unidades.InvTemperature(st.alfav) fase.kappa = unidades.InvPressure(st.xkappa, "MPa") fase.kappas = unidades.InvPressure(st.kappas, "MPa") fase.mu = unidades.Viscosity(st.mu) fase.nu = unidades.Diffusivity(st.nu) fase.k = unidades.ThermalConductivity(st.k) fase.alfa = unidades.Diffusivity(st.alfa) fase.epsilon = unidades.Dimensionless(st.epsilon) fase.Prandt = unidades.Dimensionless(st.Prandt) fase.n = unidades.Dimensionless(st.n) fase.joule = unidades.TemperaturePressure(st.joule) fase.deltat = unidades.EnthalpyPressure(st.deltat) fase.betap = unidades.Density(st.betap) fase.alfap = unidades.Density(st.alfap) fase.fraccion = [1] fase.fraccion_masica = [1]
def calculo(self): func = [freesteam.steam_pT, freesteam.steam_ph, freesteam.steam_ps, freesteam.steam_pv, freesteam.steam_Ts, freesteam.steam_Tx][self._thermo] fluido = func(self.var1, self.var2) self.M = unidades.Dimensionless(mEoS.H2O.M) self.Pc = unidades.Pressure(freesteam.PCRIT) self.Tc = unidades.Temperature(freesteam.TCRIT) self.rhoc = unidades.Density(freesteam.RHOCRIT*self.M) self.Tt = mEoS.H2O.Tt self.Tb = mEoS.H2O.Tb self.f_accent = unidades.Dimensionless(mEoS.H2O.f_acent) self.momentoDipolar = mEoS.H2O.momentoDipolar self.phase = self.getphase(fluido) self.x = unidades.Dimensionless(fluido.x) self.name = mEoS.H2O.name self.synonim = mEoS.H2O.synonym self.CAS = mEoS.H2O.CASNumber self.T = unidades.Temperature(fluido.T) self.P = unidades.Pressure(fluido.p) self.rho = unidades.Density(fluido.rho) self.v = unidades.SpecificVolume(1./self.rho) self.Liquido = Fluid() self.Gas = Fluid() if self.x < 1: # Liquid phase liquido = freesteam.steam_Tx(fluido.T, 0.) self.fill(self.Liquido, liquido) self.Liquido.epsilon = unidades.Tension(iapws._Tension(self.T)) if self.x > 0: vapor = freesteam.steam_Tx(fluido.T, 1.) self.fill(self.Gas, vapor) if self.x in (0, 1): self.fill(self, fluido) else: self.h = unidades.Enthalpy(self.x*self.Vapor.h+(1-self.x)*self.Liquido.h) self.s = unidades.SpecificHeat(self.x*self.Vapor.s+(1-self.x)*self.Liquido.s) self.u = unidades.SpecificHeat(self.x*self.Vapor.u+(1-self.x)*self.Liquido.u) self.a = unidades.Enthalpy(self.x*self.Vapor.a+(1-self.x)*self.Liquido.a) self.g = unidades.Enthalpy(self.x*self.Vapor.g+(1-self.x)*self.Liquido.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None)
def fill(self, fase, estado): fase.M = self.M fase.rho = unidades.Density(estado.rho) fase.v = unidades.SpecificVolume(estado.v) fase.Z = unidades.Dimensionless(self.P*estado.v/R/1000*self.M/self.T) fase.h = unidades.Enthalpy(estado.h) fase.s = unidades.SpecificHeat(estado.s) fase.u = unidades.Enthalpy(estado.u) fase.a = unidades.Enthalpy(fase.u-self.T*fase.s) fase.g = unidades.Enthalpy(fase.h-self.T*fase.s) fase.cv = unidades.SpecificHeat(estado.cv) fase.cp = unidades.SpecificHeat(estado.cp) fase.cp_cv = unidades.Dimensionless(fase.cp/fase.cv) fase.w = unidades.Speed(estado.w) fase.mu = unidades.Viscosity(estado.mu) fase.k = unidades.ThermalConductivity(estado.k) fase.nu = unidades.Diffusivity(fase.mu/fase.rho) fase.dielec = unidades.Dimensionless(iapws._Dielectric(estado.rho, self.T)) fase.Prandt = unidades.Dimensionless(estado.mu*estado.cp/estado.k) # fase.joule=unidades.TemperaturePressure(self.Liquido["hjt"], "KkPa") # fase.xkappa=unidades.InvPressure(DerivTerms("IsothermalCompressibility", self.T, fase.rho, self.name), "kPa") # fase.alfav=unidades.InvTemperature(-estado.PFC.drhodT_constp()/estado.rho) cp0 = iapws.prop0(self.T, self.P) fase.v0 = unidades.SpecificVolume(cp0.v) fase.h0 = unidades.Enthalpy(cp0.h) fase.u0 = unidades.Enthalpy(fase.h0-self.P*1000*fase.v0) fase.s0 = unidades.SpecificHeat(cp0.s) fase.a0 = unidades.Enthalpy(fase.u0-self.T*fase.s0) fase.g0 = unidades.Enthalpy(fase.h0-self.T*fase.s0) fase.cp0 = unidades.SpecificHeat(cp0.cp) fase.cv0 = unidades.SpecificHeat(cp0.cv) fase.cp0_cv = unidades.Dimensionless(fase.cp0/fase.cv0) fase.w0 = cp0.w # fase.gamma0 = cp0.gamma fase.f = unidades.Pressure(self.P*exp((fase.g-fase.g0)/R/self.T))
def _cp0(self): "Set ideal properties to state" "" self.v0 = unidades.SpecificVolume(None) self.rho0 = unidades.Density(None) self.h0 = unidades.Enthalpy(None) self.u0 = unidades.Enthalpy(None) self.s0 = unidades.SpecificHeat(None) self.a0 = unidades.Enthalpy(None) self.g0 = unidades.Enthalpy(None) self.cp0 = unidades.SpecificHeat(None) self.cv0 = unidades.SpecificHeat(None) self.cp0_cv = unidades.Dimensionless(None) self.w0 = unidades.Speed(None) self.gamma0 = self.cp0_cv self.rhoM0 = unidades.MolarDensity(None) self.hM0 = unidades.MolarEnthalpy(None) self.uM0 = unidades.MolarEnthalpy(None) self.sM0 = unidades.MolarSpecificHeat(None) self.aM0 = unidades.MolarEnthalpy(None) self.gM0 = unidades.MolarEnthalpy(None) self.cpM0 = unidades.MolarSpecificHeat(None) self.cvM0 = unidades.MolarSpecificHeat(None)
def _cp0(self, cp0): "Set ideal properties to state" "" self.v0 = unidades.SpecificVolume(cp0["v"]) self.rho0 = unidades.Density(1. / cp0["v"]) self.h0 = unidades.Enthalpy(cp0["h"]) self.u0 = unidades.Enthalpy(self.h0 - self.P * self.v0) self.s0 = unidades.SpecificHeat(cp0["s"]) self.a0 = unidades.Enthalpy(self.u0 - self.T * self.s0) self.g0 = unidades.Enthalpy(self.h0 - self.T * self.s0) self.cp0 = unidades.SpecificHeat(cp0["cp"]) self.cv0 = unidades.SpecificHeat(cp0["cv"]) self.cp0_cv = unidades.Dimensionless(self.cp0 / self.cv0) self.w0 = unidades.Speed(cp0["w"]) self.gamma0 = self.cp0_cv self.rhoM0 = unidades.MolarDensity(self.rho0 / self.M) self.hM0 = unidades.MolarEnthalpy(self.h0 * self.M) self.uM0 = unidades.MolarEnthalpy(self.u0 * self.M) self.sM0 = unidades.MolarSpecificHeat(self.s0 * self.M) self.aM0 = unidades.MolarEnthalpy(self.a0 * self.M) self.gM0 = unidades.MolarEnthalpy(self.g0 * self.M) self.cpM0 = unidades.MolarSpecificHeat(self.cp0 * self.M) self.cvM0 = unidades.MolarSpecificHeat(self.cv0 * self.M)
def calculo(self): T = self.kwargs["T"] rho = self.kwargs["rho"] P = self.kwargs["P"] v = self.kwargs["v"] h = self.kwargs["h"] s = self.kwargs["s"] u = self.kwargs["u"] x = self.kwargs["x"] self.comp = [] for i in self.kwargs["componente"]: c = self.componentes[i](eq="GERG", **self.kwargs) self.comp.append(c) self.id = self.kwargs["componente"] self.xi = self.kwargs["fraccion"] # Critic properties for mixture, # eq. 7.9, 7.10 pag.125, Tabla 7.10 pag 136 bt = self.Prop_c["beta_t"] bv = self.Prop_c["beta_v"] gt = self.Prop_c["gamma_t"] gv = self.Prop_c["gamma_v"] c_T = zeros((len(self.comp), len(self.comp))) c_rho = zeros((len(self.comp), len(self.comp))) for i, cmpi in enumerate(self.comp): for j, cmpj in enumerate(self.comp): c_T[i, j] = 2*bt[i][j]*gt[i][j]*(cmpi.Tc*cmpj.Tc)**0.5 c_rho[i, j] = 2*bv[i][j]*gv[i][j]/8. * \ (1./cmpi.rhoc**(1./3)+1./cmpj.rhoc**(1./3))**3 f_T = zeros((len(self.comp), len(self.comp))) f_rho = zeros((len(self.comp), len(self.comp))) dFT_ik = zeros((len(self.comp), len(self.comp))) dFT_ki = zeros((len(self.comp), len(self.comp))) dFrho_ik = zeros((len(self.comp), len(self.comp))) dFrho_ki = zeros((len(self.comp), len(self.comp))) for i, x_i in enumerate(self.xi): for j, x_j in enumerate(self.xi): f_T[i, j] = x_i*x_j*(x_i+x_j)/(bt[i][j]**2*x_i+x_j) f_rho[i, j] = x_i*x_j*(x_i+x_j)/(bv[i][j]**2*x_i+x_j) dFT_ik[i, j] = x_j*(x_j+x_i)/(bt[i][j]**2*x_i+x_j) + \ x_j*x_i/(bt[i][j]**2*x_i+x_j) * \ (1-bt[i][j]**2*(x_j+x_i)/(bt[i][j]**2*x_i+x_j)) dFrho_ik[i, j] = x_j*(x_j+x_i)/(bv[i][j]**2*x_i+x_j) + \ x_j*x_i/(bv[i][j]**2*x_i+x_j) * \ (1-bv[i][j]**2*(x_j+x_i)/(bv[i][j]**2*x_i+x_j)) dFT_ki[j, i] = x_j*(x_j+x_i)/(bt[i][j]**2*x_j+x_i)+x_j*x_i / \ (bt[i][j]**2*x_j+x_i)*(1-(x_j+x_i)/(bt[i][j]**2*x_j+x_i)) dFrho_ki[j, i] = x_j*(x_j+x_i)/(bv[i][j]**2*x_j+x_i)+x_j*x_i /\ (bv[i][j]**2*x_j+x_i)*(1-(x_j+x_i)/(bv[i][j]**2*x_j+x_i)) sumai_v = sumaij_v = sumai_T = sumaij_T = m = 0 for i, componentei in enumerate(self.comp): sumai_v += self.xi[i]**2/componentei.rhoc sumai_T += self.xi[i]**2*componentei.Tc m += self.xi[i]*componentei.M for j, componentej in enumerate(self.comp): if j > i: sumaij_v += c_rho[i, j]*f_rho[i, j] sumaij_T += c_T[i, j]*f_T[i, j] self.rhoc = unidades.Density(1./(sumai_v+sumaij_v)) self.Tc = unidades.Temperature(sumai_T+sumaij_T) self.M = m # g/mol self.R = unidades.SpecificHeat(R/self.M, "kJkgK") Tcxi = rhocxi = [] for i, componentei in enumerate(self.comp): sumav1 = sumat1 = 0 for k in range(i): sumav1 += c_rho[k, i]*dFrho_ki[k, i] sumat1 += c_T[k, i]*dFT_ki[k, i] sumav2 = sumat2 = 0 for k in range(i+1, len(self.xi)): sumav2 += c_rho[i, k]*dFrho_ik[i, k] sumat2 += c_T[i, k]*dFT_ik[i, k] Tcxi.append(2*self.xi[i]*componentei.Tc+sumat1+sumat2) rhocxi.append(2*self.xi[i]/componentei.rhoc+sumav1+sumav2) self.Tcxi = Tcxi self.rhocxi = rhocxi if v and not rho: rho = 1./v if T and x is not None: pass else: if T and P: rhoo = 2. rho = fsolve(lambda rho: self._solve(rho, T)["P"]-P*1e6, rhoo) elif T and rho: pass elif T and h is not None: rho = fsolve(lambda rho: self._solve(rho, T)["h"]-h, 200) elif T and s is not None: rho = fsolve(lambda rho: self._solve(rho, T)["s"]-s, 200) elif T and u is not None: rho = fsolve(lambda rho: self._solve(rho, T)["u"]-u, 200) elif P and rho: T = fsolve(lambda T: self._solve(rho, T)["P"]-P*1e6, 600) elif P and h is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["P"]-P*1e6, self._solve( par[0], par[1])["h"]-h), [200, 600]) elif P and s is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["P"]-P*1e6, self._solve( par[0], par[1])["s"]-s), [200, 600]) elif P and u is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["P"]-P*1e6, self._solve( par[0], par[1])["u"]-u), [200, 600]) elif rho and h is not None: T = fsolve(lambda T: self._solve(rho, T)["h"]-h, 600) elif rho and s is not None: T = fsolve(lambda T: self._solve(rho, T)["s"]-s, 600) elif rho and u is not None: T = fsolve(lambda T: self._solve(rho, T)["u"]-u, 600) elif h is not None and s is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["h"]-h, self._solve( par[0], par[1])["s"]-s), [200, 600]) elif h is not None and u is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["h"]-h, self._solve( par[0], par[1])["u"]-u), [200, 600]) elif s is not None and u is not None: rho, T = fsolve(lambda par: ( self._solve(par[0], par[1])["s"]-s, self._solve( par[0], par[1])["u"]-u), [200, 600]) else: raise IOError fio, fiot, fiott, fiod, fiodd, fiodt, fir, firt, firtt, fird, firdd,\ firdt, firdtt, nfioni, nfirni = self._eq(rho, T) # Tabla 7.1 pag 127 tau = self.Tc/T delta = rho/self.rhoc self.T = unidades.Temperature(T) self.rho = unidades.Density(rho) self.v = unidades.SpecificVolume(1./rho) self.P = unidades.Pressure((1+delta*fird)*self.R.JkgK*T*rho) self.Z = 1+delta*fird self.s = unidades.SpecificHeat(self.R.kJkgK*(tau*(fiot+firt)-fio-fir)) self.u = unidades.Enthalpy(self.R*T*tau*(fiot+firt)) self.h = unidades.Enthalpy(self.R*T*(1+tau*(fiot+firt)+delta*fird)) self.cp = unidades.SpecificHeat(self.R*( -tau**2*(fiott+firtt)+(1+delta*fird-delta*tau*firdt)**2 / (1+2*delta*fird+delta**2*firdd))) self.cv = unidades.SpecificHeat(-self.R*tau**2*(fiott+firtt)) self.g = unidades.Enthalpy(self.R*T*(1+fio+fir+delta*fird)) self.w = unidades.Speed((self.R*T*( 1+2*delta*fird+delta**2*firdd-(1+delta*fird-delta*tau*firdt)**2 / tau**2/(fiott+firtt)))**0.5) f, FI = self.fug(rho, T, nfirni) Ki, xi, yi, Q = self.flash() self.x = unidades.Dimensionless(Q) self.xl = xi self.xv = yi if self.kwargs["mezcla"]: self.Pc = self.kwargs["mezcla"].Pc self.Liquido = ThermoAdvanced() self.Gas = ThermoAdvanced()
def fill(self, fase, estado): fase._bool = True fase.M = unidades.Dimensionless(estado.molar_mass()*1000) fase.rho = unidades.Density(estado.rhomass()) fase.v = unidades.SpecificVolume(1./fase.rho) fase.Z = unidades.Dimensionless(estado.keyed_output(CP.iZ)) fase.h = unidades.Enthalpy(estado.hmass()) fase.s = unidades.SpecificHeat(estado.smass()) fase.u = unidades.Enthalpy(estado.umass()) fase.a = unidades.Enthalpy(fase.u-self.T*fase.s) fase.g = unidades.Enthalpy(fase.h-self.T*fase.s) if self._multicomponent: fase.fi = [] fase.f = [] for i in range(len(self.kwargs["ids"])): fase.fi.append(unidades.Dimensionless( estado.fugacity_coefficient(i))) fase.f.append(unidades.Pressure(estado.fugacity(i))) else: fase.fi = [unidades.Dimensionless( exp(estado.alphar()+estado.delta()*estado.dalphar_dDelta() - log(1+estado.delta()*estado.dalphar_dDelta())))] fase.f = [unidades.Pressure(self.P*f) for f in fase.fi] fase.cv = unidades.SpecificHeat(estado.cvmass()) fase.cp = unidades.SpecificHeat(estado.cpmass()) fase.cp_cv = unidades.Dimensionless(fase.cp/fase.cv) fase.gamma = fase.cp_cv fase.w = unidades.Speed(estado.speed_sound()) fase.rhoM = unidades.MolarDensity(estado.rhomolar(), "molm3") fase.hM = unidades.MolarEnthalpy(estado.hmolar(), "Jmol") fase.sM = unidades.MolarSpecificHeat(estado.smolar(), "JmolK") fase.uM = unidades.MolarEnthalpy(estado.umolar(), "Jmol") fase.aM = unidades.MolarEnthalpy(fase.a*self.M) fase.gM = unidades.MolarEnthalpy(fase.g*self.M) fase.cvM = unidades.MolarSpecificHeat(estado.cvmolar(), "JmolK") fase.cpM = unidades.MolarSpecificHeat(estado.cpmolar(), "JmolK") fase.joule = unidades.TemperaturePressure( estado.first_partial_deriv(CP.iT, CP.iP, CP.iHmass)) fase.Gruneisen = unidades.Dimensionless( fase.v/fase.cv*estado.first_partial_deriv(CP.iP, CP.iT, CP.iDmass)) fase.alfav = unidades.InvTemperature( estado.isobaric_expansion_coefficient()) fase.kappa = unidades.InvPressure(estado.isothermal_compressibility()) fase.kappas = unidades.InvPressure( -1/fase.v*self.derivative("v", "P", "s", fase)) fase.alfap = unidades.Density(fase.alfav/self.P/fase.kappa) fase.betap = unidades.Density( -1/self.P*self.derivative("P", "v", "T", fase)) fase.betas = unidades.TemperaturePressure( estado.first_partial_deriv(CP.iT, CP.iP, CP.iSmass)) fase.kt = unidades.Dimensionless( fase.rho/self.P*estado.first_partial_deriv( CP.iP, CP.iDmass, CP.iT)) fase.Ks = unidades.Pressure( fase.rho*estado.first_partial_deriv(CP.iP, CP.iDmass, CP.iSmass)) fase.Kt = unidades.Pressure( fase.rho*estado.first_partial_deriv(CP.iP, CP.iDmass, CP.iT)) fase.ks = unidades.Dimensionless( fase.rho/self.P*estado.first_partial_deriv( CP.iP, CP.iDmass, CP.iSmass)) fase.dhdT_rho = unidades.SpecificHeat( estado.first_partial_deriv(CP.iHmass, CP.iT, CP.iDmass)) fase.dhdT_P = unidades.SpecificHeat( estado.first_partial_deriv(CP.iHmass, CP.iT, CP.iP)) fase.dhdP_T = unidades.EnthalpyPressure( estado.first_partial_deriv(CP.iHmass, CP.iP, CP.iT)) # deltat fase.deltat = fase.dhdP_T fase.dhdP_rho = unidades.EnthalpyPressure( estado.first_partial_deriv(CP.iHmass, CP.iP, CP.iDmass)) fase.dhdrho_T = unidades.EnthalpyDensity( estado.first_partial_deriv(CP.iHmass, CP.iDmass, CP.iT)) fase.dhdrho_P = unidades.EnthalpyDensity( estado.first_partial_deriv(CP.iHmass, CP.iDmass, CP.iP)) fase.dpdT_rho = unidades.PressureTemperature( estado.first_partial_deriv(CP.iP, CP.iT, CP.iDmass)) fase.dpdrho_T = unidades.PressureDensity( estado.first_partial_deriv(CP.iP, CP.iDmass, CP.iT)) fase.drhodP_T = unidades.DensityPressure( estado.first_partial_deriv(CP.iDmass, CP.iP, CP.iT)) fase.drhodT_P = unidades.DensityTemperature( estado.first_partial_deriv(CP.iDmass, CP.iT, CP.iP)) fase.Z_rho = unidades.SpecificVolume((fase.Z-1)/fase.rho) fase.IntP = unidades.Pressure( self.T*estado.first_partial_deriv(CP.iP, CP.iT, CP.iDmass)-self.P) fase.hInput = unidades.Enthalpy( -fase.rho*estado.first_partial_deriv(CP.iHmass, CP.iDmass, CP.iP)) fase.virialB = unidades.SpecificVolume(estado.Bvirial()) fase.virialC = unidades.SpecificVolume_square(estado.Cvirial()) fase.invT = unidades.InvTemperature(-1/self.T) fase.mu = unidades.Viscosity(estado.viscosity()) fase.nu = unidades.Diffusivity(fase.mu/fase.rho) fase.k = unidades.ThermalConductivity(estado.conductivity()) fase.alfa = unidades.Diffusivity(fase.k/fase.rho/fase.cp) fase.Prandt = unidades.Dimensionless(estado.Prandtl()) fase.fraccion = estado.get_mole_fractions() fase.fraccion_masica = estado.get_mass_fractions() fase.epsilon = unidades.Dimensionless(None)
def fill(self, fase, T, rho, x): if sum(x) != 1: x = [round(xi, 10) for xi in x] mol = refprop.wmol(x) thermo = refprop.therm2(T, rho, x) thermo3 = refprop.therm3(T, rho, x) fase._bool = True fase.M = unidades.Dimensionless(mol["wmix"]) fase.rho = unidades.Density(rho*fase.M) fase.v = unidades.SpecificVolume(1./fase.rho) fase.Z = unidades.Dimensionless(thermo["Z"]) fase.u = unidades.Enthalpy(thermo["e"]/fase.M, "Jg") fase.h = unidades.Enthalpy(thermo["h"]/fase.M, "Jg") fase.s = unidades.SpecificHeat(thermo["s"]/fase.M, "JgK") fase.a = unidades.Enthalpy(thermo["A"]/fase.M, "Jg") fase.g = unidades.Enthalpy(thermo["G"]/fase.M, "Jg") fase.cv = unidades.SpecificHeat(thermo["cv"]/fase.M, "JgK") fase.cp = unidades.SpecificHeat(thermo["cp"]/fase.M, "JgK") fase.cp_cv = unidades.Dimensionless(fase.cp/fase.cv) fase.gamma = fase.cp_cv fase.w = unidades.Speed(thermo["w"]) fase.rhoM = unidades.MolarDensity(fase.rho/self.M) fase.hM = unidades.MolarEnthalpy(fase.h*self.M) fase.sM = unidades.MolarSpecificHeat(fase.s*self.M) fase.uM = unidades.MolarEnthalpy(fase.u*self.M) fase.aM = unidades.MolarEnthalpy(fase.a*self.M) fase.gM = unidades.MolarEnthalpy(fase.g*self.M) fase.cvM = unidades.MolarSpecificHeat(fase.cv*self.M) fase.cpM = unidades.MolarSpecificHeat(fase.cp*self.M) residual = refprop.residual(T, rho, x) fase.pr = unidades.Pressure(residual["pr"], "kPa") fase.ur = unidades.Enthalpy(residual["er"]/fase.M, "Jg") fase.hr = unidades.Enthalpy(residual["hr"]/fase.M, "Jg") fase.sr = unidades.SpecificHeat(residual["sr"]/fase.M, "JgK") fase.ar = unidades.Enthalpy(residual["Ar"]/fase.M, "Jg") fase.gr = unidades.Enthalpy(residual["Gr"]/fase.M, "Jg") fase.cvr = unidades.SpecificHeat(residual["cvr"]/fase.M, "JgK") fase.cpr = unidades.SpecificHeat(residual["cpr"]/fase.M, "JgK") fase.alfav = unidades.InvTemperature(thermo["beta"]) fase.kappa = unidades.InvPressure(thermo["xkappa"], "kPa") fase.kappas = unidades.InvPressure(thermo3["betas"], "kPa") fase.alfap = unidades.Density(fase.alfav/self.P/fase.kappa) fase.deltat = unidades.EnthalpyPressure( thermo3["thrott"]/fase.M, "kJkgkPa") fase.joule = unidades.TemperaturePressure(thermo["hjt"], "KkPa") fase.betas = unidades.TemperaturePressure( self.derivative("T", "P", "s", fase)) fase.betap = unidades.Density( -1/self.P*self.derivative("P", "v", "T", fase)) fase.Kt = unidades.Pressure(thermo3["xkkt"], "kPa") fase.Ks = unidades.Pressure(thermo3["bs"], "kPa") fase.kt = unidades.Dimensionless(thermo3["xkt"]) fase.ks = unidades.Dimensionless(thermo3["xisenk"]) dh = refprop.dhd1(T, rho, x) fase.dhdT_rho = unidades.SpecificHeat(dh["dhdt_D"]/fase.M, "kJkgK") fase.dhdT_P = unidades.SpecificHeat(dh["dhdt_p"]/fase.M, "kJkgK") fase.dhdP_T = unidades.EnthalpyPressure(dh["dhdp_t"]/fase.M, "kJkgkPa") # dhdtp_D : fix in library fase.dhdP_rho = unidades.EnthalpyPressure( dh["dhdtp_D"]/fase.M, "kJkgkPa") fase.dhdrho_T = unidades.EnthalpyDensity( dh["dhdD_t"]/fase.M**2, "kJkgkgm3") fase.dhdrho_P = unidades.EnthalpyDensity( dh["dhdD_p"]/fase.M**2, "kJkgkgm3") fase.dpdT_rho = unidades.PressureTemperature(thermo["dpdt"], "kPaK") fase.dpdrho_T = unidades.PressureDensity( thermo["dpdD"]/fase.M, "kPakgm3") # TODO: Add unit for derivative d^2p/dD^2 [kPa-L^2/mol^2] # MPa·m⁶/kg² fase.d2pdrho2 = unidades.Dimensionless(thermo["d2pdD2"]/fase.M**2/1000) fase.drhodP_T = unidades.DensityPressure( thermo["dDdp"]*fase.M, "kgm3kPa") fase.drhodT_P = unidades.DensityTemperature(thermo["dDdt"]*fase.M) fase.Gruneisen = unidades.Dimensionless(fase.v/fase.cv*fase.dpdT_rho) fase.Z_rho = unidades.SpecificVolume((fase.Z-1)/fase.rho) fase.IntP = unidades.Pressure(thermo3["pint"], "kPa") fase.hInput = unidades.Enthalpy(thermo3["spht"]/fase.M, "kJkg") fase.invT = unidades.InvTemperature(-1/self.T) fpv = refprop.fpv(T, rho, self.P.kPa, x)["Fpv"] fase.fpv = unidades.Dimensionless(fpv) chempot = refprop.chempot(T, rho, x)["u"] fase.chempot = [unidades.Enthalpy(c/fase.M) for c in chempot] fi = refprop.fugcof(T, rho, x)["f"] fase.fi = [unidades.Dimensionless(f) for f in fi] f = refprop.fgcty(T, rho, x)["f"] fase.f = [unidades.Pressure(f_i, "kPa") for f_i in f] b = refprop.virb(T, x)["b"] fase.virialB = unidades.SpecificVolume(b/self.M) c = refprop.virc(T, x)["c"] fase.virialC = unidades.SpecificVolume_square(c/self.M**2) # viriald don't supported for windows d = refprop.vird(T, x)["d"] fase.virialD = unidades.Dimensionless(d/self.M**3) ba = refprop.virba(T, x)["ba"] fase.virialBa = unidades.SpecificVolume(ba/self.M) ca = refprop.virca(T, x)["ca"] fase.virialCa = unidades.SpecificVolume_square(ca/self.M**2) dcdt = refprop.dcdt(T, x)["dct"] fase.dCdt = unidades.Dimensionless(dcdt/self.M**2) dcdt2 = refprop.dcdt2(T, x)["dct2"] fase.dCdt2 = unidades.Dimensionless(dcdt2/self.M**2) dbdt = refprop.dbdt(T, x)["dbt"] fase.dBdt = unidades.Dimensionless(dbdt/self.M) b12 = refprop.b12(T, x)["b"] fase.b12 = unidades.SpecificVolume(b12*fase.M) try: cstar = refprop.cstar(T, self.P.kPa, 0, x)["cs"] fase.cstar = unidades.Dimensionless(cstar) except refprop.RefpropdllError: fase.cstar = unidades.Dimensionless(None) fase.fraccion = [unidades.Dimensionless(xi) for xi in x] xg = refprop.xmass(x)["xkg"] fase.fraccion_masica = [unidades.Dimensionless(xi) for xi in xg] transport = refprop.trnprp(T, rho, x) fase.mu = unidades.Viscosity(transport["eta"], "muPas") fase.nu = unidades.Diffusivity(fase.mu/fase.rho) fase.k = unidades.ThermalConductivity(transport["tcx"]) fase.alfa = unidades.Diffusivity(fase.k/fase.rho/fase.cp) fase.Prandt = unidades.Dimensionless(fase.mu*fase.cp/fase.k) dielec = refprop.dielec(T, rho, x) fase.epsilon = unidades.Dimensionless(dielec["de"])
def calculo(self): method = [ freesteam.steam_pT, freesteam.steam_ph, freesteam.steam_ps, freesteam.steam_pv, freesteam.steam_Ts, freesteam.steam_Tx ] func = method[self._thermo] fluido = func(self.var1, self.var2) self.x = unidades.Dimensionless(fluido.x) self.name = mEoS.H2O.name self.region = fluido.region self.synonim = mEoS.H2O.synonym self.CAS = mEoS.H2O.CASNumber self.T = unidades.Temperature(fluido.T) self.P = unidades.Pressure(fluido.p) self.phase = self.getphase(Tc=self.Tc, Pc=self.Pc, T=self.T, P=self.P, x=self.x, region=self.region) self.Tr = unidades.Dimensionless(self.T / self.Tc) self.Pr = unidades.Dimensionless(self.P / self.Pc) self.rho = unidades.Density(fluido.rho) self.v = unidades.SpecificVolume(1. / self.rho) cp0 = prop0(self.T, self.P.MPa) cp0["h"] *= 1000 cp0["s"] *= 1000 cp0["cp"] *= 1000 cp0["cv"] *= 1000 self._cp0(cp0) self.Liquido = ThermoWater() self.Gas = ThermoWater() if self.x == 0: # only liquid phase self.fill(self, fluido) self.fill(self.Liquido, fluido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) elif self.x == 1: # only vapor phase self.fill(self, fluido) self.fill(self.Gas, fluido) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) else: # two phases liquido = freesteam.steam_Tx(fluido.T, 0.) self.fill(self.Liquido, liquido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) vapor = freesteam.steam_Tx(fluido.T, 1.) self.fill(self.Gas, vapor) self.h = unidades.Enthalpy(self.x * self.Gas.h + (1 - self.x) * self.Liquido.h) self.s = unidades.SpecificHeat(self.x * self.Gas.s + (1 - self.x) * self.Liquido.s) self.u = unidades.SpecificHeat(self.x * self.Gas.u + (1 - self.x) * self.Liquido.u) self.a = unidades.Enthalpy(self.x * self.Gas.a + (1 - self.x) * self.Liquido.a) self.g = unidades.Enthalpy(self.x * self.Gas.g + (1 - self.x) * self.Liquido.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None) self.Hvap = unidades.Enthalpy(vapor["h"] - liquido["h"], "kJkg") self.Svap = unidades.SpecificHeat(vapor["s"] - liquido["s"], "kJkgK")
def readStatefromJSON(self, fluid): if fluid: self._bool = True self.M = unidades.Dimensionless(fluid["M"]) self.v = unidades.SpecificVolume(fluid["v"]) self.rho = unidades.Density(1 / self.v) self.h = unidades.Enthalpy(fluid["h"]) self.s = unidades.SpecificHeat(fluid["s"]) self.u = unidades.Enthalpy(fluid["u"]) self.a = unidades.Enthalpy(fluid["a"]) self.g = unidades.Enthalpy(fluid["g"]) self.cv = unidades.SpecificHeat(fluid["cv"]) self.cp = unidades.SpecificHeat(fluid["cp"]) self.cp_cv = unidades.Dimensionless(fluid["cp/cv"]) self.w = unidades.Speed(fluid["w"]) self.Z = unidades.Dimensionless(fluid["Z"]) self.alfav = unidades.InvTemperature(fluid["alfav"]) self.kappa = unidades.InvPressure(fluid["kappa"]) self.kappas = unidades.InvPressure(fluid["kappas"]) self.mu = unidades.Viscosity(fluid["mu"]) self.k = unidades.ThermalConductivity(fluid["k"]) self.nu = unidades.Diffusivity(fluid["nu"]) self.Prandt = unidades.Dimensionless(fluid["Prandt"]) self.alfa = unidades.Diffusivity(fluid["alfa"]) self.joule = unidades.TemperaturePressure(fluid["joule"]) self.deltat = unidades.EnthalpyPressure(fluid["deltat"]) self.gamma = unidades.Dimensionless(fluid["gamma"]) self.alfap = unidades.Dimensionless(fluid["alfap"]) self.betap = unidades.Dimensionless(fluid["betap"]) self.fi = [unidades.Dimensionless(f) for f in fluid["fi"]] self.f = [unidades.Pressure(f) for f in fluid["f"]] self.Q = unidades.VolFlow(fluid["volFlow"]) self.caudalmasico = unidades.MassFlow(fluid["massFlow"]) self.caudalmolar = unidades.MolarFlow(fluid["molarFlow"]) self.fraccion = [ unidades.Dimensionless(x) for x in fluid["fraction"] ] self.fraccion_masica = [ unidades.Dimensionless(x) for x in fluid["massFraction"] ] self.caudalunitariomasico = [ unidades.MassFlow(x) for x in fluid["massUnitFlow"] ] self.caudalunitariomolar = [ unidades.MolarFlow(x) for x in fluid["molarUnitFlow"] ] self.rhoM = unidades.MolarDensity(self.rho / self.M) self.hM = unidades.MolarEnthalpy(self.h / self.M) self.sM = unidades.MolarSpecificHeat(self.s / self.M) self.uM = unidades.MolarEnthalpy(self.u / self.M) self.aM = unidades.MolarEnthalpy(self.a / self.M) self.gM = unidades.MolarEnthalpy(self.g / self.M) self.cvM = unidades.MolarSpecificHeat(self.cv / self.M) self.cpM = unidades.MolarSpecificHeat(self.cp / self.M)