def volumen(self): self.Di = unidades.Length(0) self.L = unidades.Length(0) self.reborde = 0 self.espesor = 0 self.espesor_cabeza = 0 V_carcasa = pi / 4 * self.Di**2 * self.L if self.kwargs["cabeza"] == 0: V_cabeza = 4. / 3 * pi / 8 * self.Di**3 elif self.kwargs["cabeza"] == 1: V_cabeza = 4. / 3 * pi / 8 / 2 * self.Di**3 elif self.kwargs["cabeza"] == 2: V_cabeza = 0.215483 / 2 * self.Di**3 else: V_cabeza = 0. self.V = unidades.Volume(V_carcasa + V_cabeza)
def __init__(self, entrada=None, parent=None): """entrada: Parametro opcional de clase corriente que indica la corriente de entrada en kla tubería""" super(UI_equipment, self).__init__(Tower, parent=parent) self.entrada = entrada # #Pestaña entrada # self.Entrada= UI_corriente.Ui_corriente(entrada) # self.Entrada.Changed.connect(self.cambiar_entrada) # self.tabWidget.addTab(self.Entrada, QtGui.QApplication.translate("equipment", "Entrada", None, QtGui.QApplication.UnicodeUTF8)) #Pestaña calculo gridLayout_Calculo = QtWidgets.QGridLayout(self.tabCalculo) #Pestaña costos gridLayout_Costos = QtWidgets.QGridLayout(self.tabCostos) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Proceso:", None)), 1, 1, 1, 1) self.proceso = QtWidgets.QComboBox() self.proceso.addItem( QtWidgets.QApplication.translate("equipment", "Destilación", None)) self.proceso.addItem( QtWidgets.QApplication.translate("equipment", "Absorción", None)) self.proceso.currentIndexChanged.connect(self.calcularCostos) gridLayout_Costos.addWidget(self.proceso, 1, 2, 1, 1) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Tipo de columna:", None)), 2, 1, 1, 1) self.tipo = QtWidgets.QComboBox() self.tipo.addItem( QtWidgets.QApplication.translate("equipment", "De pisos", None)) self.tipo.addItem( QtWidgets.QApplication.translate("equipment", "De relleno", None)) self.tipo.currentIndexChanged.connect(self.mostrarSubclasificacion) self.tipo.currentIndexChanged.connect(self.calcularCostos) gridLayout_Costos.addWidget(self.tipo, 2, 2, 1, 1) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Material:", None)), 3, 1, 1, 1) self.material = QtWidgets.QComboBox() self.material.addItem( QtWidgets.QApplication.translate("equipment", "Acero al carbon", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Acero inoxidable 304", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Acero inoxidable 316", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Carpenter 20CB-3", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Niquel 200", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Monel 400", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Inconel 600", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Incoloy 825", None)) self.material.addItem( QtWidgets.QApplication.translate("equipment", "Titanio", None)) self.material.currentIndexChanged.connect(self.calcularCostos) gridLayout_Costos.addWidget(self.material, 3, 2, 1, 1) gridLayout_Costos.addItem( QtWidgets.QSpacerItem(30, 30, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 1, 3, 5, 1) self.groupBox_Pisos = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("equipment", "Torre de pisos", None)) gridLayout_Costos.addWidget(self.groupBox_Pisos, 1, 4, 4, 2) gridLayout_1 = QtWidgets.QGridLayout(self.groupBox_Pisos) gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Tipo:", None)), 1, 1, 1, 1) self.tipoPisos = QtWidgets.QComboBox() self.tipoPisos.addItem( QtWidgets.QApplication.translate("equipment", "De válvula", None)) self.tipoPisos.addItem( QtWidgets.QApplication.translate("equipment", "De rejilla", None)) self.tipoPisos.addItem( QtWidgets.QApplication.translate("equipment", "De borboteo", None)) self.tipoPisos.addItem( QtWidgets.QApplication.translate("equipment", "De tamiz", None)) self.tipoPisos.currentIndexChanged.connect(self.calcularCostos) gridLayout_1.addWidget(self.tipoPisos, 1, 2, 1, 1) gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Material:", None)), 2, 1, 1, 1) self.materialPisos = QtWidgets.QComboBox() self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Acero al carbon", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Acero inoxidable 304", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Acero inoxidable 316", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Carpenter 20CB-3", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Niquel 200", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Monel 400", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Inconel 600", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Incoloy 825", None)) self.materialPisos.addItem( QtWidgets.QApplication.translate("equipment", "Titanio", None)) self.materialPisos.currentIndexChanged.connect(self.calcularCostos) gridLayout_1.addWidget(self.materialPisos, 2, 2, 1, 1) gridLayout_1.addItem( QtWidgets.QSpacerItem(10, 10, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 3, 1, 1, 2) gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Diametro:", None)), 4, 1, 1, 1) self.diametroPisos = Entrada_con_unidades(unidades.Length) gridLayout_1.addWidget(self.diametroPisos, 4, 2, 1, 1) gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Número:", None)), 5, 1, 1, 1) self.NumeroPisos = Entrada_con_unidades(int, spinbox=True, min=1, step=1, width=50) gridLayout_1.addWidget(self.NumeroPisos, 5, 2, 1, 1) gridLayout_1.addItem( QtWidgets.QSpacerItem(10, 10, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 6, 1, 1, 2) self.groupBox_relleno = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("equipment", "Torre de relleno", None)) gridLayout_Costos.addWidget(self.groupBox_relleno, 1, 4, 4, 2) gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_relleno) gridLayout_2.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Volumen:", None)), 1, 1, 1, 1) self.VolumenRelleno = Entrada_con_unidades(unidades.Volume, "VolLiq") gridLayout_2.addWidget(self.VolumenRelleno, 1, 2, 1, 1) gridLayout_2.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste unitario:", None)), 2, 1, 1, 1) self.C_unit_relleno = Entrada_con_unidades( unidades.Currency, retornar=False, textounidad="%s / %s" % (unidades.Currency(None).text(), unidades.Volume(None).text("VolLiq"))) gridLayout_2.addWidget(self.C_unit_relleno, 2, 2, 1, 1) gridLayout_2.addItem( QtWidgets.QSpacerItem(10, 10, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 3, 1, 1, 2) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Diametro:", None)), 5, 1, 1, 1) self.Dc = Entrada_con_unidades(unidades.Length) gridLayout_Costos.addWidget(self.Dc, 5, 2, 1, 2) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Altura:", None)), 6, 1, 1, 1) self.Hc = Entrada_con_unidades(unidades.Length) gridLayout_Costos.addWidget(self.Hc, 6, 2, 1, 2) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Espesor (Tapa):", None)), 7, 1, 1, 1) self.EspesorSuperior = Entrada_con_unidades(unidades.Length, "Thickness") gridLayout_Costos.addWidget(self.EspesorSuperior, 7, 2, 1, 2) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Espesor (Fondo):", None)), 8, 1, 1, 1) self.EspesorInferior = Entrada_con_unidades(unidades.Length, "Thickness") gridLayout_Costos.addWidget(self.EspesorInferior, 8, 2, 1, 2) gridLayout_Costos.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Densidad:", None)), 9, 1, 1, 1) self.EspesorInferior = Entrada_con_unidades(unidades.Density, "DenLiq") gridLayout_Costos.addWidget(self.EspesorInferior, 9, 2, 1, 2) self.Costos = costIndex.CostData(3, 3) self.Costos.valueChanged.connect(self.calcularCostos) gridLayout_Costos.addWidget(self.Costos, 10, 1, 2, 4) gridLayout_Costos.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 12, 1, 1, 6) self.groupBox_Costos = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("equipment", "Costos calculados", None)) gridLayout_Costos.addWidget(self.groupBox_Costos, 13, 1, 1, 5) gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_Costos) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Pisos:", None)), 0, 1, 1, 1) self.C_pisos = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_pisos, 0, 2, 1, 1) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Carcasa:", None)), 1, 1, 1, 1) self.C_carcasa = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_carcasa, 1, 2, 1, 1) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Accesorios:", None)), 2, 1, 1, 1) self.C_accesorios = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_accesorios, 2, 2, 1, 1) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Columna:", None)), 0, 4, 1, 1) self.C_columna = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_columna, 0, 5, 1, 1) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Adquisición:", None)), 1, 4, 1, 1) self.C_adq = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_adq, 1, 5, 1, 1) gridLayout_5.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Coste Instalación:", None)), 2, 4, 1, 1) self.C_inst = Entrada_con_unidades(unidades.Currency, retornar=False, readOnly=True) gridLayout_5.addWidget(self.C_inst, 2, 5, 1, 1) # #Pestaña salida # self.pSalida = QtGui.QTabWidget() # self.tabWidget.addTab(self.pSalida,QtGui.QApplication.translate("equipment", "Salida", None, QtGui.QApplication.UnicodeUTF8)) self.mostrarSubclasificacion(0)
def volumen(self): """Cálculo del volumen interno de la columna, útil ya que corresponde al volumen de relleno necesario en columnas de relleno""" return unidades.Volume(pi / 4 * self.kwargs["Di"]**2 * self.kwargs["h"])
def calculo(self): # TODO: Add configuration section to Preferences # preos = Preferences.getboolean("refProp", "preos") # aga = Preferences.getboolean("refProp", "aga") # gerg = Preferences.getboolean("refProp", "gerg") preos = self.kwargs["preos"] aga = self.kwargs["aga"] gerg = self.kwargs["gerg"] x = self._x() fluido = self._name() kwmod = [self.kwargs[k] for k in ('htype', 'hmix', 'hcomp')] refprop.setmod(*kwmod) if gerg: refprop.gerg04(ixflag=1) refprop.setup("def", fluido) # refprop.setktv() if preos: refprop.preos(ixflag=2) elif aga: refprop.setaga() kwref = {k: self.kwargs[k] for k in ( 'hrf', 'ixflag', 'x0', 'h0', 's0', 't0', 'p0')} refprop.setref(**kwref) m = refprop.wmol(x)["wmix"] self.M = unidades.Dimensionless(m) crit = refprop.critp(x) self.Pc = unidades.Pressure(crit["pcrit"], "kPa") self.Tc = unidades.Temperature(crit["tcrit"]) self.rhoc = unidades.Density(crit["Dcrit"]*self.M) args = self.args() flash = refprop.flsh(*args) # check if ['q'] in fld if 'q' in flash.keys(): x = flash['q'] elif 'h' in flash.keys(): x = refprop.flsh('ph', flash['p'], flash['h'], flash['x'])['q'] elif 's' in flash.keys(): x = refprop.flsh('ps', flash['p'], flash['s'], flash['x'])['q'] if 0 < x < 1: region = 4 else: region = 1 if x < 0: x = 0 elif x > 1: x = 1 self.x = unidades.Dimensionless(x) self.T = unidades.Temperature(flash["t"]) self.P = unidades.Pressure(flash["p"], "kPa") self.Tr = unidades.Dimensionless(self.T/self.Tc) self.Pr = unidades.Dimensionless(self.P/self.Pc) self.rho = unidades.Density(flash["D"]*self.M) self.v = unidades.SpecificVolume(1./self.rho) self.phase = self.getphase(Tc=self.Tc, Pc=self.Pc, T=self.T, P=self.Pc, x=self.x, region=region) if flash["nc"] == 1: name = refprop.name(flash["nc"]) self.name = name["hname"] self.synonim = name["hn80"] self.CAS = name["hcas"] info = refprop.info(flash["nc"]) self.R = unidades.SpecificHeat(info["Rgas"]/self.M) self.Tt = unidades.Temperature(info["ttrp"]) self.Tb = unidades.Temperature(info["tnbpt"]) self.f_accent = unidades.Dimensionless(info["acf"]) self.momentoDipolar = unidades.DipoleMoment(info["dip"], "Debye") self._doc = {} for htype in ['EOS', 'CP0', 'ETA', 'VSK', 'TCX', 'TKK', 'STN', 'DE ', 'MLT', 'SBL', 'PS ', 'DL ', 'DV ']: self._doc[htype] = refprop.getmod(flash["nc"], htype)["hcite"] else: self.name = "" self.synonim = "" self.CAS = "" rmix = refprop.rmix2(flash["x"]) self.R = unidades.SpecificHeat(rmix["Rgas"]/self.M) self.Tt = unidades.Temperature(None) self.Tb = unidades.Temperature(None) self.f_accent = unidades.Dimensionless(None) self.momentoDipolar = unidades.DipoleMoment(None) self._doc = {} self._cp0(flash) self.Liquido = ThermoRefProp() self.Gas = ThermoRefProp() if self.x == 0: # liquid phase self.fill(self.Liquido, flash["t"], flash["Dliq"], flash["xliq"]) self.fill(self, flash["t"], flash["Dliq"], flash["xliq"]) self.fillNone(self.Gas) elif self.x == 1: # vapor phase self.fill(self.Gas, flash["t"], flash["Dvap"], flash["xvap"]) self.fill(self, flash["t"], flash["Dvap"], flash["xvap"]) self.fillNone(self.Liquido) else: # Two phase self.fill(self.Liquido, flash["t"], flash["Dliq"], flash["xliq"]) self.fill(self.Gas, flash["t"], flash["Dvap"], flash["xvap"]) self.u = unidades.Enthalpy(flash["e"]/self.M, "Jg") self.h = unidades.Enthalpy(flash["h"]/self.M, "Jg") self.s = unidades.SpecificHeat(flash["s"]/self.M, "JgK") self.a = unidades.Enthalpy(self.u-self.T*self.s) self.g = unidades.Enthalpy(self.h-self.T*self.s) if self.x < 1 and self.T <= self.Tc: surten = refprop.surten(flash["t"], flash["Dliq"], flash["Dvap"], flash["xliq"], flash["xvap"]) self.sigma = unidades.Tension(surten["sigma"]) else: self.sigma = unidades.Tension(None) if 0 < self.x < 1: self.Hvap = unidades.Enthalpy(self.Gas.h-self.Liquido.h) self.Svap = unidades.SpecificHeat(self.Gas.s-self.Liquido.s) self.K = [] for x, y in zip(self.Liquido.fraccion, self.Gas.fraccion): self.K.append(unidades.Dimensionless(y/x)) else: self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) self.K = [unidades.Dimensionless(1)]*flash["nc"] # NOT supported on Windows excess = refprop.excess(flash["t"], flash["D"], flash["x"]) self.vE = unidades.Volume(excess["vE"]/self.M) self.uE = unidades.Enthalpy(excess["eE"]/self.M, "Jg") self.hE = unidades.Enthalpy(excess["hE"]/self.M, "Jg") self.sE = unidades.SpecificHeat(excess["sE"]/self.M, "JgK") self.aE = unidades.Enthalpy(excess["aE"]/self.M, "Jg") self.gE = unidades.Enthalpy(excess["gE"]/self.M, "Jg") self.csat = [] self.dpdt_sat = [] self.cv2p = [] for i in range(1, flash["nc"]+1): dat = refprop.dptsatk(i, flash["t"], kph=2) self.csat.append(unidades.SpecificHeat(dat["csat"]/self.M, "JgK")) self.dpdt_sat.append( unidades.PressureTemperature(dat["dpdt"], "kPaK")) cv2 = refprop.cv2pk(i, flash["t"], flash["D"]) self.cv2p.append(unidades.SpecificHeat(cv2["cv2p"]/self.M, "JgK"))
def _calculo(self): self._initialization() x = self._x() m = refprop.wmol(x)["wmix"] self.M = unidades.Dimensionless(m) crit = refprop.critp(x) self.Pc = unidades.Pressure(crit["pcrit"], "kPa") self.Tc = unidades.Temperature(crit["tcrit"]) self.rhoc = unidades.Density(crit["Dcrit"]*self.M) args = self.args() flash = refprop.flsh(*args) # check if ['q'] in fld if 'q' in flash.keys(): x = flash['q'] elif 'h' in flash.keys(): x = refprop.flsh('ph', flash['p'], flash['h'], flash['x'])['q'] elif 's' in flash.keys(): x = refprop.flsh('ps', flash['p'], flash['s'], flash['x'])['q'] if 0 < x < 1: region = 4 else: region = 1 if x < 0: x = 0 elif x > 1: x = 1 self.x = unidades.Dimensionless(x) self.T = unidades.Temperature(flash["t"]) self.P = unidades.Pressure(flash["p"], "kPa") self.Tr = unidades.Dimensionless(self.T/self.Tc) self.Pr = unidades.Dimensionless(self.P/self.Pc) self.rho = unidades.Density(flash["D"]*self.M) self.v = unidades.SpecificVolume(1./self.rho) self.phase = self.getphase(Tc=self.Tc, Pc=self.Pc, T=self.T, P=self.Pc, x=self.x, region=region) if flash["nc"] == 1: name = refprop.name(flash["nc"]) self.name = name["hname"] self.synonim = name["hn80"] self.CAS = name["hcas"] info = refprop.info(flash["nc"]) self.R = unidades.SpecificHeat(info["Rgas"]/self.M) self.Tt = unidades.Temperature(info["ttrp"]) self.Tb = unidades.Temperature(info["tnbpt"]) self.f_accent = unidades.Dimensionless(info["acf"]) self.momentoDipolar = unidades.DipoleMoment(info["dip"], "Debye") self._doc = {} for htype in ['EOS', 'CP0', 'ETA', 'VSK', 'TCX', 'TKK', 'STN', 'DE ', 'MLT', 'SBL', 'PS ', 'DL ', 'DV ']: self._doc[htype] = refprop.getmod(flash["nc"], htype)["hcite"] else: self.name = "" self.synonim = "" self.CAS = "" rmix = refprop.rmix2(flash["x"]) self.R = unidades.SpecificHeat(rmix["Rgas"]/self.M) self.Tt = unidades.Temperature(None) self.Tb = unidades.Temperature(None) self.f_accent = unidades.Dimensionless(None) self.momentoDipolar = unidades.DipoleMoment(None) self._doc = {} self._cp0(flash) self.Liquido = ThermoRefProp() self.Gas = ThermoRefProp() if self.x == 0.: # liquid phase self.fill(self.Liquido, flash["t"], flash["D"], flash["x"]) self.fill(self, flash["t"], flash["D"], flash["x"]) self.fillNone(self.Gas) elif self.x == 1.: # vapor phase self.fill(self.Gas, flash["t"], flash["D"], flash["x"]) self.fill(self, flash["t"], flash["D"], flash["x"]) self.fillNone(self.Liquido) else: # Two phase self.fillNone(self) self.fill(self.Liquido, flash["t"], flash["Dliq"], flash["xliq"]) self.fill(self.Gas, flash["t"], flash["Dvap"], flash["xvap"]) self.v = unidades.SpecificVolume(x*self.Gas.v+(1-x)*self.Liquido.v) self.rho = unidades.Density(1./self.v) self.u = unidades.Enthalpy(flash["e"]/self.M, "Jg") self.h = unidades.Enthalpy(flash["h"]/self.M, "Jg") self.s = unidades.SpecificHeat(flash["s"]/self.M, "JgK") self.a = unidades.Enthalpy(self.u-self.T*self.s) self.g = unidades.Enthalpy(self.h-self.T*self.s) 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) if self.x < 1 and self.T <= self.Tc: surten = refprop.surten(flash["t"], flash["Dliq"], flash["Dvap"], flash["xliq"], flash["xvap"]) self.sigma = unidades.Tension(surten["sigma"]) else: self.sigma = unidades.Tension(None) if 0 < self.x < 1: self.Hvap = unidades.Enthalpy(self.Gas.h-self.Liquido.h) self.Svap = unidades.SpecificHeat(self.Gas.s-self.Liquido.s) self.K = [] for x, y in zip(self.Liquido.fraccion, self.Gas.fraccion): self.K.append(unidades.Dimensionless(y/x)) else: self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) self.K = [unidades.Dimensionless(1)]*flash["nc"] self.invT = unidades.InvTemperature(-1/self.T) # NOT supported on Windows if sys.platform != "win32": excess = refprop.excess(flash["t"], flash["D"], flash["x"]) self.vE = unidades.Volume(excess["vE"]/self.M) self.uE = unidades.Enthalpy(excess["eE"]/self.M, "Jg") self.hE = unidades.Enthalpy(excess["hE"]/self.M, "Jg") self.sE = unidades.SpecificHeat(excess["sE"]/self.M, "JgK") self.aE = unidades.Enthalpy(excess["aE"]/self.M, "Jg") self.gE = unidades.Enthalpy(excess["gE"]/self.M, "Jg") else: self.vE = unidades.Volume(0) self.uE = unidades.Enthalpy(0) self.hE = unidades.Enthalpy(0) self.sE = unidades.SpecificHeat(0) self.aE = unidades.Enthalpy(0) self.gE = unidades.Enthalpy(0) self.csat = [] self.dpdt_sat = [] self.cv2p = [] if self.Tt <= flash["t"] <= self.Tc: for i in range(1, flash["nc"]+1): dat = refprop.dptsatk(i, flash["t"], kph=2) cs = unidades.SpecificHeat(dat["csat"]/self.M, "JgK") self.csat.append(cs) self.dpdt_sat.append( unidades.PressureTemperature(dat["dpdt"], "kPaK")) cv2 = refprop.cv2pk(i, flash["t"], flash["D"]) cv = unidades.SpecificHeat(cv2["cv2p"]/self.M, "JgK") self.cv2p.append(cv)