24小时热门版块排行榜    

查看: 3317  |  回复: 11

xujc1983

木虫 (著名写手)

苦逼青椒一枚

[交流] 提取能带数据脚本 已有6人参与

小木虫中很多处理VASP结果的脚本,但一直没有找到一个自己习惯的处理能带数据的脚本,so,干脆自己写一个吧
此python脚本需要读取KPOINTS、OUTPUT和EIGENVEL文件,其中KPOINT文件中要求是能带计算的line-mode,并且每个特殊k点的符号也要写上
最后输出band.txt结果,包括k点的序号、符号、累加的距离、k点坐标、及对应各条能带的能量值。
重复的k点已经去掉了,也可以自己修改显示出来。用origin导入就可以直接画图了。
希望大家喜欢,多提意见,多多交流忘记说了,脚本是基于python的,复制到结果所在文件夹,直接执行
./transband.py即可得到band.txt结果文件。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : transband.py
  • 2014-08-26 16:27:05, 3.43 K

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

第一性原理计算 ML相关

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

lfhuang

木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
能带不仅可以提取,还可以按照本征矢进行排序的:
http://blog.sciencenet.cn/home.php?mod=space&uid=345795&do=blog&quickforward=1&id=641013
先进使役材料计算(https://aidme.nimte.ac.cn)
4楼2014-08-26 22:31:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
7楼: Originally posted by xujc1983 at 2014-08-27 09:02:49
xml里的结果太多,如果只是看能带结构的话,我个人觉着直接看ELGENVEL来的省事...

xml处理不麻烦,而且比直接读文本更容易点。
比如读能带的:
xml = etree.ElementTree(file = ‘vasprun.xml’)
def get_spin_polarized(xml):
    ispin = xml.xpath(r'//separator[@name="electronic spin"]/i[@name="ISPIN"]')
    ispin = int(ispin[0].text)
    return ispin == 2
def get_bands(xml, is_spin_polarized):
    band_path = r'//calculation/eigenvalues/array/set/set[@comment="spin {}"]/set[{}]/r'
    high_kpts = xml.xpath(r'//kpoints/generation[@param="listgenerated"]/v')
    kpts = xml.xpath(r'/modeling/kpoints/varray[@name="kpointlist"]/v')
    eigs = []
    for i in xrange(len(kpts)):
        eigs.append(xml.xpath(band_path.format(1, i + 1)))
    if is_spin_polarized:
        for i in xrange(len(kpts)):
            eigs.append(xml.xpath(band_path.format(2, i + 1)))
    bands = []
    dk = 0.0
    def kpdist(i, j):
        ki = [float(i) for i in kpts.text.split()]
        kj = [float(i) for i in kpts[j].text.split()]
        return ((kj[0] - ki[0])**2 + (kj[1] - ki[1])**2 + (kj[2] - ki[2])**2)**0.5
    for i in xrange(len(kpts)):
        if i > 0:
            dk += kpdist(i, i - 1)
        cb = [dk]
        for j in xrange(len(eigs[0])):
            cb.append(float(eigs[j].text.split()[0]))
        if is_spin_polarized:
            for j in xrange(len(eigs[0])):
                cb.append(float(eigs[i + len(kpts)][j].text.split()[0]))
        bands.append(cb)
    lines = []
    if high_kpts:
        ck = high_kpts[0]
        dk = 0.0
        for ik in high_kpts:
            ki = [float(i) for i in ck.text.split()]
            kj = [float(i) for i in ik.text.split()]
            dk += ((kj[0] - ki[0])**2 + (kj[1] - ki[1])**2 + (kj[2] - ki[2])**2)**0.5
            ck = ik
            lines.append(dk)
    return bands, line
这样不论是否用line都不会有问题,而且只要很少修改就能处理fatband的计算。
要夢遊,不要催眠。
8楼2014-08-27 13:28:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

huterx

金虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
真的很厉害 谢谢LZ贡献
2楼2014-08-26 16:46:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

头狼2013

金虫 (正式写手)

顶一个

[ 发自小木虫客户端 ]
3楼2014-08-26 19:38:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
其实算完后直接用xml读取更方便,除了电荷密度波函数,所有计算结果都在里面。
要夢遊,不要催眠。
5楼2014-08-27 08:20:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xujc1983

木虫 (著名写手)

苦逼青椒一枚

引用回帖:
4楼: Originally posted by lfhuang at 2014-08-26 22:31:05
能带不仅可以提取,还可以按照本征矢进行排序的:
http://blog.sciencenet.cn/home.php?mod=space&uid=345795&do=blog&quickforward=1&id=641013

厉害
6楼2014-08-27 09:02:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xujc1983

木虫 (著名写手)

苦逼青椒一枚

引用回帖:
5楼: Originally posted by 绿遍山原 at 2014-08-27 08:20:56
其实算完后直接用xml读取更方便,除了电荷密度波函数,所有计算结果都在里面。

xml里的结果太多,如果只是看能带结构的话,我个人觉着直接看ELGENVEL来的省事
7楼2014-08-27 09:02:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xujc1983

木虫 (著名写手)

苦逼青椒一枚

引用回帖:
8楼: Originally posted by 绿遍山原 at 2014-08-27 13:28:16
xml处理不麻烦,而且比直接读文本更容易点。
比如读能带的:
xml = etree.ElementTree(file = ‘vasprun.xml’)
def get_spin_polarized(xml):
    ispin = xml.xpath(r'//separator/i')
    ispin = int(is ...

强,学习学习
9楼2014-08-27 13:55:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Oristle

新虫 (初入文坛)

很好用,感谢分享
10楼2015-08-28 17:17:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xujc1983 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见