24小时热门版块排行榜    

查看: 3725  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 听说今天filecode变了 +20 布布和一二 2026-08-06 35/1750 2026-08-07 08:24 by 2549091707
[基金申请] 固定端突然变了,今天 +4 archvillain 2026-08-06 8/400 2026-08-07 08:06 by 带你看大海
[基金申请] filecode +11 等待解的谜 2026-08-06 15/750 2026-08-07 07:51 by wittywong
[基金申请] 基金中了 +8 laoda193707 2026-08-06 8/400 2026-08-07 07:37 by emeraldine
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 ANUsWpSnuWQD 2026-08-06 4/200 2026-08-07 04:46 by nSM3ys5fefM3
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 6/300 2026-08-06 20:19 by 苏知砚
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见