Skip to content

Commit 83c8b0e

Browse files
12Chaosevyharris
authored andcommitted
write data as RMG object instead of floats to keep the units consistent
1 parent 34ea89a commit 83c8b0e

File tree

6 files changed

+20
-16
lines changed

6 files changed

+20
-16
lines changed

rmgpy/rmg/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,8 +1233,8 @@ def execute(self, initialize=True, **kwargs):
12331233
for sp in self.reaction_model.core.species:
12341234
if sp.is_isomorphic(mol, strict=False):
12351235
parameters['units'] = {'energy':'J', 'quantity':'mol'}
1236-
parameters['enthalpy-coefficients'] = [float(value) for value in parameters['enthalpy-coefficients']]
1237-
parameters['entropy-coefficients'] = [float(value) for value in parameters['entropy-coefficients']]
1236+
parameters['enthalpy-coefficients'] = [value.value_si for value in parameters['enthalpy-coefficients']]
1237+
parameters['entropy-coefficients'] = [value.value_si for value in parameters['entropy-coefficients']]
12381238
try:
12391239
content["species"][gas.n_species+surf.species_index(sp.to_chemkin())]['coverage-dependencies'][sp.to_chemkin()] = parameters
12401240
except KeyError:

rmgpy/solver/surface.pyx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,9 @@ cdef class SurfaceReactor(ReactionSystem):
215215
for species in self.species_index.keys():
216216
if species.is_isomorphic(molecule, strict=False):
217217
species_index = self.species_index[species]
218-
thermo_polynomials = np.concatenate((parameters['enthalpy-coefficients'], parameters['entropy-coefficients']), axis=0)
218+
enthalpy_coeff = np.array([p.value_si for p in parameters['enthalpy-coefficients']])
219+
entropy_coeff = np.array([p.value_si for p in parameters['entropy-coefficients']])
220+
thermo_polynomials = np.concatenate((enthalpy_coeff, entropy_coeff), axis=0)
219221
self.thermo_coeff_matrix[sp_index, species_index] = [x for x in thermo_polynomials]
220222
# create a stoichiometry matrix for reaction enthalpy and entropy correction
221223
# due to thermodynamic coverage dependence

rmgpy/thermo/nasa.pyx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ from libc.math cimport log
3535

3636
cimport rmgpy.constants as constants
3737
from rmgpy.util import np_list
38+
import rmgpy.quantity as quantity
3839

3940
################################################################################
4041

@@ -314,8 +315,8 @@ cdef class NASA(HeatCapacityModel):
314315
for species, parameters in value.items():
315316
# just the polynomial model for now
316317
processed_parameters = {'model': parameters['model'],
317-
'enthalpy-coefficients': np_list([p for p in parameters['enthalpy-coefficients']]),
318-
'entropy-coefficients': np_list([p for p in parameters['entropy-coefficients']]),
318+
'enthalpy-coefficients': np_list([quantity.Enthalpy(p) for p in parameters['enthalpy-coefficients']]),
319+
'entropy-coefficients': np_list([quantity.Entropy(p) for p in parameters['entropy-coefficients']]),
319320
}
320321
self._thermo_coverage_dependence[species] = processed_parameters
321322

rmgpy/thermo/thermodata.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ cdef class ThermoData(HeatCapacityModel):
129129
for species, parameters in value.items():
130130
# just the polynomial model for now
131131
processed_parameters = {'model': parameters['model'],
132-
'enthalpy-coefficients': np_list([p for p in parameters['enthalpy-coefficients']]),
133-
'entropy-coefficients': np_list([p for p in parameters['entropy-coefficients']]),
132+
'enthalpy-coefficients': np_list([quantity.Enthalpy(p) for p in parameters['enthalpy-coefficients']]),
133+
'entropy-coefficients': np_list([quantity.Entropy(p) for p in parameters['entropy-coefficients']]),
134134
}
135135
self._thermo_coverage_dependence[species] = processed_parameters
136136

rmgpy/thermo/wilhoit.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ cdef class Wilhoit(HeatCapacityModel):
151151
for species, parameters in value.items():
152152
# just the polynomial model for now
153153
processed_parameters = {'model': parameters['model'],
154-
'enthalpy-coefficients': np_list([p for p in parameters['enthalpy-coefficients']]),
155-
'entropy-coefficients': np_list([p for p in parameters['entropy-coefficients']]),
154+
'enthalpy-coefficients': np_list([quantity.Enthalpy(p) for p in parameters['enthalpy-coefficients']]),
155+
'entropy-coefficients': np_list([quantity.Entropy(p) for p in parameters['entropy-coefficients']]),
156156
}
157157
self._thermo_coverage_dependence[species] = processed_parameters
158158

