class GrandPotentialPhaseDiagramTest(unittest.TestCase): def setUp(self): module_dir = os.path.dirname(os.path.abspath(__file__)) (self.elements, self.entries) = PDEntryIO.from_csv(os.path.join(module_dir, "pdentries_test.csv")) self.pd = GrandPotentialPhaseDiagram(self.entries, {Element("O"):-5}, self.elements) self.pd6 = GrandPotentialPhaseDiagram(self.entries, {Element("O"):-6}) def test_stable_entries(self): stable_formulas = [ent.original_entry.composition.reduced_formula for ent in self.pd.stable_entries] expected_stable = ['Li5FeO4', 'Li2FeO3', 'LiFeO2', 'Fe2O3', 'Li2O2'] for formula in expected_stable: self.assertTrue(formula in stable_formulas, formula + " not in stable entries!") self.assertEqual(len(self.pd6.stable_entries), 4) def test_get_formation_energy(self): stable_formation_energies = {ent.original_entry.composition.reduced_formula:self.pd.get_form_energy(ent) for ent in self.pd.stable_entries} expected_formation_energies = {'Fe2O3': 0.0, 'Li5FeO4':-5.305515040000046, 'Li2FeO3':-2.3424741500000152, 'LiFeO2':-0.43026396250000154, 'Li2O2': 0.0} for formula, energy in expected_formation_energies.items(): self.assertAlmostEqual(energy, stable_formation_energies[formula], 7, "Calculated formation for " + formula + " is not correct!") def test_str(self): self.assertIsNotNone(str(self.pd))
class GrandPotentialPhaseDiagramTest(unittest.TestCase): def setUp(self): module_dir = os.path.dirname(os.path.abspath(__file__)) (self.elements, self.entries) = PDEntryIO.from_csv( os.path.join(module_dir, "pdentries_test.csv")) self.pd = GrandPotentialPhaseDiagram(self.entries, {Element("O"): -5}, self.elements) self.pd6 = GrandPotentialPhaseDiagram(self.entries, {Element("O"): -6}) def test_stable_entries(self): stable_formulas = [ ent.original_entry.composition.reduced_formula for ent in self.pd.stable_entries ] expected_stable = ['Li5FeO4', 'Li2FeO3', 'LiFeO2', 'Fe2O3', 'Li2O2'] for formula in expected_stable: self.assertTrue(formula in stable_formulas, formula + " not in stable entries!") self.assertEqual(len(self.pd6.stable_entries), 4) def test_get_formation_energy(self): stable_formation_energies = { ent.original_entry.composition.reduced_formula: self.pd.get_form_energy(ent) for ent in self.pd.stable_entries } expected_formation_energies = { 'Fe2O3': 0.0, 'Li5FeO4': -5.305515040000046, 'Li2FeO3': -2.3424741500000152, 'LiFeO2': -0.43026396250000154, 'Li2O2': 0.0 } for formula, energy in expected_formation_energies.items(): self.assertAlmostEqual( energy, stable_formation_energies[formula], 7, "Calculated formation for " + formula + " is not correct!") def test_str(self): self.assertIsNotNone(str(self.pd))