24小时热门版块排行榜    

查看: 4922  |  回复: 6
【奖励】 本帖被评价3次,作者byin增加金币 2
本帖产生 1 个 1ST强帖 ,点击这里进行查看

byin

铜虫 (正式写手)


[资源] 用matlab脚本绘制vasp中的能带图

把EIGENVAL和.m脚本放一起,修改脚本里的一些参数“手动修改区”,然后运行脚本即可。见笑了。


%%%%%%%%%%%%%%%%%%%% 此脚本用于VASP的能带绘制 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear
%%%%%%%%%%%%%%%%%%%%%%%%%%% 手动修改区 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

EFermi=6.1748;                  %设置费米能级
NBands=8;                       %一共计算的能带数目
inter=100;                      %每段PATH的插值点数目
NPath=4;                        %PATH数目
Ktotal=inter*NPath;             %特殊K点的总数目

xmin=1;                         %x,y坐标轴的范围
xmax=Ktotal;
ymin=-6;
ymax=7;

kpath={'L','\Gamma' ,'X','K','\Gamma'};         %设置K空间的路径

%%%%%%%%%%%%%%%%%%%%%%%%%% 图像边框 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

A4 = figure('PaperType','a4letter','PaperSize',[20.98 29.68]);
axes1 = axes('Parent',A4,'Position',[0.2 0.1 0.6 0.8],'LineWidth',1.5,'FontSize',15.0,'FontWeight','bold');         %Position [left bottom width height]
box(axes1,'on');
hold(axes1,'all');

%%%%%%%%%%%%%%%%%%%%%%%%%%% 数据读取 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

data=textread('EIGENVAL','','headerlines',7);

for i=1:1:NBands,
    for j=1:1:Ktotal,
        P(j,: )=[j,data((NBands+1)*(j-1)+1+i,2)-EFermi];         %读出每条能带的数据(每个i中的各个j),做出曲线
    end
   
    plot(P(:,1),P(:,2),'-r.');
    hold on   
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%% 坐标轴设置 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

axis([xmin xmax ymin ymax]);
set(gca,'XTick',[1,inter:inter:Ktotal])
set(gca,'XTickLabel','')

j=1;                                %高对称点符号
for i=[1,inter:inter:Ktotal]
    text(i,ymin-0.7,kpath(j),'FontSize',18, 'horizontalAlignment', 'center')
    j=j+1;
end

ylabel('E-E_F (eV)');

X=[xmin xmax];                 %辅助线 - 水平
Y=[0 0];
line(X,Y,'LineWidth',1.5,'Color',[0 0 0])

for i=1:1: (NPath-1)            %辅助线 - 垂直
    X=[i*inter i*inter];
    Y=[ymin ymax];
    line(X,Y,'LineWidth',1.5,'Color',[0 0 0]);
end

print -dpng Band_Structure_of_              %输出图像文件

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[ Last edited by byin on 2011-5-30 at 21:27 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

lrjhxh

木虫 (小有名气)


★★★ 三星级,支持鼓励

请问怎么会出现以下错误:
?? Attempted to access data(731,2); index out of bounds because
size(data)=[728,4].

Error in ==> bandstructure at 31
        P(j,: )=[j,data((NBands+1)*(j-1)+1+i,2)-EFermi];
        %读出每条能带的数据(每个i中的各个j),做出曲线
2楼2011-06-01 19:52:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

byin

铜虫 (正式写手)


引用回帖:
Originally posted by lrjhxh at 2011-06-01 19:52:25:
请问怎么会出现以下错误:
?? Attempted to access data(731,2); index out of bounds because
size(data)=[728,4].

Error in ==> bandstructure at 31
        P(j,: )=[j,data((NBands+1)*(j-1)+1+i,2 ...

对不起,可能有bug,请将EIGNVAL发送到我邮箱,我试试看。

byin87@gmail.com
3楼2011-06-01 21:15:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lrjhxh

木虫 (小有名气)


重新试过了,可以了,但图不好看,还需要不断改进才行。谢谢
4楼2011-06-03 11:57:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lrjhxh

木虫 (小有名气)


看来问题还是不能解决。请问VASP计算之后的输出结果中,EIGENVAL中的第一~第三行表示什么意思?画图时各高对称K点的坐标是如何定义的?怎样转换各K点的坐标来画图?你所提供的脚本中,读出每条能带的数据算法是怎样的?从CHGCAR中获得电荷密度图的Matlab脚本有没有?你是通常使用什么工具进行输出结果的分析?谢谢!
5楼2011-11-05 21:46:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

白小纸bql

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

这个星级是给lz评价么?
额,,正题,,lz您好~我是一只新虫子,谢谢您写的程序~好顶赞。
但是我有两个问题,一是不同高对称点之间的间距应该会不同,这个程序处理出来时均匀的;另一个可能是精度的问题,我在用这个程序处理石墨烯能带的时候,在Dirac锥处出现了平直部分;
lz能帮忙解决一下上面两个问题么?感激不尽!
用matlab脚本绘制vasp中的能带图
g.png

7楼2014-07-01 20:13:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
2014-05-01 10:57   回复  
三星好评  
相关版块跳转 我要订阅楼主 byin 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见