mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-09 14:08:08 -05:00
195 lines
6.3 KiB
Python
195 lines
6.3 KiB
Python
from __future__ import print_function, division
|
|
import os.path
|
|
import CoolProp
|
|
import CoolProp.CoolProp
|
|
import subprocess
|
|
import sys
|
|
|
|
import numpy as np
|
|
|
|
import matplotlib
|
|
matplotlib.use('Agg') # Force mpl to use a non-GUI backend
|
|
import matplotlib.pyplot as plt
|
|
|
|
web_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
|
#plots_path = os.path.join(web_dir,'fluid_properties','incompressibles_consistency')
|
|
plots_path = os.path.join(web_dir, 'scripts', 'incompressibles_consistency')
|
|
|
|
checked = ["TVP1869", "T66"]
|
|
|
|
N = 50
|
|
p = 100e5
|
|
Pr = np.empty(N)
|
|
la = np.empty(N)
|
|
mu = np.empty(N)
|
|
cp = np.empty(N)
|
|
|
|
fig = plt.figure(tight_layout=True)
|
|
Pr_axis = fig.add_subplot(221)
|
|
la_axis = fig.add_subplot(222)
|
|
mu_axis = fig.add_subplot(223)
|
|
cp_axis = fig.add_subplot(224)
|
|
|
|
#Pr_axis = plt.subplot2grid((3,2), (0,0), rowspan=3)
|
|
#la_axis = plt.subplot2grid((3,2), (0,1))
|
|
#mu_axis = plt.subplot2grid((3,2), (1,1))
|
|
#cp_axis = plt.subplot2grid((3,2), (2,1))
|
|
|
|
Pr_axis.set_xlabel("Temperature $T$ / deg C")
|
|
Pr_axis.set_ylabel("Prandtl Number $Pr$")
|
|
# Pr_axis.set_ylim([0,10000])
|
|
# Pr_axis.set_yscale("log")
|
|
la_axis.set_xlabel("Temperature $T$ / deg C")
|
|
la_axis.set_ylabel("Thermal Conductivity $\lambda$ / W/m/K")
|
|
# la_axis.set_ylim([0,1])
|
|
mu_axis.set_xlabel("Temperature $T$ / deg C")
|
|
mu_axis.set_ylabel("Dynamic Viscosity $\mu$ / Pa s")
|
|
# mu_axis.set_ylim([0,1])
|
|
# mu_axis.set_yscale("log")
|
|
cp_axis.set_xlabel("Temperature $T$ / deg C")
|
|
cp_axis.set_ylabel("Isobaric Heat Capacity $c_p$ / J/kg/K")
|
|
# cp_axis.set_ylim([0,5000])
|
|
|
|
for fluid in CoolProp.__incompressibles_pure__ + CoolProp.__incompressibles_solution__:
|
|
# for fluid in CoolProp.__incompressibles_solution__:
|
|
# for fluid in CoolProp.__incompressibles_pure__:
|
|
skip_fluid = False
|
|
for ignored in ["example", "iceea", "icena", "icepg"]:
|
|
if ignored in fluid.lower():
|
|
skip_fluid = True
|
|
if skip_fluid:
|
|
continue
|
|
state = CoolProp.AbstractState("INCOMP", fluid)
|
|
error = ""
|
|
for frac in [0.5, 0.2, 0.8, 0.1, 0.9]:
|
|
error = ""
|
|
try:
|
|
state.set_mass_fractions([frac])
|
|
state.update(CoolProp.PT_INPUTS, p, state.Tmax())
|
|
break
|
|
except Exception as e:
|
|
error = e.message
|
|
try:
|
|
state.set_volu_fractions([frac])
|
|
state.update(CoolProp.PT_INPUTS, p, state.Tmax())
|
|
break
|
|
except Exception as e:
|
|
error = e.message
|
|
try:
|
|
state.set_mole_fractions([frac])
|
|
state.update(CoolProp.PT_INPUTS, p, state.Tmax())
|
|
break
|
|
except Exception as e:
|
|
error = e.message
|
|
pass
|
|
|
|
Tmin = 0.0
|
|
try:
|
|
Tmin = state.keyed_output(CoolProp.iT_freeze)
|
|
except:
|
|
pass
|
|
Tmin = max(state.Tmin(), Tmin) + 1
|
|
Tmax = state.Tmax()
|
|
T = np.linspace(Tmin, Tmax, N)
|
|
for i, Ti in enumerate(T):
|
|
state.update(CoolProp.PT_INPUTS, p, Ti)
|
|
Pr[i] = state.Prandtl()
|
|
la[i] = state.conductivity()
|
|
mu[i] = state.viscosity()
|
|
cp[i] = state.cpmass()
|
|
#print(np.min(Pr), np.max(Pr))
|
|
Pr_axis.plot(T - 273.15, Pr)
|
|
la_axis.plot(T - 273.15, la)
|
|
mu_axis.plot(T - 273.15, mu)
|
|
cp_axis.plot(T - 273.15, cp)
|
|
|
|
if np.max(Pr) > 10000:
|
|
if fluid not in checked:
|
|
print("Very high Prandtl number for {0:s} of {1:f}".format(fluid, np.max(Pr)))
|
|
if np.min(Pr) < 0.0:
|
|
if fluid not in checked:
|
|
print("Very low Prandtl number for {0:s} of {1:f}".format(fluid, np.min(Pr)))
|
|
if np.max(la) > 0.8:
|
|
if fluid not in checked:
|
|
print("Very high thermal conductivity for {0:s} of {1:f}".format(fluid, np.max(la)))
|
|
if np.min(la) < 0.3:
|
|
if fluid not in checked:
|
|
print("Very low thermal conductivity for {0:s} of {1:f}".format(fluid, np.min(la)))
|
|
if np.max(mu) > 0.2:
|
|
if fluid not in checked:
|
|
print("Very high viscosity for {0:s} of {1:f}".format(fluid, np.max(mu)))
|
|
if np.min(mu) < 1e-8:
|
|
if fluid not in checked:
|
|
print("Very low viscosity for {0:s} of {1:f}".format(fluid, np.min(mu)))
|
|
if np.max(cp) > 5000:
|
|
if fluid not in checked:
|
|
print("Very high heat capacity for {0:s} of {1:f}".format(fluid, np.max(cp)))
|
|
if np.min(cp) < 1000:
|
|
if fluid not in checked:
|
|
print("Very low heat capacity for {0:s} of {1:f}".format(fluid, np.min(cp)))
|
|
|
|
# for fluid in CoolProp.__fluids__:
|
|
for fluid in ["Water"]:
|
|
state = CoolProp.AbstractState("HEOS", fluid)
|
|
Tmin = max(state.Tmin(), Pr_axis.get_xlim()[0] + 273.15)
|
|
Tmax = min(state.Tmax(), Pr_axis.get_xlim()[1] + 273.15)
|
|
|
|
T = np.linspace(Tmin, Tmax, N)
|
|
for i, Ti in enumerate(T):
|
|
try:
|
|
state.update(CoolProp.QT_INPUTS, 0, Ti)
|
|
p = state.p() + 1e5
|
|
except:
|
|
p = state.p_critical() + 1e5
|
|
Pr[i] = np.nan
|
|
la[i] = np.nan
|
|
mu[i] = np.nan
|
|
cp[i] = np.nan
|
|
try:
|
|
state.update(CoolProp.PT_INPUTS, p, Ti)
|
|
try:
|
|
Pr[i] = state.Prandtl()
|
|
except Exception as e:
|
|
print(e.message)
|
|
try:
|
|
la[i] = state.conductivity()
|
|
except Exception as e:
|
|
print(e.message)
|
|
try:
|
|
mu[i] = state.viscosity()
|
|
except Exception as e:
|
|
print(e.message)
|
|
try:
|
|
cp[i] = state.cpmass()
|
|
except Exception as e:
|
|
print(e.message)
|
|
except:
|
|
pass
|
|
#print(np.min(Pr), np.max(Pr))
|
|
if np.sum(np.isnan(Pr)) == 0:
|
|
Pr_axis.plot(T - 273.15, Pr, alpha=0.5, ls=":")
|
|
else:
|
|
#print("Error: Prandtl undefined for "+fluid)
|
|
pass
|
|
if np.sum(np.isnan(la)) == 0:
|
|
la_axis.plot(T - 273.15, la, alpha=0.5, ls=":")
|
|
else:
|
|
#print("Error: Conductivuty undefined for "+fluid)
|
|
pass
|
|
if np.sum(np.isnan(mu)) == 0:
|
|
mu_axis.plot(T - 273.15, mu, alpha=0.5, ls=":")
|
|
else:
|
|
#print("Error: Viscosity undefined for "+fluid)
|
|
pass
|
|
if np.sum(np.isnan(cp)) == 0:
|
|
cp_axis.plot(T - 273.15, cp, alpha=0.5, ls=":")
|
|
else:
|
|
#print("Error: Heat capacity undefined for "+fluid)
|
|
pass
|
|
|
|
|
|
fig.tight_layout()
|
|
fig.savefig(plots_path + '.pdf')
|
|
# fig.savefig(plots_path+'.png')
|
|
sys.exit(0)
|