COMSOL 计算二维三角晶格光子晶体的能带和陈数
运行计算后,在 **"结果" → "全局矩阵"** 中查看本征频率 \( \omega_n(\mathbf{k}) \)。- 设置 **布洛赫波矢 \( \mathbf{k} = (k_x, k_y) \)** 作为参数。- 在 **"参数化扫描"** 中设置 \(k_x\) 和 \(k_y\) 沿布里渊区路径变化。- 使用 **"阵列"** 或 **"周期复制"** 生成三角晶格(先定义一个原胞
## **1. 三角晶格光子晶体能带计算**
### **步骤1:建立三角晶格模型**
1. **选择物理场**:
- 打开 COMSOL,选择 **"波动光学" → "电磁波,频域" (emw)**。
- 在 **二维平面**(如 \(xy\)-平面)建模。
2. **定义三角晶格结构**:
- 三角晶格的基矢为:
\[
\mathbf{a}_1 = a \hat{x}, \quad \mathbf{a}_2 = \frac{a}{2} \hat{x} + \frac{\sqrt{3}a}{2} \hat{y}
\]
(\(a\) 为晶格常数)。
- 在 **"几何"** 中创建介质柱(如圆柱形 Si,折射率 \(n \approx 3.5\))或空气孔(背景介质为 Si)。
- 使用 **"阵列"** 或 **"周期复制"** 生成三角晶格(先定义一个原胞,再复制)。
3. **定义材料**:
- 设置介质柱和背景的介电常数(如 \(\varepsilon_{\text{Si}} = 12\),空气 \(\varepsilon_{\text{air}} = 1\))。
原文

---
### **步骤2:设置周期性边界条件(Floquet 边界)**
1. **定义周期边界对**:
- 三角晶格的原胞边界由两个基矢方向决定,需设置 **Floquet 周期边界条件**:
- 选择 **"周期性条件" → "Floquet 周期边界"**。
- 定义边界对(如左侧边界 → 右侧边界,底边界 → 斜上边界)。
- 设置 **布洛赫波矢 \( \mathbf{k} = (k_x, k_y) \)** 作为参数。
2. **定义不可约布里渊区路径**(三角晶格的典型路径:Γ→M→K→Γ):
- Γ点 \((0,0)\)
- M点 \((\pi/a, \pi/\sqrt{3}a)\)
- K点 \((4\pi/3a, 0)\)
- 在 **"参数"** 中定义 \(k_x\) 和 \(k_y\) 的扫描路径。
---
### **步骤3:频域计算与能带提取**
1. **设置频域研究**:
- 选择 **"频域"** 研究,设置频率范围(如 \( \omega a/2\pi c \) 从 0 到 1,覆盖前几个能带)。
- 在 **"参数化扫描"** 中设置 \(k_x\) 和 \(k_y\) 沿布里渊区路径变化。
2. **计算并提取本征频率**:
- 运行计算后,在 **"结果" → "全局矩阵"** 中查看本征频率 \( \omega_n(\mathbf{k}) \)。
- 导出数据并用 MATLAB/Python 绘制能带图。
---


## **2. 陈数(Chern Number)计算**
陈数是贝里曲率在布里渊区的积分,计算流程如下:
### **步骤1:离散化布里渊区**
### **步骤2:计算贝里联络(Berry Connection)**
### **步骤3:计算贝里曲率(Berry Curvature)**
### **步骤4:数值积分求陈数**
(应接近整数,如 \( C = \pm 1 \) 表示拓扑非平庸态)。
---具体的陈数计算相关文件请下载zip文件
参考文献在zip文件中
更多推荐



所有评论(0)