https://github.com/CoolProp/CoolProp
Tip revision: 84897ce7a110a70ba2229e7a1f5d17ea03efd068 authored by Jorrit Wronski on 16 December 2022, 12:59:36 UTC
use no version number at all to fix the source build
use no version number at all to fix the source build
Tip revision: 84897ce
870.py
import numpy as np
import CoolProp
import matplotlib.pyplot as plt
AS = CoolProp.AbstractState('HEOS', 'Water')
steps = 100
# Saturated liquid
AS.update(CoolProp.PQ_INPUTS, 101325, 0)
Ts = AS.T()
h_fg = AS.saturated_vapor_keyed_output(CoolProp.iHmass) - AS.saturated_liquid_keyed_output(CoolProp.iHmass)
cl = AS.cpmass()
# Subcooled liquid
x, y = [], []
for T in np.linspace(Ts - 30, Ts - 0.1, steps):
AS.update(CoolProp.PT_INPUTS, 101325, T)
x.append(-cl * (Ts - T) / h_fg)
y.append(AS.first_partial_deriv(CoolProp.iDmass, CoolProp.iHmass, CoolProp.iP))
plt.plot(x, y, label='Subcooled', color='gray')
# Two-phase derivatives (splined)
x, y1 = [], []
for Q in np.linspace(0, 0.3, steps):
AS.update(CoolProp.PQ_INPUTS, 101325, Q)
x.append(AS.Q())
y1.append(AS.first_two_phase_deriv_splined(CoolProp.iDmass, CoolProp.iHmass, CoolProp.iP, 0.3))
plt.plot(x, y1, label='Two-phase (splined)')
# Two-phase derivatives (normal)
x, y1 = [], []
for Q in np.linspace(0.0, 0.6, steps):
AS.update(CoolProp.PQ_INPUTS, 101325, Q)
x.append(AS.Q())
y1.append(AS.first_two_phase_deriv(CoolProp.iDmass, CoolProp.iHmass, CoolProp.iP))
plt.plot(x, y1, label='Two-phase (normal)')
AS = CoolProp.AbstractState('TTSE&HEOS', 'Water')
# Two-phase derivatives (splined, tabular)
x, y1 = [], []
for Q in np.linspace(0, 0.3, steps):
AS.update(CoolProp.PQ_INPUTS, 101325, Q)
x.append(AS.Q())
try:
y1.append(AS.first_two_phase_deriv_splined(CoolProp.iDmass, CoolProp.iHmass, CoolProp.iP, 0.3))
except Exception as e:
print(e)
y1.append(np.NAN)
break
plt.plot(x, y1, label='Two-phase (splined, tabular)', ls='--', lw=3)
# Two-phase derivatives (normal, tabular)
x, y1 = [], []
for Q in np.linspace(0.0, 0.6, steps):
AS.update(CoolProp.PQ_INPUTS, 101325, Q)
x.append(AS.Q())
try:
y1.append(AS.first_two_phase_deriv(CoolProp.iDmass, CoolProp.iHmass, CoolProp.iP))
except Exception as e:
print(e)
y1.append(np.NAN)
break
plt.plot(x, y1, label='Two-phase (normal, tabular)', ls='--', lw=3)
plt.title(r'$d\rho/dh|p$')
plt.xlabel('vapor quality (-)')
plt.ylabel(r'$d\rho/dh|p$')
plt.ylim(-0.005, 0.005)
plt.legend(loc='best')
plt.savefig('870_test_two_phase_tabular.png')
plt.show()