mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-02-10 05:45:14 -05:00
209 lines
8.3 KiB
Python
209 lines
8.3 KiB
Python
"""
|
|
Some fluids that are part of CoolProp 4 or another
|
|
software and that have to be reimplemented for
|
|
CoolProp 5.
|
|
|
|
The most famous one is probably the aqueous Lithium
|
|
bromide solution. This one is going to be transferred
|
|
from the equations from the publication to the standard
|
|
parameter form.
|
|
|
|
"""
|
|
from __future__ import division, print_function
|
|
import numpy as np
|
|
from CPIncomp.DataObjects import DigitalData, PureData
|
|
|
|
class HyCool20(PureData,DigitalData):
|
|
def __init__(self):
|
|
DigitalData.__init__(self)
|
|
PureData.__init__(self)
|
|
|
|
self.name = "HY20"
|
|
self.description = "HYCOOL 20, Potassium formate"
|
|
self.reference = "Hydro2000"
|
|
|
|
self.Tmax = 50 + 273.15
|
|
self.Tmin = -20 + 273.15
|
|
self.TminPsat = self.Tmax
|
|
self.Tbase = 0.00 + 273.15
|
|
self.temperature.data = self.getTrange()
|
|
|
|
self.density.source = self.density.SOURCE_COEFFS
|
|
self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.density.coeffs = np.array([[1202.2],[-0.42918]])
|
|
|
|
self.specific_heat.source = self.specific_heat.SOURCE_COEFFS
|
|
self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.specific_heat.coeffs = np.array([[2.955],[0.0023]])*1e3
|
|
|
|
key = 'Cond'
|
|
def funcCond(T,x):
|
|
T = (T-self.Tbase)
|
|
if T <= 20: return 0.001978*T+0.5172
|
|
else: return 0.001005*T+0.5368
|
|
self.conductivity.xData,self.conductivity.yData,self.conductivity.data = self.getArray(dataID=key,func=funcCond,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.conductivity.DEBUG)
|
|
self.conductivity.source = self.conductivity.SOURCE_EQUATION
|
|
funcCond = None
|
|
|
|
key = 'Mu'
|
|
def funcMu(T,x):
|
|
T = (T-self.Tbase)
|
|
if T <= 20: return 0.07190*np.exp(524.75/(T+142.05))
|
|
else: return T*(0.0005524*T - 0.06281)+2.8536
|
|
self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID=key,func=funcMu,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG)
|
|
self.viscosity.source = self.viscosity.SOURCE_EQUATION
|
|
funcMu = None
|
|
|
|
|
|
class HyCool30(PureData,DigitalData):
|
|
def __init__(self):
|
|
DigitalData.__init__(self)
|
|
PureData.__init__(self)
|
|
|
|
self.name = "HY30"
|
|
self.description = "HyCool 30, Potassium formate"
|
|
self.reference = "Hydro2000"
|
|
|
|
self.Tmax = 50 + 273.15
|
|
self.Tmin = -30 + 273.15
|
|
self.TminPsat = self.Tmax
|
|
self.Tbase = 0.00 + 273.15
|
|
self.temperature.data = self.getTrange()
|
|
|
|
self.density.source = self.density.SOURCE_COEFFS
|
|
self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.density.coeffs = np.array([[1257.5],[-0.475350]])
|
|
|
|
self.specific_heat.source = self.specific_heat.SOURCE_COEFFS
|
|
self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.specific_heat.coeffs = np.array([[2.783],[0.0023]])*1e3
|
|
|
|
key = 'Cond'
|
|
def funcCond(T,x):
|
|
T = (T-self.Tbase)
|
|
if T <= 20: return 0.001840*T+0.4980
|
|
else: return 0.001000*T+0.5140
|
|
self.conductivity.xData,self.conductivity.yData,self.conductivity.data = self.getArray(dataID=key,func=funcCond,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.conductivity.DEBUG)
|
|
self.conductivity.source = self.conductivity.SOURCE_EQUATION
|
|
funcCond = None
|
|
|
|
key = 'Mu'
|
|
def funcMu(T,x):
|
|
T = (T-self.Tbase)
|
|
if T <= 20: return 0.11100*np.exp(408.17/(T+123.15))
|
|
else: return T*(0.000295*T - 0.0441)+2.6836
|
|
self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID=key,func=funcMu,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG)
|
|
self.viscosity.source = self.viscosity.SOURCE_EQUATION
|
|
funcMu = None
|
|
|
|
|
|
class HyCool40(PureData,DigitalData):
|
|
def __init__(self):
|
|
DigitalData.__init__(self)
|
|
PureData.__init__(self)
|
|
|
|
self.name = "HY40"
|
|
self.description = "HyCool 40, Potassium formate"
|
|
self.reference = "Hydro2000"
|
|
|
|
self.Tmax = 20 + 273.15
|
|
self.Tmin = -40 + 273.15
|
|
self.TminPsat = self.Tmax
|
|
self.Tbase = 0.00 + 273.15
|
|
self.temperature.data = self.getTrange()
|
|
|
|
self.density.source = self.density.SOURCE_COEFFS
|
|
self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.density.coeffs = np.array([[1304.5],[-0.512290]])
|
|
|
|
self.specific_heat.source = self.specific_heat.SOURCE_COEFFS
|
|
self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.specific_heat.coeffs = np.array([[2.646],[0.0023]])*1e3
|
|
|
|
self.conductivity.source = self.conductivity.SOURCE_COEFFS
|
|
self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.conductivity.coeffs = np.array([[0.4826],[0.001730]])
|
|
|
|
key = 'Mu'
|
|
def funcMu(T,x):
|
|
T = (T-self.Tbase)
|
|
return 0.07830*np.exp(498.13/(T+130.25))
|
|
self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID=key,func=funcMu,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG)
|
|
self.viscosity.source = self.viscosity.SOURCE_EQUATION
|
|
funcMu = None
|
|
|
|
|
|
class HyCool45(PureData,DigitalData):
|
|
def __init__(self):
|
|
DigitalData.__init__(self)
|
|
PureData.__init__(self)
|
|
|
|
self.name = "HY45"
|
|
self.description = "HyCool 45, Potassium formate"
|
|
self.reference = "Hydro2000"
|
|
|
|
self.Tmax = 20 + 273.15
|
|
self.Tmin = -45 + 273.15
|
|
self.TminPsat = self.Tmax
|
|
self.Tbase = 0.00 + 273.15
|
|
self.temperature.data = self.getTrange()
|
|
|
|
self.density.source = self.density.SOURCE_COEFFS
|
|
self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.density.coeffs = np.array([[1328.7],[-0.530754]])
|
|
|
|
self.specific_heat.source = self.specific_heat.SOURCE_COEFFS
|
|
self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.specific_heat.coeffs = np.array([[2.578],[0.0023]])*1e3
|
|
|
|
self.conductivity.source = self.conductivity.SOURCE_COEFFS
|
|
self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.conductivity.coeffs = np.array([[0.4750],[0.001674]])
|
|
|
|
key = 'Mu'
|
|
def funcMu(T,x):
|
|
T = (T-self.Tbase)
|
|
return 0.08990*np.exp(479.09/(T+126.55))
|
|
self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID=key,func=funcMu,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG)
|
|
self.viscosity.source = self.viscosity.SOURCE_EQUATION
|
|
funcMu = None
|
|
|
|
|
|
class HyCool50(PureData,DigitalData):
|
|
def __init__(self):
|
|
DigitalData.__init__(self)
|
|
PureData.__init__(self)
|
|
|
|
self.name = "HY50"
|
|
self.description = "HyCool 50, Potassium formate"
|
|
self.reference = "Hydro2000"
|
|
|
|
self.Tmax = 20 + 273.15
|
|
self.Tmin = -50 + 273.15
|
|
self.TminPsat = self.Tmax
|
|
self.Tbase = 0.00 + 273.15
|
|
self.temperature.data = self.getTrange()
|
|
|
|
self.density.source = self.density.SOURCE_COEFFS
|
|
self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.density.coeffs = np.array([[1359.0],[-0.552300]])
|
|
|
|
self.specific_heat.source = self.specific_heat.SOURCE_COEFFS
|
|
self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.specific_heat.coeffs = np.array([[2.498],[0.0023]])*1e3
|
|
|
|
self.conductivity.source = self.conductivity.SOURCE_COEFFS
|
|
self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL
|
|
self.conductivity.coeffs = np.array([[0.4660],[0.001610]])
|
|
|
|
key = 'Mu'
|
|
def funcMu(T,x):
|
|
T = (T-self.Tbase)
|
|
res = 0.0491*np.exp(581.12/(T+129.05))
|
|
if T > -10: return res + 0.2
|
|
else: return res
|
|
self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID=key,func=funcMu,x_in=self.temperature.data,y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG)
|
|
self.viscosity.source = self.viscosity.SOURCE_EQUATION
|
|
funcMu = None
|
|
|