self.HEOS = HEOS # Store the propoerties in a dict of CP_fluid instances coolprop_fluids = {} if has_CoolProp: for CASRN in coolprop_dict: HEOS = AbstractState("HEOS", CASRN) coolprop_fluids[CASRN] = CP_fluid( Tmin=HEOS.Tmin(), Tmax=HEOS.Tmax(), Pmax=HEOS.pmax(), has_melting_line=HEOS.has_melting_line(), Tc=HEOS.T_critical(), Pc=HEOS.p_critical(), Tt=HEOS.Ttriple(), omega=HEOS.acentric_factor(), HEOS=HEOS) class MultiCheb1D(object): '''Simple class to store set of coefficients for multiple chebshev approximations and perform calculations from them. ''' def __init__(self, points, coeffs): self.points = points self.coeffs = coeffs self.N = len(points) - 1 def __call__(self, x): i = bisect_left(self.points, x)
self.HEOS = HEOS # Store the propoerties in a dict of CP_fluid instances coolprop_fluids = {} if has_CoolProp: for CASRN in coolprop_dict: HEOS = AbstractState("HEOS", CASRN) coolprop_fluids[CASRN] = CP_fluid( Tmin=HEOS.Tmin(), Tmax=HEOS.Tmax(), Pmax=HEOS.pmax(), has_melting_line=HEOS.has_melting_line(), Tc=HEOS.T_critical(), Pc=HEOS.p_critical(), Tt=HEOS.Ttriple(), omega=HEOS.acentric_factor(), HEOS=HEOS) def CoolProp_T_dependent_property(T, CASRN, prop, phase): r'''Calculates a property of a chemical in either the liquid or gas phase as a function of temperature only. This means that the property is either at 1 atm or along the saturation curve. Parameters ---------- T : float Temperature of the fluid [K] CASRN : str CAS number of the fluid
def __init__(self, symbol="N2", T=530.0, P=1000.0, child=1): '''Init generic Fluid''' self.symbol = symbol.upper() # http://www.coolprop.org/_static/doxygen/html/class_cool_prop_1_1_abstract_state.html AS = AbstractState("HEOS", self.symbol) self.AS = AS self.name = AS.name() self.T = T self.P = P self.child = child Tsi = TSI_fromEng(T) Psi = PSI_fromEng(P) AS.update(CP.PT_INPUTS, Psi, Tsi) self.WtMol = AS.molar_mass() * 1000.0 self.Tc = Teng_fromSI(AS.T_critical()) self.Pc = Peng_fromSI(AS.p_critical()) self.Dc = Deng_fromSI(AS.rhomass_critical()) self.Ttriple = Teng_fromSI(AS.Ttriple()) try: self.Tfreeze = Teng_fromSI(AS.T_freeze()) except: self.Tfreeze = self.Ttriple self.Tmin = Teng_fromSI(AS.Tmin()) self.Tmax = Teng_fromSI(AS.Tmax()) #self.Pmin = Peng_fromSI( AS.pmin() ) # missing from AbstractState self.Pmax = Peng_fromSI(AS.pmax()) dcIdeal = self.Pc * self.WtMol / self.Tc / 10.729 self.Zc = dcIdeal / self.Dc try: TnbpSI = PropsSI("T", "P", 101325, "Q", Q_LIQUID, self.symbol) self.good_nbp = True self.Tnbp = Teng_fromSI(TnbpSI) except: #print('WARNING... "%s" failed Normal Boiling Point Calculation.'%self.symbol) Ttriple = PropsSI(self.symbol, 'Ttriple') #print(' Using Triple Point = %g degK as Tref'%Ttriple) self.good_nbp = False self.Tnbp = 'N/A' if self.good_nbp: if self.Tnbp < 536.67: self.Tref = self.Tnbp # if NBP is low, use NBP as ref else: self.Tref = 536.67 # 536.67R = (SATP, Standard Ambient T P) = 77F, 25C else: self.Tref = Teng_fromSI(Ttriple) + 0.1 self.Pref = 14.7 #print( 'About to call setTP #1 with Tref, Pref=',self.Tref,self.Pref ) self.setTP(self.Tref, self.Pref) #print( 'Back from call setTP') self.Href = self.H #print( 'About to call setTP #2') self.setTP(T, P) #print( 'Back from call setTP') if child == 1: self.dup = EC_Fluid(symbol=self.symbol, T=self.T, P=self.P, child=0) self.calcdFreezePt = 0