Source code for openpnm.models.phase.heat_capacity._funcs
import numpy as np
from openpnm.models.phase.mixtures import mixing_rule
from openpnm.models.phase import _phasedocs
__all__ = [
'gas_mixture_yweighted',
'gas_pure_TRC',
'liquid_pure_rp',
'liquid_mixture_xweighted',
]
[docs]
@_phasedocs
def liquid_pure_rp(
phase,
T='pore.temperature',
Tc='param.critical_temperature',
omega='param.acentric_factor',
Cpg='pore.heat_capacity_gas',
):
r"""
Parameters
----------
%(phase)s
%(T)s
%(Tc)s
%(omega)s
%(Cpg)s
"""
# Rowlinson and Poling
T = phase[T]
Tc = phase[Tc]
omega = phase[omega]
Cpgm = phase[Cpg]
Tr = T/Tc
if np.any(Tr > 1):
raise Exception('Cannot calculate liquid property of fluid above'
+ 'its critical temperature')
R = 8.314462618
lhs = 1.586 + 0.49/(1-Tr) \
+ omega*(4.2775 + 6.3*((1-Tr)**(1/3))/Tr + 0.4355/(1-Tr))
Cp = lhs*R + Cpgm
return Cp
[docs]
@_phasedocs
def gas_pure_TRC(
phase,
T='pore.temperature',
a=[],
):
r"""
Parameters
----------
%(phase)s
%(T)s
a : list
The coefficients to use (see notes for form of equation). If not
given the ``phase['param.CAS']`` is used to lookup the values from
``chemicals.heat_capacity.TRC_gas_data``
Returns
-------
"""
# TRCCp
from chemicals.heat_capacity import TRC_gas_data
T = phase[T]
if len(a) == 0:
c = TRC_gas_data.loc[phase.params['CAS']]
a = list(c[3:11])
R = 8.314462618
y = np.zeros_like(T)
temp = (T - a[7])/(T + a[6])
mask = T > a[7]
y[mask] = temp[mask]
Cp = R*(a[0] + (a[1]/(T**2))*np.exp(-a[1]/T) + a[3]*(y**2)
+ (a[4] - a[5]/((T - a[7])**2))*(y**8))
return Cp
[docs]
@_phasedocs
def gas_mixture_yweighted(
phase,
Cps='pore.heat_capacity.*',
):
r"""
Uses a linearly mole fraction weighted average
Parameters
----------
%(phase)s
%(Cps)s
Returns
-------
"""
Cpmix = mixing_rule(phase=phase, prop=Cps, mode='linear')
return Cpmix
[docs]
@_phasedocs
def liquid_mixture_xweighted(
phase,
Cps='pore.heat_capacity.*',
):
r"""
Uses a linearly mole fraction weighted average
Parameters
----------
%(phase)s
%(Cps)s
Returns
-------
"""
Cpmix = mixing_rule(phase=phase, prop=Cps, mode='linear')
return Cpmix