mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-02-09 13:25:12 -05:00
93 lines
4.5 KiB
Python
93 lines
4.5 KiB
Python
from __future__ import division, print_function
|
|
import CoolProp
|
|
from CoolProp import unit_systems_constants
|
|
from CoolProp.CoolProp import Props, get_REFPROPname, IsFluidType, set_standard_unit_system
|
|
import CoolProp.CoolProp as CP
|
|
import numpy as np
|
|
|
|
modes = []
|
|
modes.append('pure')
|
|
#modes.append('pseudo-pure')
|
|
|
|
# Check if REFPROP is supported, the Props call should work without throwing exception if it is supported
|
|
## try:
|
|
## Props('D','T',300,'Q',1,'REFPROP-Propane')
|
|
## modes.append('REFPROP')
|
|
## except ValueError:
|
|
## pass
|
|
|
|
twophase_inputs = [('T','D'),('T','Q'),('P','Q'),('P','H'),('P','S'),('P','D'),('T','S'),('H','S')] #
|
|
singlephase_inputs = [('T','D'),('T','P'),('P','H'),('P','S'),('P','D'),('H','S'),('T','S')]
|
|
singlephase_outputs = ['T','P','H','S','A','O','C','G','V','L','C0','U']
|
|
|
|
## def test_subcrit_singlephase_consistency():
|
|
## for Fluid in sorted(CoolProp.__fluids__):
|
|
## T = (Props(Fluid,'Tmin')+Props(Fluid,'Tcrit'))/2.0
|
|
## for mode in modes:
|
|
## rhoL = Props('D','T',T,'Q',0,Fluid)
|
|
## rhoV = Props('D','T',T,'Q',1,Fluid)
|
|
## for rho in [rhoL+0.1, rhoV*0.9]:
|
|
## for inputs in singlephase_inputs:
|
|
## for unit_system in ['SI','kSI']:
|
|
## yield check_consistency,Fluid,mode,unit_system,T,rho,inputs
|
|
|
|
def test_subcrit_twophase_consistency():
|
|
|
|
for Fluid in reversed(sorted(CoolProp.__fluids__)):
|
|
Tmin = Props(Fluid,'Tmin')
|
|
Tcrit = Props(Fluid,'Tcrit')
|
|
for T in [Tmin + 1, (Tmin+Tcrit)/2.0, 0.95*Tcrit]:
|
|
for mode in modes:
|
|
rhoL = Props('D','T',T,'Q',0,Fluid)
|
|
rhoV = Props('D','T',T,'Q',1,Fluid)
|
|
for Q in [0.0, 0.5, 1.0]:
|
|
rho = 1/((1-Q)/rhoL+Q/rhoV)
|
|
for inputs in twophase_inputs:
|
|
for unit_system in ['kSI','SI']:
|
|
yield check_consistency,Fluid,mode,unit_system, T,rho,inputs
|
|
|
|
def check_consistency(Fluid,mode,unit_system,T,rho,inputs):
|
|
|
|
if unit_system == 'SI':
|
|
set_standard_unit_system(unit_systems_constants.UNIT_SYSTEM_SI)
|
|
elif unit_system == 'kSI':
|
|
set_standard_unit_system(unit_systems_constants.UNIT_SYSTEM_KSI)
|
|
else:
|
|
raise ValueError('invalid unit_system:'+str(unit_system))
|
|
|
|
if get_REFPROPname(Fluid) == 'N/A':
|
|
return
|
|
|
|
if mode == 'REFPROP':
|
|
Fluid = 'REFPROP-' + get_REFPROPname(Fluid)
|
|
|
|
if mode == 'pure' and not IsFluidType(Fluid,'PureFluid'):
|
|
return
|
|
|
|
# Evaluate the inputs; if inputs is ('T','P'), calculate the temperature and the pressure
|
|
Input1 = Props(inputs[0],'T',T,'D',rho,Fluid)
|
|
Input2 = Props(inputs[1],'T',T,'D',rho,Fluid)
|
|
|
|
# Evaluate using the inputs given --> back to T,rho
|
|
TEOS = Props('T',inputs[0],Input1,inputs[1],Input2,Fluid)
|
|
DEOS = Props('D',inputs[0],Input1,inputs[1],Input2,Fluid)
|
|
|
|
print('T',inputs[0],Input1,inputs[1],Input2,Fluid)
|
|
# Check they are consistent
|
|
if abs(TEOS -T) > 1e-1 or abs(DEOS/rho-1) > 0.05:
|
|
raise AssertionError("{T:g} K {D:g} kg/m^3 inputs: \"D\",'{ins1:s}',{in1:.12g},'{ins2:s}',{in2:.12g},\"{fluid:s}\" || T: {TEOS:g} D: {DEOS:g}".format(T = T,
|
|
D = rho,
|
|
TEOS = TEOS,
|
|
DEOS = DEOS,
|
|
inputs = str(inputs),
|
|
in1 = Input1,
|
|
in2 = Input2,
|
|
ins1 = inputs[0],
|
|
ins2 = inputs[1],
|
|
fluid = Fluid)
|
|
)
|
|
|
|
if __name__=='__main__':
|
|
import nose
|
|
nose.runmodule()
|