分享
Bond Dimension Expansion
输入“/”快速插入内容
Bond Dimension Expansion
用户4590
用户4590
3月23日修改
第一部分:Single-set 的思路与流程
1.1 为什么需要 bond dimension 扩展?
1.2 两个函数的层次关系
1.3
`expand_bond_dimension`
:为局域态构造种子
1.4
`expand_bond_dimension_general`
:核心算法
Step 1:计算目标扩展量
代码块
Python
mps.compress_config.set_bonddim(len(mps.bond_dims))
m_target = minimum(compress_config.max_dims - mps.bond_dims, mps.bond_dims_exact)
•
compress_config.max_dims
:目标最大 bond_dim(如 [64, 64, ..., 64])
•
mps.bond_dims
:当前 bond_dim(如 [1, 1, ..., 1])
•
mps.bond_dims_exact
:当前态的精确维度上限(由希尔伯特空间大小决定)
- `m_target`:
expander 需要提供的额外维度数
,即需要"补充多少维"
Step 2A:随机扩展模式(
`hint_mpo=None`
)
Step 2B:Krylov 扩展模式(
`hint_mpo`
给定)
Step 3:最终合并与压缩
第二部分:Multiset 键维度扩展的物理思路
2.1 Multiset MPS 的结构与 Hamiltonian
Multiset MPS 的波函数 ansatz(Kloss et al., PRL 2019):
其中
是电子态,
是对应的振动 MPS。
全 Hamiltonian 分解为矩阵形式:
:对角块,描述电子态 α 上的局域振动(声子能量 + 电声耦合)
:非对角块,描述电子跳跃
(在 Holstein 模型中就是跳跃积分 -J)
运动方程(TDVP 投影后):
bond dimension 扩展需要针对每个
|Ψ^α⟩
独立进行,
但扩展方向必须预期该 set 在演化中实际需要探索的方向。
2.2 Franck-Condon 初态的特殊性
FC 激发(光激发后立刻到达的初态):
(center态:振动真空,norm ≈ 1)
(非center态:几乎为零,norm ≈ 0)
这是一种极度不对称的初态:center 态充分占据,其余态几乎为零。
这种不对称对扩展方式的选择有决定性影响。
2.3 为什么
(对角块)
Krylov 迭代算子必须满足
:它能生成该 set 在时间演化中需要的 bond 结构变化。
对于
的演化,局域声子动力学由
主导。
时间演化算符展开:
故迭代算子应选
,生成的 Krylov 子空间正是
的局域声子演化所需空间。
为什么不能用
做迭代算子?
是一个
跨空间算子
:它把 β 振动空间的态映射到 α 振动空间。
反复作用
于
,并不能描述 α 的内部振动结构如何随时间变化,
在数学上也不产生有意义的 Krylov 空间(算子作用的定义域和值域对不上)。
2.4 为什么
(非对角耦合项)
回到代码的关键注释
"in case of localized self"
(
mps.py:1992
):
代码块
Python
if ex_mps is None:
lastone = mps
else:
lastone = mps + ex_mps
# 合并后作为 Krylov 种子 v₀