Files
CoolProp/dev/Tickets/1118.py
2019-01-12 20:48:56 -07:00

93 lines
3.3 KiB
Python

from __future__ import print_function, division, absolute_import
from CoolProp import AbstractState
#fluid = "R407C"
#fluid = "R32[0.381109419953993]&R125[0.179558888662016]&R134A[0.439331691383991]"
#fluid = "R32[0.40]&R125[0.15]&R134A[0.45]"
fluids = ["R32", "R125", "R134a"]
moles = [0.381109419953993, 0.179558888662016, 0.439331691383991]
for backend in ["HEOS", "REFPROP"]:
state = AbstractState(backend, '&'.join(fluids))
state.set_mole_fractions(moles)
print(state.get_mole_fractions())
print(state.get_mass_fractions())
try:
print("Normal routines")
print(state.T_critical())
print(state.p_critical())
print(True)
except:
try:
print("Routine for all points")
states = state.all_critical_points()
for crit_state in states:
print(crit_state.T)
print(crit_state.p)
print(crit_state.stable)
except:
print("All failed")
print("\n-----------------\n")
# import numpy as np
# import CoolProp
# from CoolProp.CoolProp import PyCriticalState
# def get_critical_point(state):
# crit_state = PyCriticalState()
# crit_state.T = np.nan
# crit_state.p = np.nan
# crit_state.rhomolar = np.nan
# crit_state.stable = False
# try:
# crit_state.T = state.T_critical()
# crit_state.p = state.p_critical()
# crit_state.rhomolar = state.rhomolar_critical()
# crit_state.stable = True
# except:
# try:
# for crit_state_tmp in state.all_critical_points():
# if crit_state_tmp.stable and (crit_state_tmp.T > crit_state.T or not np.isfinite(crit_state.T)):
# crit_state.T = crit_state_tmp.T
# crit_state.p = crit_state_tmp.p
# crit_state.rhomolar = crit_state_tmp.rhomolar
# crit_state.stable = crit_state_tmp.stable
# except:
# raise ValueError("Could not calculate the critical point data.")
# new_state = AbstractState(state.backend_name(), '&'.join(state.fluid_names()))
# masses = state.get_mass_fractions()
# if len(masses)>1:
# new_state.set_mass_fractions(masses) # Uses mass fraction to work with incompressibles
# if np.isfinite(crit_state.p) and np.isfinite(crit_state.T):
# new_state.specify_phase(CoolProp.iphase_critical_point)
# new_state.update(CoolProp.PT_INPUTS, crit_state.p, crit_state.T)
# #new_state.update(CoolProp.DmolarT_INPUTS, crit_state.rhomolar, crit_state.T)
# return new_state
# raise ValueError("Could not calculate the critical point data.")
from CoolProp.Plots.Common import process_fluid_state, get_critical_point
state = process_fluid_state("HEOS::R32[0.381109419953993]&R125[0.179558888662016]&R134A[0.439331691383991]")
cstate = get_critical_point(state)
print(cstate.T())
import matplotlib.pyplot as plt
from CoolProp.Plots import PropertyPlot
fluid = "R407C"
fluid = "R32[0.381109419953993]&R125[0.179558888662016]&R134A[0.439331691383991]"
#fluid = "R32[0.40]&R125[0.15]&R134A[0.45]"
plot_RP = PropertyPlot("REFPROP::" + fluid, 'PH', unit_system='EUR', tp_limits='ACHP')
plot_RP.calc_isolines()
plot_RP.draw()
plot_CP = PropertyPlot("HEOS::" + fluid, 'PH', unit_system='EUR', tp_limits='ACHP')
plot_CP.calc_isolines()
plot_CP.draw()
plt.show(block=True)