跳至内容

蠕虫算法

简介

worm 程序提供了基于蠕虫算法的量子蒙特卡洛(QMC)模拟的完整通用实现,蠕虫算法由 N. Prokof’ev 及其合作者发明。从技术上讲,它是一个基于配分函数路径积分表示的连续时间 QMC 程序。

当前实现允许在任意晶格上模拟以下模型:

  • 具有任意自旋大小、磁场和各向异性的量子自旋(无阻挫)模型
  • 不存在符号问题的(软核)玻色模型

如有需要,可以添加对存在符号问题的模拟的支持。

运行模拟

教程中讨论了一个模拟示例。

输入参数

worm 程序使用此处讨论的通用输入参数。

专家参数

此外,还可以指定特定的模拟参数(只有在你明白其含义时才使用!):

参数默认值含义
SKIP1两次测量之间的蒙特卡洛扫描次数
RESTRICT_MEASUREMENTS[N]若定义此参数,则只在量子数 N(粒子数)取该参数所给值的构型上进行测量。注意,模拟仍然在巨正则系综中进行,需要将化学势调到合适的范围,才能真正采样到具有所需粒子数的构型。
RESTRICT_MEASUREMENTS[Sz]若定义此参数,则只在量子数 Sz(磁化强度)取该参数所给值的构型上进行测量。注意,模拟仍然在巨正则系综中进行,需要将磁场调到合适的范围,才能真正采样到具有所需磁化强度的构型。
WORMS_PER_KINK1决定每次扫描中蠕虫平均访问一个扭结的频率。
MEASURE_GREENfalse标志,指示是否测量格林函数。请勿使用——该功能未经测试!

编译时参数

此外,在编译时可以在文件 WRun.h 中定义以下变量

参数含义
NONLOCAL取消定义可加速仅含局域相互作用时的程序。
USE_VECTOR定义后使用 std::vector 而非 std::list 作为数据结构。
USE_SET定义后使用 std::set 而非 std::list 作为数据结构。

测量

worm 应用程序会测量以下观测量:

名称描述
Energy系统的总能量
Energy Density每格点能量
Density粒子数(对玻色模型)
Density^2粒子数的平方(对玻色模型)
Stiffness系统的刚度(对玻色模型)
Green’s function格林函数(仅适用于局域相互作用)

贡献者

以下人员为 worm 应用程序做出了贡献:

  • Simon Trebst
  • Matthias Troyer