Esempio n. 1
0
 def testTSTCalculation(self):
     """
     A test of the transition state theory k(T) calculation function,
     using the reaction H + C2H4 -> C2H5.
     """
     Tlist = 1000.0/numpy.arange(0.4, 3.35, 0.01)
     klist = numpy.array([self.reaction.calculateTSTRateCoefficient(T) for T in Tlist])
     arrhenius = Arrhenius().fitToData(Tlist, klist, kunits='m^3/(mol*s)')
     klist2 = numpy.array([arrhenius.getRateCoefficient(T) for T in Tlist])
     
     # Check that the correct Arrhenius parameters are returned
     self.assertAlmostEqual(arrhenius.A.value_si, 2265.2488, delta=1e-2)
     self.assertAlmostEqual(arrhenius.n.value_si, 1.45419, delta=1e-4)
     self.assertAlmostEqual(arrhenius.Ea.value_si, 6645.24, delta=1e-2)
     # Check that the fit is satisfactory (defined here as always within 5%)
     for i in range(len(Tlist)):
         self.assertAlmostEqual(klist[i], klist2[i], delta=5e-2 * klist[i])
Esempio n. 2
0
 def testTSTCalculation(self):
     """
     A test of the transition state theory k(T) calculation function,
     using the reaction H + C2H4 -> C2H5.
     """
     Tlist = 1000.0/numpy.arange(0.4, 3.35, 0.01)
     klist = numpy.array([self.reaction.calculateTSTRateCoefficient(T) for T in Tlist])
     arrhenius = Arrhenius().fitToData(Tlist, klist, kunits='m^3/(mol*s)')
     klist2 = numpy.array([arrhenius.getRateCoefficient(T) for T in Tlist])
     
     # Check that the correct Arrhenius parameters are returned
     self.assertAlmostEqual(arrhenius.A.value_si, 2265.2488, delta=1e-2)
     self.assertAlmostEqual(arrhenius.n.value_si, 1.45419, delta=1e-4)
     self.assertAlmostEqual(arrhenius.Ea.value_si, 6645.24, delta=1e-2)
     # Check that the fit is satisfactory (defined here as always within 5%)
     for i in range(len(Tlist)):
         self.assertAlmostEqual(klist[i], klist2[i], delta=5e-2 * klist[i])
Esempio n. 3
0
    def testGenerateReverseRateCoefficientArrhenius(self):
        """
        Test the Reaction.generateReverseRateCoefficient() method works for the Arrhenius format.
        """
        original_kinetics = Arrhenius(
            A=(2.65e12, "cm^3/(mol*s)"), n=0.0, Ea=(0.0, "kJ/mol"), T0=(1, "K"), Tmin=(300, "K"), Tmax=(2000, "K")
        )
        self.reaction2.kinetics = original_kinetics

        reverseKinetics = self.reaction2.generateReverseRateCoefficient()

        self.reaction2.kinetics = reverseKinetics
        # reverse reactants, products to ensure Keq is correctly computed
        self.reaction2.reactants, self.reaction2.products = self.reaction2.products, self.reaction2.reactants
        reversereverseKinetics = self.reaction2.generateReverseRateCoefficient()

        # check that reverting the reverse yields the original
        Tlist = numpy.arange(original_kinetics.Tmin.value_si, original_kinetics.Tmax.value_si, 200.0, numpy.float64)
        P = 1e5
        for T in Tlist:
            korig = original_kinetics.getRateCoefficient(T, P)
            krevrev = reversereverseKinetics.getRateCoefficient(T, P)
            self.assertAlmostEqual(korig / krevrev, 1.0, 0)