二维费米面的计算

    技术2024-07-12  72

    在一个矩形区域,求解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-');

     

    Processed: 0.010, SQL: 9