Siesta关于E-k关系计算结果保存于systemlabel.bands文件内,故Matlab程序只需要读取此文档即可。经笔者测试,在siesta-2.0.2与siesta-3.2版本内均可完美运行。

function sband( filename, E_range)

%sband('systemlabel.bands',[RangeOfBandEnergy])

%Read the file 'systemlabel.bands' and plot the band structure from siesta.

%The first argument is a must, while the E_range is of your own choice.

%Edited by JackyTu, July 29, 2014.

%Please contact tuxingchen@pku.edu.cn

fid=fopen(filename);

frewind(fid);

% -------------------- Read --------------------

E_fermi=fscanf(fid,'%f',1);

kmin=fscanf(fid,'%f',1);

kmax=fscanf(fid,'%f',1);

Emin=fscanf(fid,'%f',1);

Emax=fscanf(fid,'%f',1);

nband=fscanf(fid,'%d',1);

spin=fscanf(fid,'%d',1);

k_num=fscanf(fid,'%d',1);

if(nargin<2)

E_range=[Emin,Emax];

end

kp=zeros(k_num,1);

e_data=zeros(nband*spin,k_num);

for i=1:k_num

kp(i)=fscanf(fid,'%f',1);

e_data(:,i)=fscanf(fid,'%f',nband*spin);

end

E_k=zeros(nband,k_num,2);

if spin==2

E_k(:,:,1)=e_data(1:nband,:);

E_k(:,:,2)=e_data((nband+1):end,:);

else

E_k(:,:,1)=e_data;

end

n=fscanf(fid,'%d',1);

fgetl(fid);

for j=1:n

str=fgetl(fid);

str_out=strsplit(strtrim(str));

xtick(j)=str2double(str_out{1});

xtickLabel{j}=str_out{2}(2:end-1);

end

fclose(fid);

% -------------------- Plot --------------------

figure;

if spin==2

subplot(1,2,1);

hold on;

for ii=1:nband

plot(kp,E_k(ii,:,1)-E_fermi,'b');

end

for jj=2:n-1

plot([xtick(jj),xtick(jj)],ylim,'k')

end

set(gca, 'xtick', xtick);

set(gca, 'xticklabel', xtickLabel);

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

axis([xtick(1),xtick(end),E_range]);

plot(xlim,[0,0],'--k');

hold off;

subplot(1,2,2);

hold on;

for ii=1:nband

plot(kp,E_k(ii,:,2)-E_fermi,'r');

end

for jj=2:n-1

plot([xtick(jj),xtick(jj)],ylim,'k')

end

set(gca, 'xtick', xtick);

set(gca, 'xticklabel', xtickLabel);

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

axis([xtick(1),xtick(end),E_range]);

plot(xlim,[0,0],'--k');

hold off;

else

hold on;

for ii=1:nband

plot(kp,E_k(ii,:,1)-E_fermi,'b');

end

for jj=2:n-1

plot([xtick(jj),xtick(jj)],ylim,'k')

end

set(gca, 'xtick', xtick);

set(gca, 'xticklabel', xtickLabel);

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

axis([xtick(1),xtick(end),E_range]);

plot(xlim,[0,0],'--k');

hold off;

end

end

下面是附有运行sband函数后的效果图(此处计算体系为BCC-Fe):

