我只是个小本科生,对于SSE连入门都算不上,这个回答权当是抛砖引玉,还请各位有经验的前辈给出更加准确的回答。
〇、简介
Stochastic Series Expansion(SSE)是一种处理自旋体系和玻色子系统的量子蒙特卡洛算法。如果只是想大致的了解SSE是什么和它可以处理什么问题,可以直接跳到最后总结的部分。
可能有些不做数值的同学对于数值计算的几种常用方法不是很熟悉,我就先简单的介绍一下:
在复杂的量子多体问题中,特别是强关联体系,一般的解析方法,例如平均场,并不能得到令人信服的结论;另一方面,由于系统粒子数的增多会导致整个系统的维度指数级的增加,例如计算系统的配分函数:
即使是对于最简单的自旋1/2的格点模型,N粒子系统哈密顿量的维度也有。如果使用严格对角化的方法,人们最多只能处理几十个格点左右的系统,而这是远远达不到研究系统性质的要求的。为了数值处理更大的系统,人们提出了一系列的近似求解的方法:在一维系统中,密度矩阵重整化群(Density Matrix Renormalization Group, DMRG)是一种通用且非常有效的方法,但是它在计算二维系统时会变得非常低效;最近兴起的张量网络(Tensor Network)方法我不是非常了解,但是目前它并不完善;于是量子蒙特卡洛(Quantum Monte Carlo)方法几乎是目前处理二维系统的唯一方法。
从量子统计的意义上讲,一个d维的量子系统可以在形式上和一个d+1维的经典体系对应起来。多出的一个维度被称为“虚时”,它在形式上是温度的倒数。在量子蒙卡中,这种对应的实现形式是对玻尔兹曼系数进行展开。不同的量子蒙卡方法对于玻尔兹曼系数的展开方式是不同的:最早的处理方式是对它进行Suzuki-Trotter展开,由此可以得到的一套蒙特卡洛方法被称为世界线蒙卡 (World Line);而SSE采用的是另一种展开方式:直接进行泰勒级数展开。下面是一些较为具体的说明:
一、蒙卡权重公式
对玻尔兹曼系数进行泰勒展开可以得到:
选定一组完备基配分函数可以写作:
为了简便的计算矩阵元,对哈密顿量进行分解:
其中标记算符的种类,标记算符具体作用在哪些格点上面。对于大多数没有符号问题(Sign Problem)的系统,总可以保证对于任意的基矢,有
配分函数现在的形式为:
为了进行实际的计算,必须对展开的阶数进行截断,使之变为有限的求和。此外,假设截断的阶数为,对于的展开项,加入个恒等算符,记为。这样对于每阶展开,都有相同数量的算符矩阵元,配分函数可以写成统一的求和形式:
注意此时的可以看作是非恒等算符的数目。如果将个态和个算符的特定组合看作是系统的一个状态(configuration),记为,则配分函数可以写成下面的形式:
由配分函数的这种形式可以得到:如果把 看作是系统处于状态下的权重,就可以进行类似于经典蒙特卡洛模拟的过程,对于某一个算符,它的系综平均为:
即按照算符在系统某个状态下的值以为权重进行蒙卡取样。
二、蒙卡取样方式
一般而言,蒙卡取样只要满足细致平衡条件(Detailed Balence)和遍历性(Ergodicity)都是可行的,但是也要考虑状态更新(Update)的效率,这就要求取样的方式要精心的设计,很多时候要设计一些整体更新的方法(Global Update)。这是一个非常subtle的问题,也是量子蒙卡一个很重要的难点。SSE的一大优势就是对常见的格点模型有很高效的整体更新方法,但是在这里展开的话免不了长篇大论,我在这里提供一些参考文献,如果有疑问的话欢迎和我私下讨论。
此外,Prof. Anders Sandvik教授的个人主页上有自旋1/2海森堡模型的FORTRAN代码
Programs,我自己也用C++实现了绝大多数模型,欢迎大家交流。
三、可以计算的物理量
除了通过系统的状态可以直接得到的物理量,例如磁化强度,关联长度,之外
四、总结
Stochastic Series Expansion(SSE)是一种处理不含阻挫(Frustration)自旋体系和玻色子系统的量子蒙特卡洛算法,通过对量子统计中玻尔兹曼系数泰勒级数展开的方式进行蒙特卡洛取样。现在主要的用途是计算二维格点模型,例如它们的相变过程和各个态的特性。目前SSE可以实现对于XXZ/Heisenberg model, XY/t-J model, Ising model, J-Q model的计算,可以很高效的计算系统的能量,关联长度,Spin Stiffness等物理量。SSE已经成功的处理了很多有关量子自旋体系的问题,例如给出了Deconfined Critical Point存在的可能性,而且最近也有一些很重要的进展
http:// science.sciencemag.org/ content/352/6282/213。
目前我了解到在该领域比较活跃的人物:
北美:
Anders Sandvik(Boston University)
Roger Melko(PI/ University of Waterloo)
国内:
Daoxin Yao(中山大学)
Wenan Guo(北京师范大学)
Ling Wang(北京科学计算中心)
另外给出一些学习SSE以及QMC很好的参考资料:
不过最好的学习方式还是自己去实现某一个模型。
暂时只想到这么多,答案里面肯定有很多疏漏,希望各位批评指正。
希望这些可以帮到题主。