vasp 入门到精通[24]手写脚本计算DOS的积分

2025-11-11 03:04:30

1、先说一下这个脚本的功能,这个脚本是用来做太密度分析的。之前小编写过一个提取太密度的脚本,可以结合使用哦

2、首先我们先看一下太密度的数据文件:其中第一列是能量,第二列是密度值

这里小编的太密度文件一共取了1000个点,也就是有1000列;

但是小编计算了磁性,所以分为1000个向上的和1000个向下的

vasp 入门到精通[24]手写脚本计算DOS的积分

3、小编给大家看一下999列到1002列的数据

命令:

sed -n '999,1002p' 1d.dat

以及最后几行的数据:

tail 1d.dat

vasp 入门到精通[24]手写脚本计算DOS的积分

vasp 入门到精通[24]手写脚本计算DOS的积分

4、接下来,小编想看一下某些范围的太密度积分:比如占据态的太密度积分,这里面包括了自旋向上和向下的部分的差值,在数据里自旋向下的密度是负值,如上图所示。所以数据中上下态密度加起来,其实是做差

5、先看一下数据图:因为小编算的是团簇,所以太密度间断的值

vasp 入门到精通[24]手写脚本计算DOS的积分

6、小编想看-2 到 0 ev的密度,其实对应的是磁矩,这也是小编想看的(当然origin也能做,但是文件多了,还是脚本方便一些^_^):

废话太多,直接上脚本:

vasp 入门到精通[24]手写脚本计算DOS的积分

7、import sys

a=open(sys.argv[1],'r+')

b=a.readlines()

rows=len(b)

a.close()

sum=0

min=float(sys.argv[2])

max=float(sys.argv[3])

a=open(sys.argv[1],'r+')

for i in range(rows):

  try:

    j=b[i].split()

    j[0]=float(j[0])

    j[1]=float(j[1])

    if j[0]>min and j[0]<max:

      sum=sum+j[1]

  except:

    pass

print sum

8、大家注意空格啊,这是python,缩进很重要,建议不太熟悉python的小伙伴直接复制过去,看看缩进跟我的是不是一样。就是每一行开头的对其格式

9、下面是使用方法:

python  sum-dos.py  1d.dat  -2  0

python是指运行python命令,sum-dos.py 是脚本的名字  

1d.dat 是态密度数据文件

-2  0 是能量范围

vasp 入门到精通[24]手写脚本计算DOS的积分

10、运行命令后,在命令行会出现积分值。

ok大功告成!

今天就到这里啦,喜欢的朋友可以关注我,我会不定期给大家分享经验和脚本

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