test/rmgpy/thermo/nasaTest.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
This script contains unit tests of the :mod:`rmgpy.thermo.nasa` module.
3232
"""
3333

34-
import os.path
35-
34+
import os.path, ast
3635

3736
import numpy as np
3837

@@ -69,7 +68,7 @@ def setup_class(self):
6968
self.Tmax = 3000.0
7069
self.Tint = 650.73
7170
self.E0 = -782292.0 # J/mol.
72-
self.thermo_coverage_dependence = {'1 O u0 p2 c0 {2,D} \n 2 X u0 p0 c0 {1,D}':{'model':'polynomial', 'enthalpy-coefficients':[1,2,3], "entropy-coefficients":[1,2,3]}}
71+
self.thermo_coverage_dependence = {'1 O u0 p2 c0 {2,D} \n 2 X u0 p0 c0 {1,D}':{'model':'polynomial', 'enthalpy-coefficients':[(1,'J/mol'),(2,'J/mol'),(3,'J/mol')], "entropy-coefficients":[(1,'J/(mol*K)'),(2,'J/(mol*K)'),(3,'J/(mol*K)')]}}
7372
self.comment = "C2H6"
7473
self.nasa = NASA(
7574
polynomials=[
@@ -143,7 +142,7 @@ def test_thermo_coverage_dependence(self):
143142
"""
144143
Test that the thermo_coverage_dependence property was properly set.
145144
"""
146-
assert repr(self.nasa.thermo_coverage_dependence) == repr(self.thermo_coverage_dependence)
145+
assert ast.literal_eval(repr(self.nasa.thermo_coverage_dependence)) == ast.literal_eval(repr(self.thermo_coverage_dependence))
147146

148147
def test_is_temperature_valid(self):
149148
"""
@@ -271,7 +270,7 @@ def test_pickle(self):
271270
assert self.nasa.Tmax.units == nasa.Tmax.units
272271
assert self.nasa.E0.value == nasa.E0.value
273272
assert self.nasa.E0.units == nasa.E0.units
274-
assert repr(self.nasa.thermo_coverage_dependence) == repr(nasa.thermo_coverage_dependence)
273+
assert ast.literal_eval(repr(self.nasa.thermo_coverage_dependence)) == ast.literal_eval(repr(nasa.thermo_coverage_dependence))
275274
assert self.nasa.comment == nasa.comment
276275

277276
def test_repr(self):
@@ -305,7 +304,7 @@ def test_repr(self):
305304
assert self.nasa.Tmax.units == nasa.Tmax.units
306305
assert self.nasa.E0.value == nasa.E0.value
307306
assert self.nasa.E0.units == nasa.E0.units
308-
assert repr(self.nasa.thermo_coverage_dependence) == repr(nasa.thermo_coverage_dependence)
307+
assert ast.literal_eval(repr(self.nasa.thermo_coverage_dependence)) == ast.literal_eval(repr(nasa.thermo_coverage_dependence))
309308
assert self.nasa.comment == nasa.comment
310309

311310
def test_to_cantera(self):
@@ -379,7 +378,9 @@ def test_nasa_as_dict_full(self):
379378
assert nasa_dict["thermo_coverage_dependence"].keys() == self.thermo_coverage_dependence.keys()
380379
sp_name = list(self.thermo_coverage_dependence.keys())[0]
381380
assert nasa_dict['thermo_coverage_dependence'][sp_name]['model'] == self.thermo_coverage_dependence[sp_name]['model']
382-
assert nasa_dict['thermo_coverage_dependence'][sp_name]['enthalpy-coefficients']['object'] == self.thermo_coverage_dependence[sp_name]['enthalpy-coefficients']
381+
enthalpy_list = nasa_dict['thermo_coverage_dependence'][sp_name]['enthalpy-coefficients']['object']
382+
# return [(str(coeff.value), str(coeff.units))for coeff in enthalpy_list], self.thermo_coverage_dependence[sp_name]['enthalpy-coefficients']
383+
assert [(int(coeff.value), str(coeff.units))for coeff in enthalpy_list] == self.thermo_coverage_dependence[sp_name]['enthalpy-coefficients']
383384
assert nasa_dict['thermo_coverage_dependence'][sp_name]['entropy-coefficients']['object'] == self.thermo_coverage_dependence[sp_name]['entropy-coefficients']
384385
assert nasa_dict["comment"] == self.comment
385386
assert tuple(nasa_dict["polynomials"]["polynomial1"]["coeffs"]["object"]) == tuple(self.coeffs_low)

0 commit comments

Comments
 (0)