class TestCanteraOutput(unittest.TestCase): def setUp(self): self.chemkin_files = { """ELEMENTS H D /2.014/ T /3.016/ C CI /13.003/ O OI /18.000/ N END SPECIES ethane(1) CH3(4) END THERM ALL 300.000 1000.000 5000.000 ethane(1) H 6 C 2 G100.000 5000.000 954.52 1 4.58987205E+00 1.41507042E-02-4.75958084E-06 8.60284590E-10-6.21708569E-14 2 -1.27217823E+04-3.61762003E+00 3.78032308E+00-3.24248354E-03 5.52375224E-05 3 -6.38573917E-08 2.28633835E-11-1.16203404E+04 5.21037799E+00 4 CH3(4) H 3 C 1 G100.000 5000.000 1337.62 1 3.54144859E+00 4.76788187E-03-1.82149144E-06 3.28878182E-10-2.22546856E-14 2 1.62239622E+04 1.66040083E+00 3.91546822E+00 1.84153688E-03 3.48743616E-06 3 -3.32749553E-09 8.49963443E-13 1.62856393E+04 3.51739246E-01 4 END REACTIONS KCAL/MOLE MOLES CH3(4)+CH3(4)=ethane(1) 8.260e+17 -1.400 1.000 END """: True, """ELEMENTS CI /13.003/ O OI /18.000/ N END SPECIES ethane(1) CH3(4) END THERM ALL 300.000 1000.000 5000.000 ethane(1) H 6 C 2 G100.000 5000.000 954.52 1 4.58987205E+00 1.41507042E-02-4.75958084E-06 8.60284590E-10-6.21708569E-14 2 -1.27217823E+04-3.61762003E+00 3.78032308E+00-3.24248354E-03 5.52375224E-05 3 -6.38573917E-08 2.28633835E-11-1.16203404E+04 5.21037799E+00 4 CH3(4) H 3 C 1 G100.000 5000.000 1337.62 1 3.54144859E+00 4.76788187E-03-1.82149144E-06 3.28878182E-10-2.22546856E-14 2 1.62239622E+04 1.66040083E+00 3.91546822E+00 1.84153688E-03 3.48743616E-06 3 -3.32749553E-09 8.49963443E-13 1.62856393E+04 3.51739246E-01 4 END REACTIONS KCAL/MOLE MOLES CH3(4)+CH3(4)=ethane(1) 8.260e+17 -1.400 1.000 END """: False, """ELEMENTS H D /2.014/ T /3.016/ C CI /13.003/ O OI /18.000/ N END SPECIES ethane(1) CH3(4) END THERM ALL 300.000 1000.000 5000.000 ethane(1) H 6 C 2 G100.000 5000.000 954.52 1 4.58987205E+00 1.41507042E-02-4.75958084E-06 8.60284590E-10-6.21708569E-14 2 -1.27217823E+04-3.61762003E+00 3.78032308E+00-3.24248354E-03 5.52375224E-05 3 -6.38573917E-08 2.28633835E-11-1.16203404E+04 5.21037799E+00 4 END REACTIONS KCAL/MOLE MOLES CH3(4)+CH3(4)=ethane(1) 8.260e+17 -1.400 1.000 END """: False, } self.rmg = RMG() self.dir_name = 'temp_dir_for_testing' self.rmg.output_directory = os.path.join(originalPath, self.dir_name) self.tran_dat = ''' ! Species Shape LJ-depth LJ-diam DiplMom Polzblty RotRelaxNum Data ! Name Index epsilon/k_B sigma mu alpha Zrot Source ethane(1) 2 252.301 4.302 0.000 0.000 1.500 ! GRI-Mech CH3(4) 2 144.001 3.800 0.000 0.000 0.000 ! GRI-Mech ''' def tearDown(self): os.chdir(originalPath) # try to remove the tree. If testChemkinToCanteraConversion properly # ran, the files should already be removed. try: shutil.rmtree(self.dir_name) except OSError: pass # go back to the main RMG-Py directory os.chdir('..') def test_chemkin_to_cantera_conversion(self): """ Tests that good and bad chemkin files raise proper exceptions """ from cantera.ck2cti import InputParseError for ck_input, works in self.chemkin_files.items(): os.chdir(originalPath) os.mkdir(self.dir_name) os.chdir(self.dir_name) f = open('chem001.inp', 'w') f.write(ck_input) f.close() f = open('tran.dat', 'w') f.write(self.tran_dat) f.close() if works: self.rmg.generate_cantera_files( os.path.join(os.getcwd(), 'chem001.inp')) else: with self.assertRaises(InputParseError): self.rmg.generate_cantera_files( os.path.join(os.getcwd(), 'chem001.inp')) # clean up os.chdir(originalPath) shutil.rmtree(self.dir_name)