24小时热门版块排行榜    

查看: 1688  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hakuna

木虫 (知名作家)

[交流] 【分享】一个绘制band的python小程序 已有4人参与

网上淘来的,向作者致敬!
不做能带,不懂python,未经测试
原文地址:http://people.vanderbilt.edu/~brandon.g.cook/vaspbandplot/vband.py
CODE:
!/usr/bin/env python

#make a simple plot of band structure from vasp calculation
# -Brandon Cook April 7, 2010

from numpy import *
import pylab

class OUTCAR():
    def __init__(self):

        f = open('OUTCAR', 'r')
        s = f.read()
        f.close()
        
        i = s.find('E-fermi')
        self.ef = float(s[i:i+19].split()[-1])
        
        i = s.find('NBANDS')
        self.nbands = int(s[i:i+15].split()[-1])

        i = s.find('NKPTS')
        self.nkpts = int(s[i:i+15].split()[-1])



class KPOINTS():
    def __init__(self):
        # kpts file should be in line mode
        # only take 1 line for now

        f = open('KPOINTS', 'r')
        s = f.readlines()
        f.close()
        
        l1 = s[-2].split()
        l2 = s[-1].split()

        self.p1 = array([ l1[0], l1[1], l1[2] ], float)
        self.p2 = array([ l2[0], l2[1], l2[2] ], float)

class BandStructure():
    # Just take all the points and make a scatter plot
    # todo: connect the lines

    def __init__(self):
        f = open('EIGENVAL', 'r')
        s = f.readlines()
        f.close()
        
        oc = OUTCAR()
        kp = KPOINTS()

        axis = kp.p2 - kp.p1
        axis /= linalg.norm(axis)

        nbands = oc.nbands
        nkpts  = oc.nkpts
        
        kpts = zeros( nkpts*nbands )
        en   = zeros( nkpts*nbands )

        istart = 7
        for k in range(0, nkpts):
            ik = istart + k*(nbands+2)
            kpt = s[ik].split()
            
            kpt = array([kpt[0], kpt[1], kpt[2]], float)
            
            x = dot(kpt, axis)
            
            i1 = k*nbands
            i2 = (k+1)*nbands
            kpts[i1:i2] = x

            for ib in range(0, nbands):
                j1 = ik + 1 + ib
                j2 = i1 + ib
                en[j2] = float(s[j1].split()[-1])


        pylab.scatter(kpts, en, s=1)

        # add a line for the fermi energy
        xmin = 0.0
        xmax = linalg.norm(kp.p2 - kp.p1)
        x = linspace(xmin, xmax, num=100, endpoint=True)
        y = oc.ef * ones(100)
        pylab.plot(x,y)

        pylab.show()


o = OUTCAR()
print 'fermi energy, nbands, nkpts'
print o.ef,o.nbands,o.nkpts


b = BandStructure()

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

akakcolin

金虫 (著名写手)

python 是个好语言啊
为人应当诚实正直不能心怀叵测心眼明亮才能迎来幸福避开灾祸盲目者若有人指点才不会迷失道路若单独上路就难以保证不误入岐途
5楼2010-12-27 23:09:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

gavinliu7390

木虫 (著名写手)

叶落鹰飞


小木虫(金币+0.5):给个红包,谢谢回帖交流
执行不了, 错误很多。
真理是一点点接近的!
3楼2010-12-27 10:44:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

westmonster

金虫 (正式写手)

pylab是嘛?孤陋寡闻了,改改还是能用的,谢谢楼主分享。
蝉,于其脱壳展翅,则蛰居地下,似无声无息,实则以备有所为。
4楼2010-12-27 12:54:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 wsYGJnURYvm6 2026-08-31 3/150 2026-09-01 01:52 by o3EMxHUAQDtS
[基金申请] 怎么看青基中了没有啊 +6 叶九微 2026-08-26 6/300 2026-08-31 23:54 by yudaoqian88
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 EZ67DG6CvcKL 2026-08-31 3/150 2026-08-31 22:23 by o3EMxHUAQDtS
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 21:30 by xiangy672
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +6 yuleib84 2026-08-26 7/350 2026-08-31 19:46 by 鱼翔浅底1
[文学芳草园] 梦想 +5 myrtle 2026-08-26 5/250 2026-08-31 14:40 by hahaboy
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
信息提示
请填处理意见