コード例 #1
0
    def test_init(self):
        # test with reference file
        analysis = BaderAnalysis(
            chgcar_filename=os.path.join(PymatgenTest.TEST_FILES_DIR,
                                         "CHGCAR.Fe3O4"),
            potcar_filename=os.path.join(PymatgenTest.TEST_FILES_DIR,
                                         "POTCAR.Fe3O4"),
            chgref_filename=os.path.join(PymatgenTest.TEST_FILES_DIR,
                                         "CHGCAR.Fe3O4_ref"),
        )
        self.assertEqual(len(analysis.data), 14)
        self.assertAlmostEqual(analysis.data[0]["charge"], 6.6136782, 3)
        self.assertEqual(analysis.data[0]["charge"], analysis.get_charge(0))
        self.assertAlmostEqual(analysis.nelectrons, 96)
        self.assertAlmostEqual(analysis.vacuum_charge, 0)
        ans = [
            -1.3863218,
            -1.3812175,
            -1.3812175,
            -1.2615902,
            -1.3812175,
            -1.3862971,
            1.021523,
            1.024357,
            1.021523,
            1.021523,
            1.021523,
            1.021523,
            1.021523,
            1.024357,
        ]
        for i in range(14):
            self.assertAlmostEqual(ans[i], analysis.get_charge_transfer(i), 3)
        self.assertEqual(analysis.get_partial_charge(0),
                         -analysis.get_charge_transfer(0))
        s = analysis.get_oxidation_state_decorated_structure()
        self.assertAlmostEqual(s[0].specie.oxi_state, 1.3863218, 3)

        # make sure bader still runs without reference file
        analysis = BaderAnalysis(chgcar_filename=os.path.join(
            PymatgenTest.TEST_FILES_DIR, "CHGCAR.Fe3O4"))
        self.assertEqual(len(analysis.data), 14)

        # Test Cube file format parsing
        analysis = BaderAnalysis(cube_filename=os.path.join(
            PymatgenTest.TEST_FILES_DIR, "bader/elec.cube.gz"))
        self.assertEqual(len(analysis.data), 9)