悟理记
首发于悟理记

物理所之行学术总结 凝聚态计算方法(1)

凝聚态物理中运用到的数值模拟方法

Montecarlo模拟方法

经典的MC模拟方法是利用产生随机数的方法抽取关心体系的重要样本,而这些重要样本由根据一定方式进行加权,从而对体系的一些物理量的平均结果做出语言。就经典的统计物理而言,其理论的核心便是求大量相同体系进行演化后的一个平均结果,所以MC的方法中的重要抽样法,所抽取的样就是关心体系的可能演化结果。所以MC的模拟方法可以用来模拟一些经典的统计模型。

在实践的过程中我和我的小组同学就对二维ising模型进行了一个模拟。首先是算法层面上的,刚才说了重要抽样是MC中的一个关键。为了达到最后热平衡时,可能出现的体系状态的相应概率为,N为相应归一化系数

P_{eq} =N exp(-E/kT)

则在利用一个随机过程进行重要抽样时,最终要满足一个细致平衡的条件

T(\Gamma',\Gamma)P_{eq}(\Gamma)=T(\Gamma,\Gamma')P_{eq}(\Gamma')

其中的T(\Gamma',\Gamma)为一个跃迁矩阵,是构成一个满足上面细致平衡条件的算法的关键,其意义可以理解为从一个状态改变为另一个个状态的概率。

基于上面这个重要抽样的理论,二维ising模型常见的有一次翻转一个自旋的Metropolis算法和一次翻转一个集团的Wolff算法。Metropolis算法的有点在于实现起来比较简单而且可以处理有外磁场的情况,但缺点在于一次翻转一个自旋在体系原子数目比较多的情况下要达到平衡状态会比较缓慢,经历的循环次数会很多。Wolff算法的优点在于一次翻转一个集团的自旋其效率比较高,但缺点是只能处理自发磁化的一个过程,如果有外磁场那么还要和Metropolis算法做一个结合,效率就不高了。

我们在实践过程中把上述的两种结果都进行了实现并且得到了还不错的结果,下面是截取的几副模拟结果。



动力学平均场

经典平均场的思想是由于在哈密顿量中的不同位置的物理量进行了一个耦合,所以在计算时产生了很多不便,我们希望做下面这样的一个替换,把对应物理量换成其平均值,以达到一个解耦和的作用,还是以二维ising模型为例

H=-B\cdot\sum_i-J\sum_{<ij>}S_i S_j

进行平均场近似

H=-B\cdot\sum_i-J\sum_{<ij>}(S_i -m+m)(S_j-m+m)\simeq -B\cdot\sum_i-2zJm\sum_{i}S_i +JN^2m^2z

可以看到这个哈密顿量除了一个不关键的常数项以外,可以等价于把每个自旋都视为在一个周围自旋的平均场和外磁场的共同作用所形成的一个外场中

然后再根据自洽方程,来求解平均场带来的一个代数方程

m=tan[\beta(B+2Jzm)]

可以看到通过平均场近似可以有效把一个耦合问题等价于在周围环境中的平均场作用下的一个没有耦合的问题。不过大多数情况下,平均场近似由于忽略很多东西,通常就只能带给我们一个半定量或者是定性的结果。所以需要对上面的方法进行改进。

其中的一个改进就是动力学平均场(DMFT)的计算方法。下面简单介绍动力学平均场的大致内容。(Georges1996Dynamical)

与二维ising模型的情况类似,我们希望把一个强关联体系中不同格点位置相互作用的算符项在一定的近似下转化为其中一个格点在周围的粒子库的“热浴”中进行动力学演化的项,也就是说对于这个格点上的算符,其应有一个有效作用量。

S_{eff}=-\int_{0}^{\beta} d\tau \int_{0}^{\beta}d\tau' \sum_{\sigma}c_{0\sigma}^\dag(\tau) \zeta_{0}^{-1}(\tau-\tau‘) c_{0\sigma}(\tau') +U\int_{0}^{\beta} d\tau n_{0\uparrow}(\tau) n_{0 \downarrow}(\tau')

其中的第一项中$\zeta_{0}^{-1}(\tau-\tau‘)便是类似于上面ising模型中H_{eff}的一个存在,称为Weiss function这是周围的粒子库对于这个格点上的算符的影响,由于其与m不依赖与时间(或者虚时)不同,是依赖于时间的,所以可以考察这个格点上一个动力学演化的过程,这就是为什么叫动力学平均场的原因。

m的定义是S的平均类似,我们一样可以计算在这个格点上的一个关联函数

 G(\tau-\tau')\equiv -<Tc(\tau)c^\dag(\tau')>_{S_{eff}}

并且可以证明在有效作用量中的weiss function,类似于H_{eff}和m的关系有

\zeta_{0}(i\omega_n)^{-1} =i\omega_n +\mu+G(i\omega_n)^{-1}-R[G[i\omega_n)]

当我们利用上面的这个方程求自洽解出G以后,我们可以把G代入上面方程求得Weiss function的形式,并且根据下面的式子可以算出自能的大小。自能在一个微扰下的意义就是在作用量中各种相互作用项贡献出来的各种图的一个求和。

\Sigma(i\omega_n)=\zeta_{0}(i\omega_n)^{-1}-G(i\omega_n)^{-1}

进而可以计算不同格点间的Green函数,将Green函数与物理量联系起来便可以做出有效预言。

如果是用数值方法的话,我们是没有办法去把所有的相互作用图都计算一遍的。因为问题关键就在于如何通过自洽方程求解得到Weiss函数和单格点的关联函数。所以在计算的过程中我们采用一个循环的过程,首先是可以先假设一个合理Weiss函数的形式,进而我们可以根据单格点关联函数的定义计算出G的形式,在这个从Weiss函数到单格点关联函数的过程中,需要进行大量的积分,所以往往使用量子蒙特卡洛的方法去进行这一积分过程。然后根据自能函数的定义,我们可以根据现在的Weiss函数和单格点的关联函数计算出一个自能函数。为了使循环继续下去,我们必须根据我们现有的各种量计算出一个新的Weiss函数或者新的单点关联函数

所以我们根据自能的形式,依据自洽方程我们可以计算一个新的单点关联函数

G^{new}=\int_{-\infty}^{+\infty} d\epsilon\frac{D(\epsilon)}{i\omega_n+\mu-\Sigma(i\omega_n)-\epsilon}

根据我们前面的讨论如果自能形式是正确的话,那么用这个式子算出来的新的关联函数就是原来有相互作用的模型对应得正确的关联函数。那么其带到自能的定义式中求得的新的Weiss函数,和新的关联函数就应该满足自洽方程。当然由于一开始Weiss函数并不会一下就满足自洽方程,自能的形式也不完全正确。但根据新的关联函数算出新的Weiss函数,进而可以开始新一轮的循环,如此循环,直到新的weiss函数和循环开始的Weiss函数满足一定的收敛条件即可输出结果。

上述过程可以类比于之前ising模型的平均场结果会使整个思路更加清晰,把这个过程整理为下面的两幅框图,类比来看DMFT的理论基础和数值计算过程与平均场处理ising模型理论和数值计算方法(解一个超越方程)

两幅框图


值得指出的是由于数值求解过程是求解一个自洽方程,在这个迭代的循环中取任意一个其他的函数作为突破口也是可以的

文章被以下专栏收录