import sys from pymatgen.core import Structure from pymatgen.symmetry.bandstructure import HighSymmKpath infile = 'ZnO.cif' path_type = "hinuma" # hinuma: Hinuma–Pizzi–Kumagai–Oba–Tanaka (2017) # sc: Setyawan–Curtarolo (2010) if len(sys.argv) > 1: infile = sys.argv[1] if len(sys.argv) > 2: path_type = sys.argv[2] structure = Structure.from_file(infile) prim = structure.get_primitive_structure() # 高対称点と経路を生成 kpath = HighSymmKpath(prim, path_type = path_type) if kpath is None or kpath.kpath is None: print(f"\nError: Could not get k path for [{infile}] with the path_type={path_type}\n") exit() # 経路の定義を見やすく表示 print("\n=== k-path 経路 ===") for segment in kpath.kpath["path"]: print(" → ".join(segment)) # 高対称点座標を見やすく表示 print("\n=== 高対称点座標 ===") for point, coord in kpath.kpath["kpoints"].items(): print(f"{point:3s} : {coord}")