二維費米麪的計算

在一個矩形區域,求解Tight-Bindind能帶, 然後在第一布里淵區內,使用matlib函數,截取等高線即可。

function H=Hamiltonian_TaS2_k(kx,ky)
e1 = 1.4052;
e2 = 1.3440;
t0 = -0.1046;
t11 = 0.2406;
t22 = -0.5320;
t2 = -0.3701;
rt3 = sqrt(3);
a = 0.5*kx;
b = rt3/2*ky;
h0 = 2*t0*(cos(2*a)+2*cos(a)*cos(b))+e1;
h1 = -2*rt3*t2*sin(a)*sin(b);
h2 = 2*t2*(cos(2*a)-cos(a)*cos(b));
h11 = 2*t11*cos(2*a)+(t11+3*t22)*cos(a)*cos(b)+e2;
h22 = 2*t22*cos(2*a)+(3*t11+t22)*cos(a)*cos(b)+e2;
h12 = rt3*(t22-t11)*sin(a)*sin(b);
H = [h0,h1,h2;h1',h11,h12;h2',h12',h22];
dk = 0.1;
Es =[];
for kx=-2*pi:dk:2*pi
    for ky = -2*pi:dk:2*pi
        Hk=Hamiltonian_TaS2_k(kx,ky);
        [~,Ek]=eig(Hk);
        Es = [Es, diag(Ek)];
    end
end
kx=-2*pi:dk:2*pi;
ky=-2*pi:dk:2*pi;
[kX,kY]=meshgrid(kx,ky);
dim = size(Es);
for i = 1:1
    En = reshape(Es(i,:),length(kx),length(kx));
%     mesh(kX,kY,En)
%     hold on;
end
Ef=0;
[C,h] = contour(kX,kY,En,[Ef,-0.3,0.35]);
% [C,h] = contour(kX,kY,En,Ef);
set(h, 'ShowText', 'on', 'TextStep', get(h,'LevelStep')*2);
hold on
% Ef=0.3;
% % [C,h] = contour(kX,kY,En,[Ef,Ef,Ef]);
% % set(h, 'ShowText', 'on', 'TextStep', get(h,'LevelStep')*2);
a = 4.18879028;
theta = linspace(0,2*pi,7);
plot(a*cos(theta),a*sin(theta),'r-');

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章