Esempio n. 1
0
 def test_get_eff_masses(self):
     m = [[9., 5., 1.], [5., 7., 3.], [1., 3., 6.]]
     basis = [[6., 2., 1.], [3., 9., 4.], [1., 3., 8.]]
     em, vecs_cart, vecs_frac, vecs_n = emc.get_eff_masses(m, basis)
     self.assertListAlmostEqual(em, [0.48965, 0.16844, 0.07132],
                                places=5,
                                msg='Effective mass value failed')
     self.assertListAlmostEqual(vecs_cart[0], [-0.47715, 0.75420, -0.45113],
                                places=5,
                                msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_cart[1], [-0.53266, 0.16010, 0.83104],
                                places=5,
                                msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_cart[2], [0.69900, 0.63683, 0.32534],
                                places=5,
                                msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[0], [-0.13660, 0.15271, -0.11567],
                                places=5,
                                msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[1], [-0.10988, 0.00360, 0.11581],
                                places=5,
                                msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[2], [0.09126, 0.04887, 0.00483],
                                places=5,
                                msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[0], [-0.89450, 1.00000, -0.75745],
                                places=5,
                                msg='Normalized eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[1], [-0.94877, 0.03110, 1.00000],
                                places=5,
                                msg='Normalized eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[2], [1.00000, 0.53551, 0.05287],
                                places=5,
                                msg='Normalized eigenvectors failed')
Esempio n. 2
0
    def test_calculate_effmass(self):
        kpt, stepsize, band, prg, basis = emc.parse_inpcar(
            self.inpcar_fh, debug=False)  # will need band and stepsize later

        energies = emc.parse_EIGENVAL_VASP(self.eigenval_fh,
                                           band,
                                           len(emc.st3),
                                           debug=False)
        m = emc.fd_effmass_st3(energies, stepsize)
        self.assertListAlmostEqual(
            m[0], [-2.90687, 0.0, 0.0],
            places=5,
            msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(
            m[1], [0.0, -2.90687, 0.0],
            places=5,
            msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(
            m[2], [0.0, 0.0, -2.90687],
            places=5,
            msg='Failed to calculate effective mass tensor')

        masses, vecs_cart, vecs_frac, vecs_n = emc.get_eff_masses(m, basis)
        self.assertListAlmostEqual(masses, [-0.344013] * 3,
                                   places=5,
                                   msg='Effective mass calculations failed')
Esempio n. 3
0
    def test_calculate_effmass(self):
        kpt, stepsize, band, prg, basis = emc.parse_inpcar(self.inpcar_fh, debug=False) # will need band and stepsize later

        energies = emc.parse_EIGENVAL_VASP(self.eigenval_fh, band, len(emc.st3), debug=False)
        m = emc.fd_effmass_st3(energies, stepsize)
        self.assertListAlmostEqual(m[0], [-2.90687, 0.0, 0.0], places=5, msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(m[1], [0.0, -2.90687, 0.0], places=5, msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(m[2], [0.0, 0.0, -2.90687], places=5, msg='Failed to calculate effective mass tensor')

        masses, vecs_cart, vecs_frac, vecs_n = emc.get_eff_masses(m, basis)
        self.assertListAlmostEqual(masses, [-0.344013]*3, places=5, msg='Effective mass calculations failed')
Esempio n. 4
0
 def test_get_eff_masses(self):
     m = [[9.,5.,1.], [5.,7.,3.], [1.,3.,6.]]
     basis = [[6.,2.,1.], [3.,9.,4.], [1.,3.,8.]]
     em, vecs_cart, vecs_frac, vecs_n = emc.get_eff_masses(m, basis)
     self.assertListAlmostEqual(em, [0.48965,0.16844,0.07132], places=5, msg='Effective mass value failed')
     self.assertListAlmostEqual(vecs_cart[0], [-0.47715, 0.75420,-0.45113], places=5, msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_cart[1], [-0.53266, 0.16010, 0.83104], places=5, msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_cart[2], [ 0.69900, 0.63683, 0.32534], places=5, msg='Cartesian eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[0], [-0.13660, 0.15271,-0.11567], places=5, msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[1], [-0.10988, 0.00360, 0.11581], places=5, msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_frac[2], [ 0.09126, 0.04887, 0.00483], places=5, msg='Fractional eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[0], [-0.89450, 1.00000,-0.75745], places=5, msg='Normalized eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[1], [-0.94877, 0.03110, 1.00000], places=5, msg='Normalized eigenvectors failed')
     self.assertListAlmostEqual(vecs_n[2], [ 1.00000, 0.53551, 0.05287], places=5, msg='Normalized eigenvectors failed')
Esempio n. 5
0
    def test_calculate_effmass(self):
        kpt, stepsize, band, prg, basis = emc.parse_inpcar(
            self.inpcar_fh, debug=False)  # will need band and stepsize later

        energies = emc.parse_EIGENVAL_VASP(self.eigenval_fh,
                                           band,
                                           len(emc.st3),
                                           debug=False)
        m = emc.fd_effmass_st3(energies, stepsize)
        self.assertListAlmostEqual(
            m[0], [-1.23535, 0.04464, 0.0],
            places=5,
            msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(
            m[1], [0.04464, -0.45875, 0.0],
            places=5,
            msg='Failed to calculate effective mass tensor')
        self.assertListAlmostEqual(
            m[2], [0.0, 0.0, -0.67875],
            places=5,
            msg='Failed to calculate effective mass tensor')

        print ''
        print 'Effective mass values and directions for Perylene-TCNQ crystal'
        print 'are tested against data computed in the JLB group'
        print ''
        masses, vecs_cart, vecs_frac, vecs_n = emc.get_eff_masses(m, basis)
        self.assertListAlmostEqual(masses, [-0.808, -1.473, -2.192],
                                   places=3,
                                   msg='Effective mass calculations failed')
        self.assertListAlmostEqual(vecs_n[0], [1.0, -0.02531, 0.0],
                                   places=5,
                                   msg='Effective mass direction 1 failed')
        self.assertListAlmostEqual(vecs_n[1], [0.0, 0.0, 1.0],
                                   places=5,
                                   msg='Effective mass direction 2 failed')
        self.assertListAlmostEqual(vecs_n[2], [0.11385, 1.0, 0.0],
                                   places=5,
                                   msg='Effective mass direction 3 failed')