%FigC_3a.m
%Essential Electron Transport for Device Physics
%Graphene band structure
%
clear all
clf;		
%plotting parameters + fontsizes
FS      = 12;	%label fontsize
FSN     = 12;	%number fontsize
LW      = 1;	%linewidth

% Change default axes fonts.
set(0,'DefaultAxesFontName', 'Times');
set(0,'DefaultAxesFontSize', FSN);

% Change default text fonts.
set(0,'DefaultTextFontname', 'Times');
set(0,'DefaultTextFontSize', FSN);

hbarChar=['\fontname{MT Extra}h\fontname{Times}'];

hbar=1.0545715e-34;		%Planck's constant (Js)
echarge=1.6021764e-19;	%electron charge (C)
m0=9.109382e-31;		%bare electron mass (kg)

% E-k dispersion of Graphene
%------------ Input parameters ---------------------%
E0 = 0;     % coloumb integral
V = -2.55;   % hopping integral [eV]
acc = 1.41; % c-c bond length [Angstrom]
lattice = acc*sqrt(3); % Lattice constant
% Creating k-vectors
k_vec_x = linspace(-2*pi/lattice,2*pi/lattice,100);
k_vec_y = linspace(-2*pi/lattice,2*pi/lattice,100);
[k_mesh_x,k_mesh_y] = meshgrid(k_vec_x, k_vec_y);
% Energy values with the preset parameters
energy_mesh = NaN([size(k_mesh_x,1),size(k_mesh_y,2),2]);
for a = 1 : size(k_mesh_x,1)
    energy_mesh(:,a,1) = (E0 + V*sqrt(1 + ...
        (4.*((cos(k_mesh_y(:,a)/2*lattice)).^2)) + ...
        (4.*(cos(sqrt(3)/2*lattice*k_mesh_x(:,a))).*...
        (cos(k_mesh_y(:,a)/2*lattice)))));

    energy_mesh(:,a,2) = (E0 - V*sqrt(1 + ...
        (4.*((cos(k_mesh_y(:,a)/2*lattice)).^2)) + ...
        (4.*(cos(sqrt(3)/2*lattice*k_mesh_x(:,a))).*...
        (cos(k_mesh_y(:,a)/2*lattice)))));

end
% Plotting
ttl=['\rmFigC.3a, \itt\rm_{hop,1} = ',num2str(V,'%3.2f'),' eV'];

surf(k_mesh_x, k_mesh_y, real(energy_mesh(:,:,1)));
hold on
surf(k_mesh_x, k_mesh_y, real(energy_mesh(:,:,2)));
colormap('jet');
shading interp
hx = xlabel('\itk_x\rm');
hy = ylabel('\itk_y\rm');
hz = zlabel('\itE_k\rm (eV)');
% axis equal
hold off
title (ttl);