CDW谱函数数值计算

代码

main

dk = 0.01;
%kx = 0:dk:2.0943952;
%kx = 0:dk:4.18879028;
kx = 0;
eps = -1:0.005:2;
%ky = -3.62759876;
%ky = 0;
ky = 0:dk:3.62759876;
delta = 0.03;
gammar = 0.02;
% E0 = 0;
[E1,E2,Ek,Ekq]= get_E1_and_E2(kx,ky,delta);
A=[];
for e=-1:0.005:2
    A0 = spectral_function(e,E1,E2,Ekq,delta,gammar);
    A = [A;A0];
end
[X,Y] = meshgrid(ky,eps);
mesh(X,Y,A)

对角化计算Ek

function E = get_energy(kx,ky)
n = length(ky);
n
E = zeros(1,n);
for i=1:n
    H=Hamiltonian_TaS2_k(kx,ky(i));
    [~,Ek]=eig(H);
    E(1,i) = Ek(1,1);
end

计算对应的Ek,Ekq,E1,E2

function [E1,E2,Ek,Ekq]= get_E1_and_E2(kx,ky,delta)
%Ek = -cos(kx);
Ek = get_energy(kx,ky);
%Ekq = -cos(kx+pi);
Ekq = get_energy(kx,ky-3.62759876*ones(1,length(ky)));
E1 = (Ek+Ekq)/2 + sqrt((Ek-Ekq).^2/4 + delta^2);
E2 = (Ek+Ekq)/2 - sqrt((Ek-Ekq).^2/4 + delta^2);

计算谱函数,delta函数用归一化的洛伦兹函数近似。

function A=spectral_function(E0,E1,E2,Ekq,delta,gammar)
C1 = 1+delta^2./(E1-Ekq).^2;
C2 = 1+delta^2./(E2-Ekq).^2;
n = length(E1);
E = E0*ones(1,n);
A1 = (gammar/pi)*((E-E1).^2+gammar^2*ones(1,n)).^(-1);
A2 = (gammar/pi)*((E-E2).^2+gammar^2*ones(1,n)).^(-1);
A = A1./C1 + A2./C2;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值