24小时热门版块排行榜    

查看: 1680  |  回复: 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的回帖

gavinliu7390

木虫 (著名写手)

叶落鹰飞


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

westmonster

金虫 (正式写手)

pylab是嘛?孤陋寡闻了,改改还是能用的,谢谢楼主分享。
蝉,于其脱壳展翅,则蛰居地下,似无声无息,实则以备有所为。
4楼2010-12-27 12:54:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

akakcolin

金虫 (著名写手)

python 是个好语言啊
为人应当诚实正直不能心怀叵测心眼明亮才能迎来幸福避开灾祸盲目者若有人指点才不会迷失道路若单独上路就难以保证不误入岐途
5楼2010-12-27 23:09:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 怎么看青基中了没有啊 +3 叶九微 2026-08-26 3/150 2026-08-26 10:38 by LemmonTr
[基金申请] 国合里面能看到了 +6 一怀馨秋 2026-08-26 6/300 2026-08-26 10:19 by guo2070
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 13/650 2026-08-26 09:48 by wittyboy
[基金申请] 出来了 +8 trojank 2026-08-26 8/400 2026-08-26 09:00 by gxc
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 范进中举一文的中心思想 +8 炎黄贵胄 2026-08-22 9/450 2026-08-26 07:47 by WASM
[基金申请] 2026国自然函评费到账 +21 羊腰板 2026-08-21 24/1200 2026-08-26 07:20 by finnigan
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 有没有大神帮我看看基金代码 28+4 1234567wang 2026-08-24 10/500 2026-08-25 19:15 by lfy8008
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 22/1100 2026-08-25 15:36 by 医学老男孩
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +3 苏东坡二世 2026-08-23 3/150 2026-08-25 10:35 by shisan1313
[基金申请] 我面上完蛋了 +13 且听虎啸 2026-08-20 14/700 2026-08-25 09:10 by mrkang
[基金申请] 只有每年这种时候来逛逛小木虫 +25 yaoyewhu2008 2026-08-20 27/1350 2026-08-25 08:01 by Equinoxhua
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
信息提示
请填处理意见