24小时热门版块排行榜    

查看: 2891  |  回复: 5

qli0218

木虫 (小有名气)

[交流] MS能带处理方法程序

虫友们,大家好,我现在在处理ms能带的时候发现要重新作图的时候是一件非常麻烦的事情,我在网上查找了一下,发现了ms_bandstructure.exe这个程序,但是我一直没有下载到,不太清楚现在大家都如何处理这个数据。所以我一狠心决定自己处理一下,我之前编写过处理基于ms态密度的d-band center计算程序,我已经把我的程序源代码附录在我的博士论文里了,所以再写程序就很轻松了,不过我依然只是个业余选手,比不上高大上的程序,我的目的只有一个,能用就行。但是还有几个问题需要虫友们帮助解答,可能问题有点菜,但还是希望能给予帮助:

1、ms画出的能带图中如果有alpha和beta两个内容的话,带隙如何计算?是单独计算各自的还是两个合并起来计算?
2、能带图中的0 ev是否就是费米能级,若不是的话是不是在bandstr文件里的:
fermi energy:          -0.187537 ha      -5.103 ev   -kts_e= -0.0013020ha
dft energy gap:          0.053546 ha      1.457 ev
valence band edge:      -0.214375 ha     -5.833 ev
conduction band edge:   -0.160829 ha     -4.376 ev
这里的fermi energy是么?
3、我想弄清楚上面两个问题,在这基础上完善我的程序。此外就是各位宠友们还可以通过能带图处理出什么样的数据,都可以一起交流,然后我慢慢的加到我的程序中去,逐渐完善。在此,我可以把我的第一稿源文件发布在此,大家一起交流,一起让处理数据不那么麻烦。

谢谢大家!!

源程序:(里面有使用方法,这个程序是以0 ev为参照点,能得到带隙,0点上下各五条能带线的整理,得到.dat文件后可以直接导入origin里面进行绘图)
CODE:
        program msbs
        implicit none
        integer::i,j,k,n,l
        real*8,dimension(:,:),allocatable::d
        character(len=1)::a
        character(len=30)::a1
        write(*,'(15x,"该软件为计算处理ms band structure小程序")')
        write(*,'("使用方法:")')
        write(*,'("1、在ms中画出band structure;")')
        write(*,'("2、将band structure图export为.csv格式文件;")')
        write(*,'("3、将得到的文件用exel打开,设置数据格式为15位小数;")')
        write(*,'("4、再将此文件另存为.txt文件。")')
        write(*,'("于是即可利用此程序处理band structure数据")')
        write(*,'("得到dat文件可直接导入到origin中作图")')
        write(*,'("注意:文件名由数字和字母组成,不区分大小写,最长30
        1字节")')
        write(*,*)
        write(*,'("--------------------")')
        write(*,*)
        write(*,'("请输入分析的文件名:(不用写后缀)")')
        read*,a1
        open(1,file=trim(a1)//'.txt',status='old',access='sequential',
        1form='formatted',action='read')
        open(2,file=trim(a1)//'.dat',status='replace',access='sequential',
        1form='formatted')
        i=0
        n=0
        do
        read(1,'(a1)',iostat=l)a
        if (l/=0) exit
        if (a=="1") n=n+1
        i=i+1
        end do
        allocate(d(i/n-1,n+1))
        rewind(1)
        do j=1,i/n-1
        read(1,'(f17.15,f21.15)')d(j,1),d(j,2)
        end do
        k=3
        read(1,*)       
        do j=i/n+1,i
        if (mod(j,i/n)==0) then
        k=k+1
        read(1,*)       
        else
        read(1,'(a30)')a1
        backspace(1)
        if (a1(20:20)=="-") then
        read(1,'(17x,f21.15)')d(mod(j,i/n),k)
        else
        read(1,'(17x,f20.15)')d(mod(j,i/n),k)
        end if
        end if
        end do
        do j=2,n+1
        if (maxval(d(:,j))*minval(d(:,j+1))<=0) then
        print*,abs(minval(d(:,j+1))-maxval(d(:,j)))
        exit
        end if
        end do
        k=j
        do j=1,i/n-1
        write(2,'(2x,11f9.4)')d(j,1),d(j,k-4:k+5)
        end do
        deallocate(d)
        close(1)
        close(2)
        end program msbs

再次希望大家给予帮助,集大家的力量完善这个程序。谢谢!!
回复此楼

» 收录本帖的淘帖专辑推荐

MS第一性原理

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小红豆

主管区长 (知名作家)

优秀区长优秀区长


小木虫: 金币+0.5, 给个红包,谢谢回帖
费米能级只有一个吧

发自小木虫IOS客户端
2楼2018-12-18 22:17:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qli0218

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 小红豆 at 2018-12-18 22:17:27
费米能级只有一个办

只有一个“办”是什么意思?我就想知道MS里面画出来的能带图是不是已经把费米能级移动到了0 eV。谢谢!
3楼2018-12-20 11:22:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小红豆

主管区长 (知名作家)

优秀区长优秀区长

★ ★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
qli0218: 金币+5, 谢谢,那我可以对alpha和beta的情况在程序里进行一个合并了,谢谢! 2018-12-20 22:25:13
引用回帖:
3楼: originally posted by qli0218 at 2018-12-20 11:22:19
只有一个“办”是什么意思?我就想知道ms里面画出来的能带图是不是已经把费米能级移动到了0 ev。谢谢!...

打错字了。
按照费米能级的定义:温度为绝对零度时固体能带中充满电子的最高能级。费米能级具有唯一性。

1.合并
2.fermi energy=费米能级
4楼2018-12-20 14:21:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tsglss

铁杆木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
请问,ms_bandstructure.exe在哪里下?有什么用处?这个程序能对能带进行能带展宽吗?谢谢

[ 发自手机版 http://muchong.com/3g ]
做好自己
5楼2018-12-20 22:07:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qli0218

木虫 (小有名气)

引用回帖:
5楼: Originally posted by tsglss at 2018-12-20 22:07:36
请问,ms_bandstructure.exe在哪里下?有什么用处?这个程序能对能带进行能带展宽吗?谢谢

ms_bandstructure.exe应该就是一个把MS计算出的能带转化成可以导入Origin的格式文件的程序,我也是因为在网上找了好长时间找不到,才自己编程序做了这么一个东西。至于能不能对能带进行能带展宽我也不太清楚,我现在也在慢慢学习这方面的知识,还不太明白什么是展宽,如果可以的话,您可以告诉我计算展宽的方法,我写到我的程序里,这样我的程序还能逐渐发展。谢谢!
6楼2018-12-20 22:23:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qli0218 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见