首先,您需要安装seekpath库(https://github.com/giovannipizzi/seekpath)。
pip install sawpath脚本主要内容为:您可以自行下载并运行。
导入sawpathimport numpy as npelement_to_atomic_number={'H': 1,'He': 2,'Li': 3,'Be': 4,'B': 5,'C': 6,'N': 7,' O': 8,'F': 9,'Ne': 10,'Na': 11,'Mg': 12,'Al': 13,'Si': 14,'P': 15,'S' : 16、'Cl': 17、'Ar': 18、'K': 19、'Ca': 20、'Sc': 21、'Ti': 22、'V': 23、'Cr': 24 'As': 33,'Se': 34,'Br': 35,'Kr': 36,'Rb': 37,'Sr': 38,'Y': 39,'Zr': 40,'Nb ': 41、'Mo': 42、'Tc': 43、'Ru': 44、'Rh': 45、'Pd': 46、'Ag': 47、'Cd': 48、'In': 49'Ce': 58、'Pr': 59、'Nd': 60、'Pm': 61、'Sm': 62、'Eu': 63、'Gd': 64、'Tb': 65、' Dy': 66、'Ho': 67、'Er': 68、'Tm': 69、'Yb': 70、'Lu': 71、'Hf': 72、'Ta': 73、'W' : 74、'Re': 75、'Os': 76、'Ir': 77、'Pt': 78、'Au': 79、'Hg': 80、'Tl': 81、'Pb': 82 ,'Bi': 83,'Po': 84,'At': 85,'Rn': 86,'Fr': 87,'Ra': 88,'Ac': 89,'Th': 90,Pa ' : 91、'U': 92、'Np': 93、'Pu': 94、'Am': 95、'Cm': 96、'Bk': 97、'Cf': 98、'Es' : 99' Hs': 108、'MT': 109、'Ds': 110、'Rg': 111、'Cn': 112、'NH': 113、'Fl': 114、'Mc': 115、 ' Lv' : 116, 'Ts': 117, 'Og': 118}def read_poscar(filename): with open(filename, 'r') as file: Lines=file.readlines()# 读取晶胞参数cell=np. Zeros ((3, 3))for i in range(3): cell[i]=[float(x) for x in Lines[2 + i].split()]# 读取的原子类型和数量=lines[ 5].split() num_atoms=[int(x) for x inlines[6].split()]atomic_numbers=[] if element, count in zip (species, num_atoms):atomic_numbers.extend([element_to_atomic_number] [element ] ] * count) 位置=[] start_line=8for i, num in enumerate(num_atoms):for j in range(num): pos=[float(x) for x in Lines[start_line + sum (num_atoms[:i] ) + j ].split()[:3]] Positions.append(pos)return cell, Positions,atomic_numbers# POSCAR 从文件中读取结构cell,Positions,atomic_numbers=read_poscar('POSCAR') # 转换为可接受的格式来查找pathStructure=(cell, Positions,atomic_numbers)# 获取高对称路径path_data=Seekpath.get_path(structural)# 获取高对称点和推荐路径extract kpoints=path_data['point_coords']band_path=path_data['path']# 写入KPOINTS file with open('KPOINTS', 'w') as file: file.write('K-Path\n') file.write('20\n') # 高对称点之间的点数(可调) file.write ('倒数\n')对于i,枚举(band_path):段开始,结束=段start_coords=kpoints[start] end_coords=kpoints[end] file.write(f\'{np.array(start_coords)[0] ]:4f} {np.array(start_coords)[1]:4f} {np.array(start_coords)[2]:4f} {开始}\n\') file.write(f\'{np.array( end_coords)[0]:4f} {np.array(end_coords)[1]:4f} {np .array(end_coords)[2]:4f} {end}\n\')if i len(band_path) - 1: file.write(\'\n\') # 每两个高对称点后添加一个空行print(\'为VASP 能带计算生成的KPOINTS 文件。 \')
标题:python seek,python seek(2)
链接:https://yyuanw.com/news/xydt/7606.html
版权:文章转载自网络,如有侵权,请联系删除!