|
37 | 37 | import numpy as np |
38 | 38 |
|
39 | 39 | from rmgpy import settings |
| 40 | +import rmgpy.data.kinetics.family |
40 | 41 | from rmgpy.data.kinetics.database import KineticsDatabase |
41 | 42 | from rmgpy.data.kinetics.family import TemplateReaction |
42 | 43 | from rmgpy.data.rmg import RMGDatabase |
43 | 44 | from rmgpy.data.thermo import ThermoDatabase |
44 | 45 | from rmgpy.molecule import Molecule |
45 | 46 | from rmgpy.species import Species |
| 47 | +from rmgpy.kinetics import Arrhenius |
| 48 | + |
46 | 49 |
|
47 | 50 |
|
48 | 51 | ################################################### |
@@ -1090,6 +1093,23 @@ def test_retaining_atom_labels_in_template_reaction(self): |
1090 | 1093 | self.assertEqual([(label, str(atom)) for label, atom in |
1091 | 1094 | reaction_list_2[0].labeled_atoms['products'].items()], |
1092 | 1095 | [('*1', 'C'), ('*2', 'C.'), ('*3', 'H')]) |
| 1096 | + |
| 1097 | + def test_average_kinetics(self): |
| 1098 | + """ |
| 1099 | + Test that the average kinetics are calculated correctly |
| 1100 | + """ |
| 1101 | + k1 = Arrhenius(A=(1e+13, 'cm^3/(mol*s)'), n=0, Ea=(0, 'kJ/mol'), T0=(1, 'K')) |
| 1102 | + k2 = Arrhenius(A=(4e+13, 'cm^3/(mol*s)'), n=1, Ea=(10, 'kJ/mol'), T0=(1, 'K')) |
| 1103 | + kav = rmgpy.data.kinetics.family.average_kinetics([k1, k2]) |
| 1104 | + self.assertAlmostEqual(kav.A.value_si, 2.0e7, 2) # m3/mol/s |
| 1105 | + self.assertAlmostEqual(kav.n.value_si, 0.5, 6) |
| 1106 | + self.assertAlmostEqual(kav.Ea.value_si, 5.0e3, 2) |
| 1107 | + self.assertAlmostEqual(kav.T0.value_si, 1.0, 6) |
| 1108 | + self.assertEqual(kav.A.units, 'm^3/(mol*s)') |
| 1109 | + self.assertAlmostEqual(np.log(kav.get_rate_coefficient(300)), |
| 1110 | + np.average([np.log(k1.get_rate_coefficient(300)), |
| 1111 | + np.log(k2.get_rate_coefficient(300))]), 6) |
| 1112 | + |
1093 | 1113 |
|
1094 | 1114 |
|
1095 | 1115 | ################################################################################ |
|
0 commit comments