matlab生成计算软件,利用Matlab从第一性原理计算软件Siesta读取和生成能带图相关推荐

  1. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

  2. 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf

    利用matlab进行灰色预测,灰色预测matlab程序,灰色预测模型matlab,matlab灰色预测,matlab灰色预测代码,matlab灰色预测工具箱,灰色预测的matlab程序,matlab灰 ...

  3. matlab计算桁架,利用MATLAB进行桁架结构内力及位移

    disp('----本程序用于计算桁架结构内力及位移----'); disp('以下为本程序所用计算基本数据:'); disp('[L]--结构杆件长度列阵(包括定位向量,即节点编号)'); disp ...

  4. matlab或_如何利用MATLAB计算圆周率

    圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几何形状的关键值. MATLAB中的表 ...

  5. matlab 生成 word 表格,利用MATLAB生成Word文档.doc

    利用MATLAB生成Word文档 function ceshi_Word %利用MATLAB生成Word文档 % ceshi_Word % % Copyright 2009 - 2010 xiezhh ...

  6. matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图

    从很早的版本开始MATLAB就支持对 patch.surface 等对象设定透明属性,有些示意图也必须使用透明的对象才能充分展示所要表达的含义.对透明对象支持最好的通用图片格式就是 .png 了,但是 ...

  7. 用matlab计算稳态误差,利用Matlab求稳态误差的两种方法.

    利用Matlab求稳态误差的两种方法 摘要:稳态误差是系统控制精度或抗扰动能力的一种度量,它是稳态性能的一个重要指标.本文介绍利用Matlab的控制系统工具箱和Simulink工具箱求取系统误差稳态的 ...

  8. matlab水蒸气焓值计算_从第一性原理计算出发来理解含能配合物宏观行为的趋势...

    欢迎关注微信公众平台"计算材料学",微信ID:jisuancailiao 近日,北京理工大学物理学院郭伟课题组(博士研究生孙矗丽)与北京理工大学爆炸科学与技术国家重点实验室.机电学 ...

  9. matlab 断层 体三维重建,利用Matlab实现原木CT断层图像的三维重建

    利用Matlab实现原木CT断层图像的三维重建 运用MATLAB7.0软件中的图象处理工具箱实现了原木C (本文共4页) 阅读全文>> 目的:研究利用初步建立的三维模型确定二维断层图像感兴 ...

  10. matlab 进行非线性回归,5.利用Matlab编程进行非线性回归分析.doc

    5.利用Matlab编程进行非线性回归分析.doc §5. 利用Matlab编程计算非线性回归模型 --以Logistic曲线为例 1.原始数据 下表给出了某地区1971-2000年的人口数据(表1) ...

最新文章

  1. hashMap传入参数,table长度为多少
  2. Balkan2007]Toponyms[链式前向星建字典树+getchar()读入优化]
  3. mysql无级分销_3级分销(mysql存储过程写法)
  4. 国内首款商用LCA软件(eBalance)发布公告及培训通知
  5. 如何在 Flutter 和 Dart 中检查数字字符串
  6. 最新版Xshell 6安装教程详解
  7. 已知可生成0~4的rand5(),实现生成0~6的rand7()
  8. 《你好李焕英》票房反超《唐探3》 成中国影史票房第五
  9. C语言学习笔记---001C语言的介绍,编译过程原理,工具等
  10. Matlab imcrop函数功能小结(20190123)
  11. Mvc 前台 匿名对象
  12. 20189307《网络攻防》第五周作业
  13. python3.7怎么设置字体大小,python字体大小如何设置
  14. 详解散度、旋度(二维、三维)
  15. 收藏 | 绝不能错过的24个顶级Python库
  16. 迅捷路由器造成计算机无法上网,迅捷FAST无线路由器设置好了却上不了网现象的原因及解决方法介绍...
  17. 正则表达式(第1部分) - 基本语法
  18. 尚融宝28-投资列表展示
  19. Go:包管理工具GOPATH、vendor、dep 、go module
  20. Column ‘‘ in field list is a ambiguous

热门文章

  1. 施耐德plc与组态王连接
  2. 通过ffmpeg获取视频时长
  3. Twain Capabilities 转
  4. 低成本[200元以下]打造分布式WIFI
  5. java编写一个汽车出租管理程序_怎么用java做汽车出租管理程序
  6. 第14课 Altium Designer20(AD20)+VESC6.4实战教程:PCB总体布局介绍(北冥有鱼)
  7. 用Echarts绘制饼状图
  8. STM32单片机移植SD卡FATFS文件系统
  9. centos7安装在NAT网络模式下无网络,显示“以太网(ens33)被拔出“?
  10. Hadoop审计日志配置[转自 AIMP平台wiki]