1、先说一下这个脚本的功能,这个脚本是用来做太密度分析的。之前小编写过一个提取太密度的脚本,可以结合使用哦
2、首先我们先看一下太密度的数据文件:其中第一列是能量,第二列是密度值这里小编的太密度文件一共取了1000个点,也就是有1000列;但是小编计算了磁性,所以分为1000个向上的和1000个向下的
3、小编给大家看一下999列到1002列的数据命令:sed -n '999,1002p' 1d.dat以及最后几行的数据:tail 1d.dat
4、接下来,小编想看一下某些范围的太密度积分:比如占据态的太密度积分,这里面包括了自旋向上和向下的部分的差值,在数据里自旋向下的密度是负值,如上图所示。所以数据中上下态密度加起来,其实是做差
5、先看一下数据图:因为小编算的是团簇,所以太密度间断的值
6、小编想看-2 到 0 ev的密度,其实对应的是磁矩,这也是小编想看的(当然origin也能做,但是文件多了,还是脚本方便一些^_^):废话太多,直接上脚本:
7、import sysa=open(sys.argv[1],'r+')b=a.read造婷用痃lines()rows=len(b)a.close()sum=0min=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: passprint sum
8、大家注意空格啊,这是python,缩进很重要,建议不太熟悉python的小伙伴直接复制过去,看看缩进跟我的是不是一样。就是每一行开头的对其格式
9、下面是使用方法:python sum-dos.py 1d.dat -2 0python是指运行python命令,sum-dos.py 是脚本的名字 1d.dat 是态密度数据文件-2 0 是能量范围
10、运行命令后,在命令行会出现积分值。ok大功告成!今天就到这里啦,喜欢的朋友可以关注我,我会不定期给大家分享经验和脚本