SU(N)平均场Hubbard模型求解代码

nk = 512;                        
k = linspace(0,2*pi,nk);
t = 1;          % 最近邻hooping
U = 1;          % Hubbard系数
mu = 0;         % 化学势1/4填充取值
N = 40;         % N/2是对应的y方向原子个数
m = 4*N;        % 总的原子的个数
T = 0.001;      % 温度
N1avg = 0.25*eye(m);
N2avg = 0.25*eye(m);
N3avg = 0.25*eye(m);
N4avg = 0.25*eye(m);

N1avg(1,1) = 0;
N2avg(1,1) = 0;
N3avg(1,1) = 0;
N4avg(1,1) = 0;

N1avg(2,2) = 0.1;
N2avg(2,2) = 0.3;
N3avg(2,2) = 0.3;
N4avg(2,2) = 0.3;

Ncc = 5;        % 自洽计算迭代次数
band1=zeros(m,nk);
band2=zeros(m,nk);
band3=zeros(m,nk);
band4=zeros(m,nk);

% delta = 0.5;
% Hp = -delta + 2*delta*rand(m,1);
% Hp = diag(Hp);

for ncc = 1:Ncc
    N1avg0=zeros(m,m);                   
    N2avg0=zeros(m,m);                  
    N3avg0=zeros(m,m); 
    N4avg0=zeros(m,m);
    E1avg = 0;
    E2avg = 0;
    E3avg = 0;
    E4avg = 0;
    m1avg = (N1avg-N2avg)/2;
    m2avg = (N1avg+N2avg-2*N3avg)/(2*sqrt(3));
    m3avg = (N1avg+N2avg+N3avg-3*N4avg)/(2*sqrt(6));
    C = 8/5*U*(m1avg.^2+m2avg.^2+m3avg.^2);
    U1 = m1avg/2+m2avg/(2*sqrt(3)) + m3avg/(2*sqrt(6));
    U2 = -m1avg/2+m2avg/(2*sqrt(3))+ m3avg/(2*sqrt(6));
    U3 =  -2*m2avg/(2*sqrt(3)) + m3avg/(2*sqrt(6));
    U4 =  -3*m3avg/(2*sqrt(6));
    for i = 1:nk
        Hk =  Hamiltonian_H0(k(i),t,N,mu);
        [A1,E1] = eig(Hk-16/5*U*U1+C);
        [A2,E2] = eig(Hk-16/5*U*U2+C);
        [A3,E3] = eig(Hk-16/5*U*U3+C);
        [A4,E4] = eig(Hk-16/5*U*U4+C);
        f1 = Fermi_funtion(diag(E1),0,T)';
        f2 = Fermi_funtion(diag(E2),0,T)';
        f3 = Fermi_funtion(diag(E3),0,T)';
        f4 = Fermi_funtion(diag(E4),0,T)';
        fermi_1 = f1(ones(m,1),:);
        fermi_2 = f2(ones(m,1),:);
        fermi_3 = f3(ones(m,1),:);
        fermi_4 = f4(ones(m,1),:);
        N1 = sum(A1.*conj(A1).*fermi_1,2);
        N2 = sum(A2.*conj(A2).*fermi_2,2);
        N3 = sum(A3.*conj(A3).*fermi_3,2);
        N4 = sum(A4.*conj(A4).*fermi_4,2);
        N1avg0 = N1avg0+diag(N1);
        N2avg0 = N2avg0+diag(N2);
        N3avg0 = N3avg0+diag(N3);
        N4avg0 = N4avg0+diag(N4);
        E1avg = E1avg + sum(f1'.*diag(E1));
        E2avg = E2avg + sum(f1'.*diag(E2));
        E3avg = E3avg + sum(f1'.*diag(E3));
        E4avg = E4avg + sum(f1'.*diag(E4));
    end
    N1avg = N1avg0/nk;
    N2avg = N2avg0/nk;
    N3avg = N3avg0/nk;
    N4avg = N4avg0/nk;
    fprintf('已完成第%d次迭代\n',ncc)
end
fprintf("自洽计算完成\n")
density = sum(diag(N1avg)+diag(N2avg)+diag(N3avg)+diag(N4avg));
Eavg = (E1avg + E2avg + E3avg + E4avg)/nk/m;
doping = 1-density/(m-1);
fprintf('总的电子密度%.4f/总的格点数%d\n',density,m)
fprintf('平均电子能量%.4f\n',Eavg);
fprintf('掺杂率%.4f\n',doping);


mu_up = zeros(m,nk);
mu_down = zeros(m,nk);

for i = 1:nk
    Hk =  Hamiltonian_H0(k(i),t,N,mu);
    [A1,E1] = eig(Hk-16/5*U*U1+C);
    [A2,E2] = eig(Hk-16/5*U*U2+C);
    [A3,E3] = eig(Hk-16/5*U*U3+C);
    [A4,E4] = eig(Hk-16/5*U*U4+C);
    mu_up(:,i) = A1(:,N);
    mu_down(:,i) = A2(:,N);
    band1(:,i) = diag(E1);
    band2(:,i) = diag(E2);
    band3(:,i) = diag(E3);
    band4(:,i) = diag(E4);
end
plot(k,band1,'r');
hold on
plot(k,band2,'b');
plot(k,band3,'g');
plot(k,band4,'y');
set(gca,'YLim',[-0.5 0.5]);
set(gca,'XLim',[0 2*pi]);

S1 = (N1avg - N2avg) / 2;
S2 = (N1avg + N2avg - 2 * N3avg ) / 2 / sqrt(3);
S3 = (N1avg + N2avg + N3avg - 3 * N4avg) / 2 / sqrt(6); 
S1 = diag(S1);
S2 = diag(S2);
S3 = diag(S3);

plot(S1(2:32),'-r.')
hold on
plot(S2(2:32),'-g.')
plot(S3(2:32),'-b.')






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值