探索紧束缚模型中的二维SSH模型:从能带、边界态到角态
紧束缚模型中的二维SSH模型,包含原胞能带,边界态,角态以及边界态本征态分布

在凝聚态物理领域,紧束缚模型为我们理解材料的电子结构提供了有力的框架。今天咱们就聚焦其中的二维SSH模型,深入探究原胞能带、边界态、角态以及边界态本征态分布这些有趣的概念。
二维SSH模型基础
二维SSH模型是在紧束缚近似下构建的,它描述了电子在二维晶格上的运动。想象一个由两种不同原子组成的二维晶格,电子在原子间跳跃,这种跳跃用紧束缚近似来描述,相邻原子间的跳跃积分决定了电子的行为。

紧束缚模型中的二维SSH模型,包含原胞能带,边界态,角态以及边界态本征态分布

为了在代码层面实现这个模型,我们可以使用Python结合numpy库来处理矩阵运算。以下是构建二维SSH模型哈密顿量的简单代码片段:
import numpy as np
def construct_hamiltonian(Lx, Ly, t1, t2):
N = Lx * Ly
H = np.zeros((N, N), dtype=complex)
for i in range(Lx):
for j in range(Ly):
index = i * Ly + j
# 最近邻跳跃
if i < Lx - 1:
H[index, index + Ly] = t1
H[index + Ly, index] = np.conj(t1)
if j < Ly - 1:
H[index, index + 1] = t2
H[index + 1, index] = np.conj(t2)
return H
这里,Lx和Ly分别是晶格在x和y方向的尺寸,t1和t2是不同方向的跳跃积分。这段代码通过遍历晶格中的每个格点,根据跳跃规则填充哈密顿量矩阵。
原胞能带
原胞能带反映了电子在周期性晶格中的能量分布。我们可以通过计算哈密顿量的本征值来得到能带结构。在代码中,这可以借助numpy的linalg.eigh函数实现:
Lx = 10
Ly = 10
t1 = 1.0
t2 = 0.8
H = construct_hamiltonian(Lx, Ly, t1, t2)
eigenvalues, eigenvectors = np.linalg.eigh(H)
通过计算得到的eigenvalues就是系统的能量本征值,对应着原胞能带。我们可以将这些能量值绘制成能带图,直观地看到电子的能量分布情况。不同的跳跃积分t1和t2会导致能带结构发生变化,例如能隙的开合。如果t1和t2差异较大,可能会出现较宽的能隙,这对材料的电学性质有着重要影响。
边界态
边界态是指在系统边界处局域化的电子态。在二维SSH模型中,边界态的出现与系统的拓扑性质相关。为了研究边界态,我们可以在晶格边界设置特殊的条件。假设我们有一个有限大小的二维晶格,在边界处电子的跳跃方式可能与内部不同。
def construct_hamiltonian_with_boundary(Lx, Ly, t1, t2, boundary_t1, boundary_t2):
N = Lx * Ly
H = np.zeros((N, N), dtype=complex)
for i in range(Lx):
for j in range(Ly):
index = i * Ly + j
if i < Lx - 1:
if i == 0 or i == Lx - 2:
H[index, index + Ly] = boundary_t1
H[index + Ly, index] = np.conj(boundary_t1)
else:
H[index, index + Ly] = t1
H[index + Ly, index] = np.conj(t1)
if j < Ly - 1:
if j == 0 or j == Ly - 2:
H[index, index + 1] = boundary_t2
H[index + 1, index] = np.conj(boundary_t2)
else:
H[index, index + 1] = t2
H[index + 1, index] = np.conj(t2)
return H
上述代码中,我们通过引入boundaryt1和boundaryt2来描述边界处的跳跃积分。计算这样的哈密顿量的本征值和本征向量后,我们会发现一些能量本征值处于能隙之中,这些就是边界态对应的能量。边界态电子的波函数在边界处有较大的概率分布,而在内部迅速衰减,这体现了边界态的局域化特性。
角态
角态是边界态在晶格角点处的特殊情况。在二维SSH模型中,特定条件下会出现角态。与边界态类似,角态的出现也与系统的拓扑和边界条件紧密相关。想象晶格的四个角点,电子在这些角点处的跳跃和束缚情况与其他位置不同。
def construct_hamiltonian_with_corner(Lx, Ly, t1, t2, boundary_t1, boundary_t2, corner_t1, corner_t2):
N = Lx * Ly
H = np.zeros((N, N), dtype=complex)
for i in range(Lx):
for j in range(Ly):
index = i * Ly + j
if i < Lx - 1:
if i == 0:
if j == 0:
H[index, index + Ly] = corner_t1
H[index + Ly, index] = np.conj(corner_t1)
elif j == Ly - 1:
H[index, index + Ly] = corner_t1
H[index + Ly, index] = np.conj(corner_t1)
else:
H[index, index + Ly] = boundary_t1
H[index + Ly, index] = np.conj(boundary_t1)
elif i == Lx - 2:
if j == 0:
H[index, index + Ly] = corner_t1
H[index + Ly, index] = np.conj(corner_t1)
elif j == Ly - 1:
H[index, index + Ly] = corner_t1
H[index + Ly, index] = np.conj(corner_t1)
else:
H[index, index + Ly] = boundary_t1
H[index + Ly, index] = np.conj(boundary_t1)
else:
H[index, index + Ly] = t1
H[index + Ly, index] = np.conj(t1)
if j < Ly - 1:
if j == 0:
if i == 0:
H[index, index + 1] = corner_t2
H[index + 1, index] = np.conj(corner_t2)
elif i == Lx - 1:
H[index, index + 1] = corner_t2
H[index + 1, index] = np.conj(corner_t2)
else:
H[index, index + 1] = boundary_t2
H[index + 1, index] = np.conj(boundary_t2)
elif j == Ly - 2:
if i == 0:
H[index, index + 1] = corner_t2
H[index + 1, index] = np.conj(corner_t2)
elif i == Lx - 1:
H[index, index + 1] = corner_t2
H[index + 1, index] = np.conj(corner_t2)
else:
H[index, index + 1] = boundary_t2
H[index + 1, index] = np.conj(boundary_t2)
else:
H[index, index + 1] = t2
H[index + 1, index] = np.conj(t2)
return H
这里我们进一步细化了哈密顿量的构建,针对角点设置了特定的跳跃积分cornert1和cornert2。通过对角点处跳跃积分的调整,我们可以观察到角态的出现和消失。角态电子的波函数高度局域在角点附近,这使得角态在量子信息处理等领域有着潜在的应用价值。
边界态本征态分布
边界态本征态分布描述了边界态电子在晶格上的概率分布情况。我们可以通过计算边界态对应的本征向量来得到这种分布。
Lx = 10
Ly = 10
t1 = 1.0
t2 = 0.8
boundary_t1 = 0.5
boundary_t2 = 0.6
H = construct_hamiltonian_with_boundary(Lx, Ly, t1, t2, boundary_t1, boundary_t2)
eigenvalues, eigenvectors = np.linalg.eigh(H)
# 找到边界态对应的本征向量
boundary_state_indices = np.where((eigenvalues > -0.1) & (eigenvalues < 0.1))[0]
for index in boundary_state_indices:
boundary_state_vector = eigenvectors[:, index]
probability_distribution = np.abs(boundary_state_vector) ** 2
# 这里可以将概率分布绘制成图像,直观展示边界态本征态分布
在上述代码中,我们首先确定了边界态对应的能量范围(这里简单设为[-0.1, 0.1],实际需根据具体能带结构调整),然后提取出这些边界态对应的本征向量。通过计算本征向量的模平方,得到边界态电子在各个格点上的概率分布。这种分布能让我们清晰地看到边界态电子主要集中在哪些区域,进一步理解边界态的物理特性。

通过对二维SSH模型中原胞能带、边界态、角态以及边界态本征态分布的探索,我们不仅深入了解了这个模型的物理内涵,还通过代码实现对其进行了数值模拟和分析。这为进一步研究相关拓扑材料的性质和潜在应用奠定了基础。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)