mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-02-08 21:05:14 -05:00
148 lines
5.0 KiB
Python
148 lines
5.0 KiB
Python
from __future__ import division, print_function
|
|
import CoolProp.CoolProp as CP
|
|
import CoolProp.unit_systems_constants
|
|
from CoolProp import param_constants
|
|
from CoolProp.State import State
|
|
|
|
def first_derivative(S, func, iVal, Val, iConstant, Constant, epsilon = 1e-3):
|
|
|
|
S.update({iVal:Val,iConstant:Constant})
|
|
val1 = func()
|
|
|
|
S.update({iVal:Val+epsilon,iConstant:Constant})
|
|
val2 = func()
|
|
|
|
S.update({iVal:Val,iConstant:Constant})
|
|
|
|
return (val2-val1)/epsilon
|
|
|
|
def second_derivative(S, func, iVal, Val, iConstant, Constant, epsilon = 2):
|
|
|
|
S.update({iVal:Val-epsilon,iConstant:Constant})
|
|
val1 = func()
|
|
|
|
S.update({iVal:Val,iConstant:Constant})
|
|
val2 = func()
|
|
|
|
S.update({iVal:Val+epsilon,iConstant:Constant})
|
|
val3 = func()
|
|
|
|
S.update({iVal:Val,iConstant:Constant})
|
|
|
|
print(val1, val2, val3, S.T, S.p, S.rho, (val1-2*val2+val3))
|
|
|
|
return (val1-2*val2+val3)/(epsilon*epsilon)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def teest_1phase_first_derivatives():
|
|
|
|
for US in [CoolProp.UNIT_SYSTEM_SI, CoolProp.UNIT_SYSTEM_KSI]:
|
|
CP.set_standard_unit_system(US)
|
|
|
|
S = State('R134a',dict(T=300,D=1))
|
|
|
|
l = [(S.get_rho,'T',S.T,'P',S.p,S.PFC.drhodT_constp),
|
|
(S.get_rho,'P',S.p,'T',S.T,S.PFC.drhodp_constT),
|
|
(S.get_p,'D',S.rho,'T',S.T,S.PFC.dpdrho_constT),
|
|
#(S.get_p,'D',S.rho,'H',S.h,S.PFC.dpdrho_consth), #(these inputs not supported)
|
|
(S.get_p,'T',S.T,'D',S.rho,S.PFC.dpdT_constrho),
|
|
#(S.get_p,'T',S.T,'H',S.h,S.PFC.dpdT_consth), #(these inputs not supported)
|
|
(S.get_h,'D',S.rho,'T',S.T,S.PFC.dhdrho_constT),
|
|
(S.get_h,'D',S.rho,'P',S.p,S.PFC.dhdrho_constp),
|
|
(S.get_h,'T',S.T,'D',S.rho,S.PFC.dhdT_constrho),
|
|
(S.get_h,'T',S.T,'P',S.p,S.PFC.dhdT_constp),
|
|
(S.get_h,'P',S.p,'T',S.T,S.PFC.dhdp_constT),
|
|
(S.get_s,'D',S.rho,'T',S.T,S.PFC.dsdrho_constT),
|
|
(S.get_s,'T',S.T,'D',S.rho,S.PFC.dsdT_constrho),
|
|
(S.get_s,'D',S.rho,'P',S.p,S.PFC.dsdrho_constp),
|
|
(S.get_s,'T',S.T,'P',S.p,S.PFC.dsdT_constp),
|
|
(S.get_s,'P',S.p,'T',S.T,S.PFC.dsdp_constT),
|
|
|
|
]
|
|
for args in l:
|
|
yield (check_1phase_first_derivatives,)+(S,)+args
|
|
|
|
def check_1phase_first_derivatives(S, func, iVal, Val, iConstant, Constant, deriv_func):
|
|
|
|
Deriv_val = first_derivative(S, func, iVal, Val, iConstant, Constant)
|
|
EOS_val = deriv_func()
|
|
if abs(EOS_val/Deriv_val-1) > 1e-2:
|
|
raise ValueError('Finite Diff: ' + str(Deriv_val) + ' EOS: ' +str(EOS_val))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def teest_sat_first_derivatives():
|
|
|
|
for US in [CoolProp.UNIT_SYSTEM_SI, CoolProp.UNIT_SYSTEM_KSI]:
|
|
CP.set_standard_unit_system(US)
|
|
|
|
S = State('R134a',dict(T=300,Q=1))
|
|
|
|
l = [(S.get_T,'P',S.p,'Q',0,S.PFC.dTdp_along_sat),
|
|
(S.get_rho,'P',S.p,'Q',0,S.PFC.drhodp_along_sat_liquid),
|
|
(S.get_rho,'P',S.p,'Q',1,S.PFC.drhodp_along_sat_vapor),
|
|
(S.get_rho,'T',S.T,'Q',0,S.PFC.drhodT_along_sat_liquid),
|
|
(S.get_rho,'T',S.T,'Q',1,S.PFC.drhodT_along_sat_vapor),
|
|
(S.get_h,'P',S.p,'Q',0,S.PFC.dhdp_along_sat_liquid),
|
|
(S.get_h,'P',S.p,'Q',1,S.PFC.dhdp_along_sat_vapor),
|
|
(S.get_s,'P',S.p,'Q',0,S.PFC.dsdp_along_sat_liquid),
|
|
(S.get_s,'P',S.p,'Q',1,S.PFC.dsdp_along_sat_vapor),
|
|
]
|
|
for args in l:
|
|
yield (check_sat_first_derivatives,)+(S,)+args
|
|
|
|
def check_sat_first_derivatives(S, func, iVal, Val, iConstant, Constant, deriv_func):
|
|
|
|
Deriv_val = first_derivative(S, func, iVal, Val, iConstant, Constant)
|
|
EOS_val = deriv_func()
|
|
if abs(EOS_val/Deriv_val-1) > 1e-2:
|
|
raise ValueError('Finite Diff: ' + str(Deriv_val) + ' EOS: ' +str(EOS_val))
|
|
|
|
|
|
|
|
|
|
def teest_sat_second_derivatives():
|
|
for US in [CoolProp.UNIT_SYSTEM_SI, CoolProp.UNIT_SYSTEM_KSI]:
|
|
CP.set_standard_unit_system(US)
|
|
|
|
S = State('R134a',dict(T=290,Q=1))
|
|
|
|
l = [(S.get_T,'P',S.p,'Q',0,S.PFC.d2Tdp2_along_sat),
|
|
(S.get_rho,'P',S.p,'Q',0,S.PFC.d2rhodp2_along_sat_liquid),
|
|
(S.get_rho,'P',S.p,'Q',1,S.PFC.d2rhodp2_along_sat_vapor),
|
|
(S.get_h,'P',S.p,'Q',0,S.PFC.d2hdp2_along_sat_liquid),
|
|
(S.get_h,'P',S.p,'Q',1,S.PFC.d2hdp2_along_sat_vapor),
|
|
(S.get_s,'P',S.p,'Q',0,S.PFC.d2sdp2_along_sat_liquid),
|
|
(S.get_s,'P',S.p,'Q',1,S.PFC.d2sdp2_along_sat_vapor),
|
|
]
|
|
for args in l:
|
|
yield (check_sat_second_derivatives,)+(S,)+args
|
|
|
|
def check_sat_second_derivatives(S, func, iVal, Val, iConstant, Constant, deriv_func):
|
|
|
|
Deriv_val = second_derivative(S, func, iVal, Val, iConstant, Constant)
|
|
EOS_val = deriv_func()
|
|
if abs(EOS_val/Deriv_val-1) > 1e-2:
|
|
raise ValueError('Finite Diff: ' + str(Deriv_val) + ' EOS: ' +str(EOS_val))
|
|
|
|
if __name__=='__main__':
|
|
import nose
|
|
nose.runmodule() |