Skip to content

Commit

Permalink
Fix eigenvectors (#7)
Browse files Browse the repository at this point in the history
* Original eigenvectors were zero

The "original" Cartesian eigenvectors didn't have a value assigned to them.
Output file shows only zeros.

* Update test_mat.py
  • Loading branch information
jaroli authored and afonari committed Oct 14, 2016
1 parent 27c8838 commit daac488
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion emc.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ def get_eff_masses(m, basis):
eigvec, eigval = jacobi(m)
#
for i in range(3):
#vecs_cart[i] = eigvec[:,i].tolist()
vecs_cart[i] = eigvec[i]
vecs_frac[i] = cart2frac(basis, eigvec[i])
vecs_n[i] = N(vecs_frac[i])
#
Expand Down
15 changes: 15 additions & 0 deletions test/test_mat.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,21 @@ def test_eigenval(self):
eigvec, eigvals = emc.jacobi(m)
self.assertListAlmostEqual(eigvals, [-26.13065, 3.443361, 37.68729], places=5, msg='Eigenvals for symmetric matrix failed')

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')

if __name__ == '__main__':
unittest.main()

0 comments on commit daac488

Please sign in to comment.