24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1481  |  回复: 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的回帖

sg18408926

至尊木虫 (著名写手)

不错啊
2楼2010-12-26 20:43:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

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的回帖

akakcolin

金虫 (著名写手)

python 是个好语言啊
为人应当诚实正直不能心怀叵测心眼明亮才能迎来幸福避开灾祸盲目者若有人指点才不会迷失道路若单独上路就难以保证不误入岐途
5楼2010-12-27 23:09:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hakuna 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 085404 298分求调剂 +10 呼啦呼啦呼呼呼 2026-04-10 11/550 2026-04-10 16:44 by wangy0907
[考研] 求调剂288 +5 ioodiiij 2026-04-10 7/350 2026-04-10 15:49 by ioodiiij
[考研] 本科211 工科085400 280分求调剂 可跨专业 +9 LZH(等待调剂中 2026-04-10 9/450 2026-04-10 15:12 by hemengdong
[考研] +6 化工专硕323分 2026-04-04 6/300 2026-04-10 10:04 by may_新宇
[考研] 一志愿华中农微生物,288分,三年实验经历 +10 代fish 2026-04-09 10/500 2026-04-10 09:49 by potato妹
[考研] 277求调剂 +19 倪建设 2026-04-06 19/950 2026-04-10 09:24 by guosr9609
[考研] 材料专硕调剂 +16 哈哈哈吼吼吼哈 2026-04-07 17/850 2026-04-09 21:16 by wutongshun
[考研] 0703调剂 +18 拾玖壹 2026-04-04 20/1000 2026-04-09 20:53 by zhouxiaoyu
[考研] 296求调剂 +6 汪!?! 2026-04-09 6/300 2026-04-09 20:49 by lbsjt
[考研] 化学工程与技术专业一志愿哈工程 291分B区 国家级大创负责人 有一作论文 +13 Emmy~ 2026-04-09 13/650 2026-04-09 14:47 by only周
[考研] 085801 总分275 本科新能源 求调剂 +8 bradoner 2026-04-08 9/450 2026-04-09 13:43 by only周
[考研] 求调剂 +15 熊二想上岸 2026-04-06 15/750 2026-04-08 04:53 by 无际的草原
[考研] 计算机11408 287 求调剂 +3 LiLe5 2026-04-07 3/150 2026-04-07 23:15 by shanqishi
[考研] 机械调剂 +3 zzzbcb 2026-04-07 3/150 2026-04-07 22:19 by hemengdong
[考研] 307求调剂 +3 Youth@@ 2026-04-07 3/150 2026-04-07 22:00 by hemengdong
[考研] 305分求调剂 +3 哈_哈_哈_哈_哈 2026-04-04 5/250 2026-04-07 14:49 by 哈_哈_哈_哈_哈
[考研] 求助 +3 卡卡东88 2026-04-06 4/200 2026-04-06 15:28 by going home
[考研] 324求调剂 +3 k可乐 2026-04-05 4/200 2026-04-06 09:54 by 蓝云思雨
[考研] 考研调剂 +4 zybz冲冲冲 2026-04-03 6/300 2026-04-04 13:08 by zybz冲冲冲
[考研] 268求调剂 +8 你好tg 2026-04-03 9/450 2026-04-04 05:08 by gswylq
信息提示
请填处理意见