Exemplo n.º 1
0
 def __loadOldReactions(self, path, species):
     """
     Load an old-style reaction library from `path`. This algorithm can
     handle both the pressure-independent and pressure-dependent reaction
     files. If the pressure-dependent file is read, the extra pressure-
     dependent kinetics information is ignored unless the kinetics database
     is a seed mechanism.
     """
     from rmgpy.chemkin import readReactionsBlock
     f = open(path, 'r')
     reactionList = readReactionsBlock(f, speciesDict=species)
     f.close()
     return reactionList
Exemplo n.º 2
0
 def __loadOldReactions(self, path, species):
     """
     Load an old-style reaction library from `path`. This algorithm can
     handle both the pressure-independent and pressure-dependent reaction
     files. If the pressure-dependent file is read, the extra pressure-
     dependent kinetics information is ignored unless the kinetics database
     is a seed mechanism.
     """
     from rmgpy.chemkin import readReactionsBlock
     f = open(path, 'r')
     reactionList = readReactionsBlock(f, speciesDict=species)
     f.close()
     return reactionList
Exemplo n.º 3
0
    def testPDepJob(self):
        """
        A general test for a PDep job in Arkane
        """
        self.tst1 = Arkane()
        self.tst1.inputFile = self.input_file
        self.tst1.outputDirectory = self.directory
        self.tst1.verbose = logging.WARN
        self.tst1.plot = False
        self.tst1.jobList = []
        self.tst1.jobList = self.tst1.loadInputFile(self.tst1.inputFile)
        self.tst1.execute()

        job = self.tst1.jobList[0]
        self.assertEquals(job.Tmin.value_si, 300.0)
        self.assertEquals(job.minimumGrainCount, 100)
        self.assertFalse(job.rmgmode)
        self.assertTrue(job.activeJRotor)
        self.assertEquals(job.network.pathReactions[0].label,'acetylperoxy <=> hydroperoxylvinoxy')
        self.assertAlmostEquals(job.network.pathReactions[0].transitionState.tunneling.E0_TS.value_si,-24267.2)
        self.assertAlmostEquals(job.network.pathReactions[0].transitionState.tunneling.frequency.value_si,-1679.04)
        self.assertEquals(len(job.network.netReactions[0].reactants[0].conformer.modes), 6)
        # self.assertEquals(self.tst1.frequencyScaleFactor, 0.947)

        # test that a network pdf was generated
        files = [f for f in os.listdir(self.directory) if os.path.isfile(os.path.join(self.directory, f))]
        self.assertTrue(any(f == 'network.pdf' for f in files))

        # Test the generated network reaction
        dictionary = {'hydroperoxylvinoxy': Species().fromSMILES('[CH2]C(=O)OO'),
        'acetylperoxy': Species().fromSMILES('CC(=O)O[O]')}
        with open(os.path.join(self.directory, 'chem.inp'), 'r') as chem:
            reaction_list = readReactionsBlock(chem, dictionary)
        rxn = reaction_list[0]
        self.assertIsInstance(rxn.kinetics, Chebyshev)
        self.assertAlmostEquals(rxn.kinetics.getRateCoefficient(1000.0, 1.0), 88.879056605)

        files = [f for f in os.listdir(os.path.join(self.directory, 'sensitivity', ''))
                 if os.path.isfile(os.path.join(self.directory, 'sensitivity', f))]
        self.assertTrue(any('hydroperoxylvinoxy.pdf' in f for f in files))

        with open(os.path.join(self.directory, 'sensitivity', 'network1.txt'), 'r') as f:
            lines = f.readlines()
            for line in lines:
                if '1000.0' in line:
                    break
        sa_coeff = line.split()[-2]
        self.assertEquals(float(sa_coeff), -8.24e-6)
Exemplo n.º 4
0
    def testPDepJob(self):
        """
        A general test for a PDep job in Arkane
        """
        self.tst1 = Arkane()
        self.tst1.inputFile = self.input_file
        self.tst1.outputDirectory = self.directory
        self.tst1.verbose = logging.WARN
        self.tst1.plot = False
        self.tst1.jobList = []
        self.tst1.jobList = self.tst1.loadInputFile(self.tst1.inputFile)
        self.tst1.execute()

        job = self.tst1.jobList[0]
        self.assertEquals(job.Tmin.value_si, 300.0)
        self.assertEquals(job.minimumGrainCount, 100)
        self.assertFalse(job.rmgmode)
        self.assertTrue(job.activeJRotor)
        self.assertEquals(job.network.pathReactions[0].label,'acetylperoxy <=> hydroperoxylvinoxy')
        self.assertAlmostEquals(job.network.pathReactions[0].transitionState.tunneling.E0_TS.value_si,-24267.2)
        self.assertAlmostEquals(job.network.pathReactions[0].transitionState.tunneling.frequency.value_si,-1679.04)
        self.assertEquals(len(job.network.netReactions[0].reactants[0].conformer.modes), 6)
        # self.assertEquals(self.tst1.frequencyScaleFactor, 0.947)

        # test that a network pdf was generated
        files = [f for f in os.listdir(self.directory) if os.path.isfile(os.path.join(self.directory, f))]
        self.assertTrue(any(f == 'network.pdf' for f in files))

        # Test the generated network reaction
        dictionary = {'hydroperoxylvinoxy': Species().fromSMILES('[CH2]C(=O)OO'),
        'acetylperoxy': Species().fromSMILES('CC(=O)O[O]')}
        with open(os.path.join(self.directory, 'chem.inp'), 'r') as chem:
            reaction_list = readReactionsBlock(chem, dictionary)
        rxn = reaction_list[0]
        self.assertIsInstance(rxn.kinetics, Chebyshev)
        self.assertAlmostEquals(rxn.kinetics.getRateCoefficient(1000.0, 1.0), 88.879056605)

        files = [f for f in os.listdir(os.path.join(self.directory, 'sensitivity', ''))
                 if os.path.isfile(os.path.join(self.directory, 'sensitivity', f))]
        self.assertTrue(any('hydroperoxylvinoxy.pdf' in f for f in files))

        with open(os.path.join(self.directory, 'sensitivity', 'network1.txt'), 'r') as f:
            lines = f.readlines()
            for line in lines:
                if '1000.0' in line:
                    break
        sa_coeff = line.split()[-2]
        self.assertEquals(float(sa_coeff), -8.24e-6)