Graphene Nanoribbon Band Structure Plot in Matlab: Bug Fixes Included

  • Context: MATLAB 
  • Thread starter Thread starter anahita
  • Start date Start date
  • Tags Tags
    Graphene
Click For Summary

Discussion Overview

The discussion revolves around a MATLAB program for plotting the band structure of zigzag graphene nanoribbons, focusing on potential bugs and the clarity of the code. Participants are exploring the implementation of the tight binding model and its application to calculate the structure under strain, as well as the density of states.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant shares a MATLAB code for plotting the band structure of zigzag graphene nanoribbons and requests help with potential bugs.
  • Several participants question the clarity of the program and the expected outcomes, noting the lack of explanation regarding the goals of the calculations.
  • One participant expresses concern about the density of states being incorrect and seeks clarification on the methods used in the program.
  • Another participant points out that the program is based on the tight binding model but requests more details about the specific methods and approximations used, such as whether it employs nearest neighbor interactions.
  • A participant mentions that the unit cell contains 2N0 carbon atoms, leading to a 2N0x2N0 integral matrix for the Hamiltonian, developed under the first nearest neighbor assumption.

Areas of Agreement / Disagreement

Participants generally agree that the program lacks clarity and that more details about the methods used are necessary. However, there is no consensus on the correctness of the code or the results, as multiple competing views and uncertainties remain regarding the implementation and expected outcomes.

Contextual Notes

Participants highlight limitations in the provided code, including unclear commands and the need for a more thorough explanation of the physical methods and approximations used in the calculations.

anahita
Messages
27
Reaction score
0
Hi
I have plot band structure zigzag graphene nanoribbons with Matlab.
I do not know if it is properly written program anyone can help Bug fixes.

Matlab:
NU=10; % Number of atoms
Nbnd=4*NU; % number of bands
aa=2.26;
a=sqrt(3)*aa;
Csoc=0.0;

X(1)=0;
Y(1)=0;
for ixy=2:NU
  if mod(ixy,4)==2
  X(ixy)=X(ixy-1)-aa*cosd(30);
  Y(ixy)=Y(ixy-1)+aa*sind(30);
  end
  if mod(ixy,4)==3
  X(ixy)=X(ixy-1);
  Y(ixy)=Y(ixy-1)+aa;
  end
  if mod(ixy,4)==0
  X(ixy)=X(ixy-1)+aa*cosd(30);
  Y(ixy)=Y(ixy-1)+aa*sind(30);
  end
  if mod(ixy,4)==1
  X(ixy)=X(ixy-1);
  Y(ixy)=Y(ixy-1)+aa;
  end
end

for iz=1:NU
if mod(iz,2)==1
Z(iz)=0.45;
else
Z(iz)=-0.45;
end

end

sho=0;
for is=[0,-1,1]
  for ks=1:NU
  sho=sho+1;
  XT(sho)=X(ks)+is*a;
  YT(sho)=Y(ks);
  ZT(sho)=Z(ks);
  Ax(sho)=is*a;
  No(sho)=ks;
  end
end
figure(1)
plot(XT,YT,'*')
Ax=Ax/a;

for ik=1:101
K(ik)=-pi+(ik-1)*((2*pi)/100);

H=H0(Nbnd);

for is=1:NU
  for js=1:sho
  dis=sqrt(((XT(is)-XT(js))^2)+((YT(is)-YT(js))^2));
  if abs(dis-2.26)<0.1 & abs(No(is)-No(js))>0
  l=(XT(is)-XT(js))/dis;
  m=(YT(is)-YT(js))/dis;
  n=(ZT(is)-ZT(js))/dis;
  h=hamiltonian(l,m,n);

  H((No(is)-1)*4+1:No(is)*4,(No(js)-1)*4+1:No(js)*4)=H((No(is)-1)*4+1:No(is)*4,(No(js)-1)*4+1:No(js)*4)+h*exp(i*K(ik)*Ax(js));
 
  end
  end
 
end

E(ik,1:Nbnd)=sort(real(eig(H)));

pl(ik)=(ik-1)/100;

end

