mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-20 19:37:58 -05:00
221 lines
8.6 KiB
Python
221 lines
8.6 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 .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: mPas = 0.07190 * np.exp(524.75 / (T + 142.05))
|
|
else: mPas = T * (0.0005524 * T - 0.06281) + 2.8536
|
|
return mPas / 1e3
|
|
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: mPas = 0.11100 * np.exp(408.17 / (T + 123.15))
|
|
else: mPas = T * (0.000295 * T - 0.0441) + 2.6836
|
|
return mPas / 1e3
|
|
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)
|
|
mPas = 0.07830 * np.exp(498.13 / (T + 130.25))
|
|
return mPas / 1e3
|
|
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)
|
|
mPas = 0.08990 * np.exp(479.09 / (T + 126.55))
|
|
return mPas / 1e3
|
|
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: mPas = res + 0.2
|
|
else: mPas = res
|
|
return mPas / 1e3
|
|
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
|