weixin_44840906 2024-05-23 15:32 采纳率: 0%
浏览 128

2DSSH模型角态代码

2维SSH模型的拓扑角态的matlab代码,运行出的结果类似这种。不太懂的地方是二维的哈密顿量矩阵是用张量积构成的,他和实空间的原胞位置是怎样对应的。

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-23 15:33
    关注

    引自免费微信小程序:皆我百晓生

    在MATLAB中实现2D SSH(Su-Schrieffer-Heeger)模型的角动量计算,首先我们需要定义SSH模型的哈密顿量。SSH模型是一个一维周期性的链,每个单元格有两个原子(A和B)。在二维情况下,我们可以将这个链扩展到两个维度,形成一个网格,其中每个网格点由A和B两种类型的原子组成。

    二维SSH模型的哈密顿量可以表示为张量积的形式,即H = H_x kron I_y + I_x kron H_y,其中kron代表张量积,H_xH_y分别是一维SSH模型在x和y方向上的哈密顿量,而I_xI_y是相应方向上的单位矩阵。

    对于一维SSH模型,其哈密顿量通常采用以下形式(以紧束缚模型为例):

    [ H_x(k) = \begin{pmatrix} 0 & t_1 - te^{ik} \ t_1 - te^{-ik} & 0 \end{pmatrix}, ] 其中t1是相邻同种原子之间的键合强度,t是相邻异种原子之间的键合强度,k是动量量子数。

    接下来,我们将展示如何在MATLAB中构建并求解二维SSH模型的哈密顿量,并计算其角动量。

    % 定义参数
    t1 = 1; % 同种原子间的键合强度
    t = 0.5; % 异种原子间的键合强度
    Lx = 4; % x方向的周期数
    Ly = 3; % y方向的周期数
    
    % 计算总的动量量子数数量
    Nkx = Lx * 2 * pi / (2 * pi); % kx的数量
    Nky = Ly * 2 * pi / (2 * pi); % ky的数量
    
    % 初始化空数组存储能量和角动量
    energies = zeros(Nkx, Nky);
    angular_momenta = zeros(Nkx, Nky);
    
    % 循环遍历所有动量量子数
    for kx = linspace(0, 2*pi, Nkx)
        for ky = linspace(0, 2*pi, Nky)
            % 构建一维SSH模型的哈密顿量
            Hx = [0, t1-t*exp(1i*kx); t1-t*exp(-1i*kx), 0];
            
            % 构建二维SSH模型的哈密顿量
            Hy = kron(Hx, eye(2)); % y方向的哈密顿量是单位矩阵乘以Hx
            Hz = kron(eye(2), Hx); % z方向的哈密顿量与x相同
            
            % 总哈密顿量
            H_total = Hz + Hy;
            
            % 求解总哈密顿量的本征值和本征向量
            [E, V] = eig(H_total);
            
            % 提取最低能带的能量和角动量
            energies(kx, ky) = E(1);
            angular_momenta(kx, ky) = mean(diag(V'*[0;1]*V)); % 角动量计算,这里假设角动量是z分量
        end
    end
    
    % 绘制结果
    figure;
    surf(kx, ky, energies);
    xlabel('kx');
    ylabel('ky');
    zlabel('Energy');
    title('Energy bands of 2D SSH model');
    
    figure;
    surf(kx, ky, angular_momenta);
    xlabel('kx');
    ylabel('ky');
    zlabel('Angular Momentum');
    title('Angular Momentum Distribution of 2D SSH model');
    

    这段代码首先定义了SSH模型的参数,然后通过循环遍历所有的动量量子数kxky,计算每个点的哈密顿量、能量和角动量。最后,我们使用surf函数绘制了能量带和角动量分布的三维图。

    注意:这个角动量的计算方法依赖于特定的基底选择,此处我们选择了简单的 [0; 1] 基底,实际应用中可能需要根据具体问题调整。此外,对于角动量的理解可能需要一些量子力学的基础知识,它通常与系统的对称性有关。在这个例子中,我们简单地计算了低能带波函数的平均角动量作为示例。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日