figure(2)
plot(E)
The functions h and H0 attached.
function [h] = hamiltonian(l,m,n)

  h=zeros(4,4);
  tsss=-2.08;
  tsps=2.48;
  tpps=2.72;
  tppp=-0.72;
  
  % gharar dad ----->% S, Px, Py, Pz
  %  S, Px, Py, Pz
  %1  2  3  4  
  h(1,1)=tsss;
  h(1,2)=l*tsps;
  h(1,3)=m*tsps;
  h(1,4)=n*tsps;
  
  h(2,1)=-(l*tsps)';
  h(2,2)=l*l*tpps+(1-l*l)*tppp;
  h(2,3)=l*m*tpps-l*m*tppp;
  h(2,4)=l*n*tpps-l*n*tppp;
  
  h(3,1)=-(m*tsps)';
  h(3,2)=(l*m*tpps-l*m*tppp)';
  h(3,3)=m*m*tpps+(1-m*m)*tppp;
  h(3,4)=m*n*tpps-m*n*tppp;
  
  h(4,1)=-(n*tsps)';
  h(4,2)=(l*n*tpps-l*n*tppp)';
  h(4,3)=(m*n*tpps-m*n*tppp)';
  h(4,4)=n*n*tpps+(1-n*n)*tppp;
end
and
function [H0] = H0(Nbnd)
Es=-4.2;
Ep=1.715;
H0=zeros(Nbnd);
for ih0=1:Nbnd
if mod(ih0,4)==1
  H0(ih0,ih0)=Es;
else
  H0(ih0,ih0)=Ep;
end
end
 
Last edited by a moderator:
Physics news on Phys.org
Does it do what you expect it to do? Without an explanation of what you are trying to achieve, it is very hard to judge if something is correct or not.
 
DrClaude said:
Does it do what you expect it to do? Without an explanation of what you are trying to achieve, it is very hard to judge if something is correct or not.
I want to calculate structure graphene nanoribbons under strain, but the density of states thinks is wrong.
 
anahita said:
I want to calculate structure graphene nanoribbons under strain, but the density of states thinks is wrong.
Your program is not clear. You have to at least clarify which method you have used.
 
hokhani said:
Your program is not clear. You have to at least clarify which method you have used.
The program is written using the tight binding model.
 
anahita said:
The program is written using the tight binding model.
Ok, right. But the commands are not clear and it seems that you take 4 orbitals s and p (in gharadrad) and also some other details are not clear.To interpret a program you should bring the algorithm or the exact physical method you have used. For example I can not realize which bases you have taken into account for your Tight Binding calculation and what is the approximation (nearest neighbor, second,...). If your problem is with programming you should ask it in "Math software and Latex".If you want to check the accuracy of the result you can compare with the prepared results in many sites such as http://demonstrations.wolfram.com/ElectronicBandStructureOfArmchairAndZigzagGrapheneNanoribbon/.
 
hokhani said:
Ok, right. But the commands are not clear and it seems that you take 4 orbitals s and p (in gharadrad) and also some other details are not clear.To interpret a program you should bring the algorithm or the exact physical method you have used. For example I can not realize which bases you have taken into account for your Tight Binding calculation and what is the approximation (nearest neighbor, second,...). If your problem is with programming you should ask it in "Math software and Latex".If you want to check the accuracy of the result you can compare with the prepared results in many sites such as http://demonstrations.wolfram.com/ElectronicBandStructureOfArmchairAndZigzagGrapheneNanoribbon/.
What is meant by the following statement? " I can not realize which bases you have taken into account for your Tight Binding calculation"
I have used nearest neighbour approximation.
 
anahita said:
What is meant by the following statement? " I can not realize which bases you have taken into account for your Tight Binding calculation"
I have used nearest neighbour approximation.
I meant which bases you have taken for the Hamiltonian. As I said earlier, this problem requires that details to be explained entirely.
 
hokhani said:
I meant which bases you have taken for the Hamiltonian. As I said earlier, this problem requires that details to be explained entirely.
The unit cell contains 2N0 carbon atoms which leads to a 2N0x2N0 integral matrix H. matrices developed for the unit cell based on the first nearest neighbour assumption.
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
26K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 2 ·
Replies
2
Views
11K
  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 150 ·
6
Replies
150
Views
21K
  • · Replies 52 ·
2
Replies
52
Views
13K
  • · Replies 175 ·
6
Replies
175
Views
27K