VASP高级教程[1]建立超胞

2025-04-24 14:06:01

1、建立超胞可以使用MS或者VESTA但是对于经常需要建立超胞的小伙伴来说,自己有个小程序反而一劳永逸

VASP高级教程[1]建立超胞

2、你可以选择使用shell脚本或者python脚本

VASP高级教程[1]建立超胞

3、废话不多说,开始上脚本:首先是python3.0以上的版本:脚本名字super.py第一部分截图

VASP高级教程[1]建立超胞

4、第二部分截图

VASP高级教程[1]建立超胞

5、程序使用方法在Linux界面下运行命令:pythonsuper.py POSCAR 2 3 2 >POSCAR_super

6、这里注意命令之间的空坼黉赞楞格,还有POSCAR最后不能有空行大于号(其实叫重定向)>后面跟你的超胞名字,不要是POSCAR,不然会覆盖掉原来的POSCAR

VASP高级教程[1]建立超胞
VASP高级教程[1]建立超胞

7、运行后文件对比,因为屏幕原因,没有完全截图

8、附代码:import sysx=sys.argv[2]y=sys.argv[3]z=sys.argv[4]x=int(x)y=int(烤恤鹇灭y)z=int(z)a=open(sys.argv[1],'r+')Line=a.readlines()Numline=len(Line)print(Line[0].strip())print(Line[1].strip())#vector-extentionprint(float(Line[2].strip().split()[0])*x, end=' ')print(float(Line[2].strip().split()[1])*x, end=' ')print(float(Line[2].strip().split()[2])*x)print(float(Line[3].strip().split()[0])*y, end=' ')print(float(Line[3].strip().split()[1])*y, end=' ')print(float(Line[3].strip().split()[2])*y)print(float(Line[4].strip().split()[0])*z, end=' ')print(float(Line[4].strip().split()[1])*z, end=' ')print(float(Line[4].strip().split()[2])*z)print(Line[5].strip())Numele=len(Line[6].strip().split())for i in range(Numele): print(int(Line[6].strip().split()[i])*x*y*z, end=' ')print()print(Line[7].strip())for j in range(8,Numline): L= Line[j].strip().split() L[0]=float(L[0]) L[1]=float(L[1]) L[2]=float(L[2]) for m in range(x): for n in range(y): for k in range(z): print((L[0] + m)/x,(L[1] + n)/y,(L[2] + k)/z)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