mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-04-01 03:00:13 -04:00
Finalize implementation of Novec 649; closes #731
Also updated state injection script
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
import json, CoolProp, sys
|
||||
|
||||
CP = CoolProp.CoolProp
|
||||
|
||||
def inject(fluid):
|
||||
|
||||
fluid_path = '../fluids/'+fluid+'.json'
|
||||
|
||||
# Open the fluid JSON file
|
||||
fp = open(fluid_path, 'r')
|
||||
j = json.load(fp)
|
||||
fp.close()
|
||||
|
||||
Tanchor = 1.1*CoolProp.CoolProp.PropsSI('Tcrit','D2O')
|
||||
rhoanchor = 0.9*CoolProp.CoolProp.PropsSI('rhomolar_critical','D2O')
|
||||
hanchor_molar = CP.PropsSI('Hmolar','T',Tanchor,'D',rhoanchor,fluid)
|
||||
sanchor_molar = CP.PropsSI('Smolar','T',Tanchor,'D',rhoanchor,fluid)
|
||||
p = CP.PropsSI('P','T',Tanchor,'D',rhoanchor,fluid)
|
||||
|
||||
j['EOS'][0]['STATES']['hs_anchor'] = {
|
||||
"T": Tanchor,
|
||||
"T_units": "K",
|
||||
"hmolar": hanchor_molar,
|
||||
"hmolar_units": "J/mol",
|
||||
"p": p,
|
||||
"p_units": "Pa",
|
||||
"rhomolar": rhoanchor,
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": sanchor_molar,
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
|
||||
sys.path.append('..')
|
||||
from package_json import json_options
|
||||
fp = open(fluid_path, 'w')
|
||||
fp.write(json.dumps(j, **json_options))
|
||||
fp.close()
|
||||
|
||||
print('writing '+ fluid)
|
||||
|
||||
inject('HeavyWater')
|
||||
137
dev/scripts/inject_states.py
Normal file
137
dev/scripts/inject_states.py
Normal file
@@ -0,0 +1,137 @@
|
||||
import sys, os
|
||||
print os.environ['PATH']
|
||||
print sys.argv, sys.executable
|
||||
import json, CoolProp, sys
|
||||
|
||||
CP = CoolProp.CoolProp
|
||||
|
||||
def inject_hsanchor(fluid, i, json_data):
|
||||
|
||||
Tanchor = 1.1*CoolProp.CoolProp.PropsSI('Tcrit',fluid)
|
||||
rhoanchor = 0.9*CoolProp.CoolProp.PropsSI('rhomolar_critical',fluid)
|
||||
hanchor_molar = CP.PropsSI('Hmolar','T',Tanchor,'D',rhoanchor,fluid)
|
||||
sanchor_molar = CP.PropsSI('Smolar','T',Tanchor,'D',rhoanchor,fluid)
|
||||
p = CP.PropsSI('P','T',Tanchor,'D',rhoanchor,fluid)
|
||||
|
||||
json_data['EOS'][i]['STATES']['hs_anchor'] = {
|
||||
"T": Tanchor,
|
||||
"T_units": "K",
|
||||
"hmolar": hanchor_molar,
|
||||
"hmolar_units": "J/mol",
|
||||
"p": p,
|
||||
"p_units": "Pa",
|
||||
"rhomolar": rhoanchor,
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": sanchor_molar,
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
|
||||
def inject_triples(fluid, i, json_data):
|
||||
|
||||
Ttriple = json_data['STATES']['triple_liquid']['T']
|
||||
|
||||
triple_liquid = {
|
||||
"T": Ttriple,
|
||||
"T_units": "K",
|
||||
"hmolar": CP.PropsSI('Hmolar','T',Ttriple,'Q',0,fluid),
|
||||
"hmolar_units": "J/mol",
|
||||
"p": CP.PropsSI('P','T',Ttriple,'Q',0,fluid),
|
||||
"p_units": "Pa",
|
||||
"rhomolar": CP.PropsSI('Dmolar','T',Ttriple,'Q',0,fluid),
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": CP.PropsSI('Smolar','T',Ttriple,'Q',0,fluid),
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
triple_vapor = {
|
||||
"T": Ttriple,
|
||||
"T_units": "K",
|
||||
"hmolar": CP.PropsSI('Hmolar','T',Ttriple,'Q',1,fluid),
|
||||
"hmolar_units": "J/mol",
|
||||
"p": CP.PropsSI('P','T',Ttriple,'Q',1,fluid),
|
||||
"p_units": "Pa",
|
||||
"rhomolar": CP.PropsSI('Dmolar','T',Ttriple,'Q',1,fluid),
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": CP.PropsSI('Smolar','T',Ttriple,'Q',1,fluid),
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
json_data['EOS'][i]['STATES']['sat_min_vapor'] = triple_vapor
|
||||
json_data['EOS'][i]['STATES']['sat_min_vapor'] = triple_liquid
|
||||
json_data['STATES']['triple_liquid'] = triple_liquid
|
||||
json_data['STATES']['triple_vapor'] = triple_vapor
|
||||
|
||||
def inject_critical(fluid, json_data):
|
||||
"""
|
||||
Inject values for pressure, enthalpy, entropy for critical point
|
||||
"""
|
||||
T = json_data['STATES']['critical']['T']
|
||||
D = json_data['STATES']['critical']['rhomolar']
|
||||
|
||||
json_data['STATES']['critical'] = {
|
||||
"T": T,
|
||||
"T_units": "K",
|
||||
"hmolar": CP.PropsSI('Hmolar','T',T,'Dmolar',D,fluid),
|
||||
"hmolar_units": "J/mol",
|
||||
"p": CP.PropsSI('P','T',T,'Dmolar',D,fluid),
|
||||
"p_units": "Pa",
|
||||
"rhomolar": D,
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": CP.PropsSI('Smolar','T',T,'Dmolar',D,fluid),
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
|
||||
def inject_reducing(fluid, i, json_data):
|
||||
"""
|
||||
Inject values for pressure, enthalpy, entropy for reducing point
|
||||
"""
|
||||
T = json_data['EOS'][i]['STATES']['reducing']['T']
|
||||
D = json_data['EOS'][i]['STATES']['reducing']['rhomolar']
|
||||
|
||||
json_data['EOS'][i]['STATES']['reducing'] = {
|
||||
"T": T,
|
||||
"T_units": "K",
|
||||
"hmolar": CP.PropsSI('Hmolar','T',T,'Dmolar',D,fluid),
|
||||
"hmolar_units": "J/mol",
|
||||
"p": CP.PropsSI('P','T',T,'Dmolar',D,fluid),
|
||||
"p_units": "Pa",
|
||||
"rhomolar": D,
|
||||
"rhomolar_units": "mol/m^3",
|
||||
"smolar": CP.PropsSI('Smolar','T',T,'Dmolar',D,fluid),
|
||||
"smolar_units": "J/mol/K"
|
||||
}
|
||||
|
||||
def inject_acentric(fluid, i, json_data):
|
||||
"""
|
||||
Inject values for acentric factor for i-th EOS
|
||||
"""
|
||||
Tc = json_data['STATES']['critical']['T']
|
||||
pc = json_data['STATES']['critical']['p']
|
||||
p = CoolProp.CoolProp.PropsSI('P','T',Tc*0.7,"Q",0,fluid)
|
||||
import math
|
||||
json_data['EOS'][i]['acentric'] = -math.log10(p/pc)-1
|
||||
|
||||
def inject_states(fluid):
|
||||
fluid_path = '../fluids/'+fluid+'.json'
|
||||
|
||||
# Open the fluid JSON file
|
||||
with open(fluid_path, 'r') as fp:
|
||||
json_data = json.load(fp)
|
||||
|
||||
# Inject states
|
||||
inject_hsanchor(fluid, 0, json_data)
|
||||
inject_triples(fluid, 0, json_data)
|
||||
inject_critical(fluid, json_data)
|
||||
inject_reducing(fluid, 0, json_data)
|
||||
inject_acentric(fluid, 0, json_data)
|
||||
|
||||
# Write back to file
|
||||
sys.path.append('..')
|
||||
from package_json import json_options
|
||||
with open(fluid_path, 'w') as fp:
|
||||
fp.write(json.dumps(json_data, **json_options))
|
||||
|
||||
T = 166
|
||||
for o in ['Dmolar','P']:
|
||||
for Q in [0,1]:
|
||||
print CoolProp.CoolProp.saturation_ancillary('Novec649',o,Q,'T',T)
|
||||
print CoolProp.CoolProp.PropsSI(o,"T",T,'Q',Q,'Novec649')
|
||||
inject_states('Novec649')
|
||||
Reference in New Issue
Block a user