-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkpath.py
36 lines (34 loc) · 1.39 KB
/
kpath.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python3
import sys
import pymatgen
import seekpath
import numpy
args = sys.argv
structure = pymatgen.core.Structure.from_file(args[1])
structure.remove_oxidation_states()
skp = seekpath.get_explicit_k_path((structure.lattice.matrix, numpy.array(structure.frac_coords),
[pymatgen.core.Element(str(spc)).number for spc in structure.species]),
reference_distance=0.1)
print("Band.dispersion on")
print("<Band.KPath.UnitCell")
for ii in range(3):
print(" %f %f %f" % (skp["primitive_lattice"][ii, 0],
skp["primitive_lattice"][ii, 1],
skp["primitive_lattice"][ii, 2]))
print("Band.KPath.UnitCell>")
print("Band.Nkpath %d" % len(skp["path"]))
print("<Band.kpath")
for ipath in range(len(skp["path"])):
start = skp["explicit_segments"][ipath][0]
final = skp["explicit_segments"][ipath][1] - 1
print("%d %f %f %f %f %f %f %s %s" % (
final - start + 1,
skp["explicit_kpoints_rel"][start][0],
skp["explicit_kpoints_rel"][start][1],
skp["explicit_kpoints_rel"][start][2],
skp["explicit_kpoints_rel"][final][0],
skp["explicit_kpoints_rel"][final][1],
skp["explicit_kpoints_rel"][final][2],
skp["explicit_kpoints_labels"][start],
skp["explicit_kpoints_labels"][final]))
print("Band.kpath>")