24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 3414  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿食品科学与工程083200求调剂 +3 XQTJZ 2026-03-30 3/150 2026-03-31 00:02 by jp9609
[考研] 理学07化学 303求调剂 +4 睿08 2026-03-27 4/200 2026-03-30 23:29 by yujianx
[考研] 303求调剂 +7 DLkz1314. 2026-03-30 7/350 2026-03-30 21:07 by peike
[考研] 277跪求调剂 +8 1915668 2026-03-27 12/600 2026-03-30 21:01 by dophin1985
[考研] 329求调剂,一志愿西北工业大学,材料工程(085601) +5 小小机灵虫 2026-03-29 11/550 2026-03-30 15:02 by Wang200018
[考研] 0703本科郑州大学求调剂 +7 nhj_ 2026-03-25 7/350 2026-03-30 12:44 by fangnagu
[考研] 337求调剂 +6 《树》 2026-03-29 6/300 2026-03-30 10:15 by herarysara
[考研] 调剂310 +12 温柔的晚安 2026-03-25 13/650 2026-03-29 20:01 by 无际的草原
[考研] 考研调剂 +7 小蜡新笔 2026-03-29 7/350 2026-03-29 19:00 by 学员8dgXkO
[考研] 299求调剂 +10 15188958825 2026-03-25 10/500 2026-03-29 17:51 by 王亮_大连医科大
[考研] 本科双非材料,跨考一志愿华电085801电气,283求调剂,任何专业都可以 +6 芝士雪baoo 2026-03-28 8/400 2026-03-29 08:16 by 松花缸1201
[考研] 调剂求院校招收 +6 鹤鲸鸽 2026-03-28 6/300 2026-03-29 08:15 by fmesaito
[考研] 085602 化工专硕 338分 求调剂 +12 路痴小琪 2026-03-27 12/600 2026-03-28 15:41 by L135790
[考研] 070300求调剂306分 +4 26要上岸 2026-03-27 4/200 2026-03-28 13:06 by 唐沐儿
[考研] 265求调剂 +8 小木虫085600 2026-03-27 8/400 2026-03-27 22:16 by 无际的草原
[考研] 266分求材料化工冶金矿业等专业的调剂 +4 哇呼哼呼哼 2026-03-26 4/200 2026-03-27 17:02 by zhyzzh
[考研] 求调剂 一志愿 本科 北科大 化学 343 +6 13831862839 2026-03-24 7/350 2026-03-26 22:57 by 不吃魚的貓
[考研] 中国科学院深圳先进技术研究院-光纤传感课题组招生-中国科学院大学、深圳理工大学联培 +5 YangTyu1 2026-03-26 5/250 2026-03-26 18:27 by 猫咪猫咪呀
[考研] 化学调剂一志愿上海交通大学336分-本科上海211 +4 小鱼爱有机 2026-03-25 4/200 2026-03-26 10:19 by aa331100
[考研] 300分,材料,求调剂,英一数二 +5 超赞的 2026-03-24 5/250 2026-03-24 21:07 by 星空星月
信息提示
请填处理意见