Files
CoolProp/dev/TTSE/check_TTSE.py
2014-05-28 18:28:30 +02:00

110 lines
3.3 KiB
Python

from CoolProp.Plots import Ph
import CoolProp.CoolProp as CP
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
import matplotlib.ticker
import numpy as np
import random
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_axes((0.08,0.1,0.32,0.83))
ax2 = fig.add_axes((0.50,0.1,0.32,0.83))
Ref = 'R245fa'
T = np.linspace(CP.Props(Ref,'Tmin')+0.1,CP.Props(Ref,'Tcrit')-0.01,300)
pV = CP.Props('P','T',T,'Q',1,Ref)
hL = CP.Props('H','T',T,'Q',0,Ref)
hV = CP.Props('H','T',T,'Q',1,Ref)
HHH1, PPP1, EEE1 = [], [], []
HHH2, PPP2, EEE2 = [], [], []
cNorm = colors.LogNorm(vmin=1e-12, vmax=10)
scalarMap = cmx.ScalarMappable(norm = cNorm, cmap = plt.get_cmap('jet'))
for a_useless_counter in range(40000):
h = random.uniform(100,590)
p = 10**random.uniform(np.log10(100),np.log10(7000))
try:
# Using the EOS
CP.disable_TTSE_LUT(Ref)
rhoEOS = CP.Props('D','P',p,'H',h,Ref)
TEOS = CP.Props('T','P',p,'H',h,Ref)
## cpEOS = CP.Props('C','P',p,'H',h,Ref)
# Using the TTSE method
CP.enable_TTSE_LUT(Ref)
CP.set_TTSE_mode(Ref,"TTSE")
rhoTTSE = CP.Props('D','P',p,'H',h,Ref)
TTTSE = CP.Props('T','P',p,'H',h,Ref)
## cpTTSE = CP.Props('C','P',p,'H',h,Ref)
# Using the Bicubic method
CP.enable_TTSE_LUT(Ref)
CP.set_TTSE_mode(Ref,"BICUBIC")
rhoBICUBIC = CP.Props('D','P',p,'H',h,Ref)
TBICUBIC = CP.Props('T','P',p,'H',h,Ref)
## cpBICUBIC = CP.Props('C','P',p,'H',h,Ref)
## errorTTSE = abs(TTTSE/TEOS-1)*100
## errorBICUBIC = abs(TBICUBIC/TEOS-1)*100
errorTTSE = abs(rhoTTSE/rhoEOS-1)*100
errorBICUBIC = abs(rhoBICUBIC/rhoEOS-1)*100
## errorTTSE = abs(cpTTSE/cpEOS-1)*100
## errorBICUBIC = abs(cpBICUBIC/cpEOS-1)*100
HHH1.append(h)
PPP1.append(p)
EEE1.append(errorTTSE)
HHH2.append(h)
PPP2.append(p)
EEE2.append(errorBICUBIC)
except ValueError as VE:
print VE
pass
SC1 = ax1.scatter(HHH1, PPP1, s = 8, c = EEE1, edgecolors = 'none', cmap = plt.get_cmap('jet'), norm = cNorm)
SC2 = ax2.scatter(HHH2, PPP2, s = 8, c = EEE2, edgecolors = 'none', cmap = plt.get_cmap('jet'), norm = cNorm)
ax1.set_title('Error in Density from TTSE')
ax2.set_title('Error in Density from Bicubic')
for ax in [ax1, ax2]:
ax.set_xlim(150, 550)
ax.set_ylim(100, 7000)
ax.set_yscale('log')
ticks = [100,200,400,600,800,1000,2000, 4000, 6000]
labels = [str(tick) for tick in ticks]
ax.set_yticks(ticks)
ax.set_yticklabels(labels)
ax.get_yaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
ticks = [150,250,350,450,550]
labels = [str(tick) for tick in ticks]
ax.set_xticks(ticks)
ax.set_xticklabels(labels)
ax.tick_params(axis='y',which='minor', left='off')
ax.set_xlabel('Enthalpy [kJ/kg]')
ax.set_ylabel('Pressure [kPa]')
ax.plot(hL,pV,'k',lw = 4)
ax.plot(hV,pV,'k',lw = 4)
cbar_ax = fig.add_axes([0.85, 0.15, 0.06, 0.7])
CB = fig.colorbar(SC1, cax=cbar_ax)
CB.set_label(r'$(\rho/\rho_{EOS}-1)\times 100$ [%]')
#CB.set_label(r'$(T/T_{EOS}-1)\times 100$ [%]')
plt.savefig('TTSE_BICUBIC.png', dpi = 300, transparent = True)
plt.savefig('TTSE_BICUBIC.pdf')
plt.close()