Floquet engineering for tight-binding models on top of pythtb 2.0+
Project description
flqtb — Floquet Tight-Binding on pythtb 2.0+
基于 pythtb 2.0.0+ 的 Floquet 紧束缚模型扩展,使用高频 Magnus 展开计算圆偏振光驱动下的有效静态哈密顿量。
核心公式
含时哈密顿量通过 Peierls 替换引入光场:
$$ H(t) = \sum_i \epsilon_i c_i^\dagger c_i + \sum_{\langle ij \rangle} t_{ij} e^{-i \mathbf{A}(t) \cdot \mathbf{d}_{ij}} c_i^\dagger c_j + \text{h.c.} $$
对圆偏振光:
$$ \mathbf{A}(t) = A_0 \left[ \mathbf{e}_1 \cos(\omega t) + \eta , \mathbf{e}_2 \sin(\omega t) \right] $$
其中 $(\mathbf{e}_1, \mathbf{e}_2, \mathbf{n})$ 构成右手正交基,$\mathbf{n}$ 即 direction,$\eta = \pm 1$ 控制手性。
有效哈密顿量(高频展开):
$$ H_{\text{eff}} = H^{(0)} + \sum_{n=1}^{n_{\max}} \frac{[H^{(-n)}, H^{(n)}]}{n , \omega} $$
$H^{(n)}$ 是 $H(t)$ 的第 $n$ 阶傅里叶分量。
安装
发布到 PyPI 后:
pip install flqtb
开发安装:
git clone https://github.com/yourusername/flqtb.git
cd flqtb
pip install -e ".[dev]"
快速开始
import numpy as np
from pythtb import Lattice
from flqtb import FloquetModel
# 构建石墨烯晶格
lat = Lattice(
lat_vecs=[[1.0, 0.0], [0.5, np.sqrt(3)/2]],
orb_vecs=[[0.0, 0.0], [1/3, 2/3]],
periodic_dirs=[0, 1]
)
# 创建模型
model = FloquetModel(lat)
model.set_hop(-1.0, 0, 1, [0, 0])
# 开启圆偏振光驱动(默认 xy 平面,η=+1)
model.set_drive(A0=1.5, omega=5.0, eta=1)
# 计算能带
kpts = np.linspace(0, 1, 50)
kpath = np.column_stack([kpts, np.zeros_like(kpts)])
evals = model.solve_ham(k_pts=kpath)
API
FloquetModel(lattice, spinful=False)
继承自 pythtb.TBModel。构造方式与 TBModel 完全一致:
model = FloquetModel(lat, spinful=False) # 推荐
model.set_drive(A0, omega, eta=1, n_max=1, direction=None)
配置圆偏振驱动。
| 参数 | 说明 |
|---|---|
A0 |
矢量势振幅(自然单位 $e = \hbar = 1$) |
omega |
驱动频率 $\omega$,需远大于带宽 |
eta |
$\eta = \pm 1$,手性 |
n_max |
包含的最大 Floquet 谐波阶数 $n_{\max}$,通常 $1$ 足够 |
direction |
光的传播方向,默认 [0, 0, 1](xy 平面偏振) |
model.hamiltonian(k_pts=None, flatten_spin_axis=False, **params)
构造 Floquet 有效哈密顿量。支持:
- 单点 / 多点 k 输入
- 1D
np.linspace扫描 - 参数扫描(如
t=[0.0, 1.0, 2.0]) spinful=True时的flatten_spin_axis
model.solve_ham(...)
与 pythtb.TBModel.solve_ham 签名相同,自动使用 Floquet 有效哈密顿量。
model.clear_drive()
移除驱动,恢复静态哈密顿量。
手性约定
$\eta = +1$ 时,电场在偏振平面内按 $\mathbf{e}_1 \to \mathbf{e}_2 \to -\mathbf{e}_1 \to -\mathbf{e}_2$ 旋转;$\eta = -1$ 时反向。
默认 direction=[0, 0, 1] 对应 $\mathbf{e}_1 = \hat{x}, \mathbf{e}_2 = \hat{y}$,因此 $\eta = +1$ 为从 $+z$ 方向观察的逆时针旋转。
测试
python -m pytest test_flqtb.py -v
测试覆盖:静态 fallback、$J_0$ 重整化、傅里叶系数与 FFT 对比、厄米性、k 点扫描、参数扫描、自旋模型、3D 传播方向、n_max=2、clear_drive 等。
限制与注意事项
- 仅支持圆偏振:不处理线偏振或椭圆偏振。
- 仅支持 pythtb 2.0.0+:不兼容旧版
tb_modelAPI。 - 高频近似:要求 $\omega$ 远大于系统带宽;否则 Magnus 展开失效。
- 2D 模型:传播方向必须沿 $z$ 轴,否则不是圆偏振。
- 在位能驱动:当前
set_onsite设置的是静态在位能;若需光场调制在位能,需自行扩展。
文件说明
.
├── src/flqtb/ # 核心包
│ ├── __init__.py
│ └── flqtb.py
├── tests/ # pytest 测试集
│ └── test_flqtb.py
├── examples/ # 示例脚本
│ └── graphene_bands.py
├── pyproject.toml # 打包配置
├── README.md
├── LICENSE
└── flqtb_formula.md # 理论手册
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flqtb-0.1.0.tar.gz.
File metadata
- Download URL: flqtb-0.1.0.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f8af228030bb968b4cdc89388209e2f200d5dbb9a5f7163ab38015e9e535a42
|
|
| MD5 |
8f117711d4eae18cfa9c478ab23cc465
|
|
| BLAKE2b-256 |
0b2ab99b60c94c85befb4538949a4c051cfa86a5acc4f1d49bc01fcd54a35e4d
|
File details
Details for the file flqtb-0.1.0-py3-none-any.whl.
File metadata
- Download URL: flqtb-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fa77257bab09ef93d8977be5fd52f31f6f4ec2142efbe3766d4fed0bedef7eb
|
|
| MD5 |
969dcee4e57fc8fcb2af88dd07baad55
|
|
| BLAKE2b-256 |
bb6fdab481a52b3ce197d7f5f34798eb4b1af361f6e643545d8882cbe81b5018
|