Ewald求和在分子静电势能计算中的应用

技术背景

分子动力学模拟中,计算周期性边界条件的静电势常被视作计算的瓶颈之一。形式上是比较容易的,例如不考虑周期性边界条件的话,静电势能就是:

\E=\\frac{1}{4\\pi\\epsilon_0}\\sum_{i=0}\^{N-2}\\sum_{j=i+1}\^{N-1}\\frac{q_iq_j}{r_{ij}} \\

如果考虑周期性边界条件,那么静电势能变为:

\E=\\frac{1}{4\\pi\\epsilon_0}\\sum_{\\mathbf{n}}\\sum_{i=0}\^{N-2}\\sum_{j=i+1}\^{N-1}\\frac{q_iq_j}{\\left\|\\mathbf{r}_{ij}+\\mathbf{n}\\mathbf{L}\\right\|}+\\frac{1}{4\\pi\\epsilon_0}\\sum_{\|\\mathbf{n}\|\>0}\\frac{q_i\^2}{\\left\|\\mathbf{n}\\mathbf{L}\\right\|},\\mathbf{n}=(n_1,n_2,...,n_d)\\in\\mathbb{Z} \\

且不说对无穷个盒子的叠加,就算是单个的盒子,也是\(O(N^2)\)的计算复杂度,这也是求解困难的原因。在分子动力学中,为了简化这个计算量,使用了三种思想:傅里叶变换、Ewald Summation以及Particle Mesh的方法,本文主要涉及傅里叶变换与Ewald求和计算的部分。

周期性电势

首先我们从物理概念上理解静电势能项的含义:单一的电荷\(q_i\)会在空间中形成一个电势\(V_i\),当另一个电荷\(q_j\)位于\(V_i\)对应的电场中时,就会受到静电相互作用,其能量为\(E_{ij}\)。因为无穷远处的静电势能为0,这也就以为着,如果我们需要将\(q_j\)从原始的位置推到无穷远之外,就需要\(E_{ij}\)的能量。这个思路告诉我们,可以先计算电势\(V_i\),再计算电势能\(E_{ij}\),也就是这个东西:

\V_i(\\mathbf{r})=\\frac{1}{4\\pi\\epsilon_0}\\frac{q_i}{\\left\|\\mathbf{r}-\\mathbf{r}_i\\right\|} \\

如果考虑上周期性边界条件就是:

\V_i(\\mathbf{r})=\\frac{1}{4\\pi\\epsilon_0}\\sum_{\\mathbf{n}}\\frac{q_i}{\\left\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\\right\|} \\

因为这个无穷多的求和没办法直接计算,只能明确电势具有周期性:\(V_i(\mathbf{r})=V_i(\mathbf{r}+\mathbf{n}\mathbf{L})\)。

静电场泊松方程

空间中的电荷\(i\)在\(\mathbf{r}\)处的电势,由泊松方程给出:

\\\Delta V_i(\\mathbf{r})=-\\frac{\\rho_i(\\mathbf{r})}{\\epsilon_0} \\

其中\(\Delta\)是拉普拉斯算子,\(\rho_i\)表示电荷密度。如果考虑一个点电荷的的情况,那么就有:\(\rho_i(\mathbf{r})=q_i\delta(\mathbf{r}-\mathbf{r}_i)\)。进而写出欧几里得空间中的泊松方程:

\\\nabla\^2V_i(\\mathbf{r})=-\\frac{q_i\\delta(\\mathbf{r}-\\mathbf{r}_i)}{\\epsilon_0} \\

其中\(\nabla^2V_i(\mathbf{r})=\frac{\partial^2V_i(\mathbf{r})}{\partial x^2}+\frac{\partial^2V_i(\mathbf{r})}{\partial y^2}+\frac{\partial^2V_i(\mathbf{r})}{\partial z^2}\)。再考虑周期性边界条件,每个盒子中都有一个点电荷\(q_i\),于是方程应该写为:

\\\nabla\^2V_i(\\mathbf{r})=-\\sum_{\\mathbf{n}}\\frac{q_i\\delta(\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L})}{\\epsilon_0} \\

傅里叶空间泊松方程

对上述单点形式的泊松方程的两边同时进行傅里叶变换(关于傅里叶变换的理解,可以参考前序文章1前序文章2,有比较详细的原理介绍和相关代码实现)有:

\\\int\\left(\\frac{\\partial\^2V_i(\\mathbf{r})}{\\partial x\^2}+\\frac{\\partial\^2V_i(\\mathbf{r})}{\\partial y\^2}+\\frac{\\partial\^2V_i(\\mathbf{r})}{\\partial z\^2}\\right)e\^{-2\\pi j\\mathbf{k}\\mathbf{r}}d\\mathbf{r}=-\\frac{q_i}{\\epsilon_0}\\int\\delta(\\mathbf{r}-\\mathbf{r}_i)e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r} \\

先使用分部积分计算左边中的一项:

\\\begin{align\*} \\int\\frac{\\partial\^2V_i(\\mathbf{r})}{\\partial x\^2}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}\&=\\left.\\frac{\\partial V_i(\\mathbf{r})}{\\partial x}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}\\right\|_{-\\infty}\^{\\infty}+2\\pi jk_x\\int\\frac{\\partial V_i(\\mathbf{r})}{\\partial x}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r} \\end{align\*} \\

需要注意的是,这里\(\frac{\partial V_i(\mathbf{r})}{\partial x}=F_i(\mathbf{r})\)的物理意义是作用力,那么我们就可以取第一类边界条件:

\\\lim_{x\\rightarrow\\infty}V_i(x)=0 \\

这样根据微分的定义有:

\\\lim_{x\\rightarrow\\infty}\\frac{\\partial V_i(x)}{\\partial x}=\\lim_{x\\rightarrow\\infty}\\lim_{\\epsilon\\rightarrow0}\\frac{V_i(x+\\epsilon)-V_i(x)}{\\epsilon}=0 \\

上面这个极限代入了\(V_i(\mathbf{r})\)的单点形式,其意义为,位于\(\mathbf{r}i\)处的点电荷\(q_i\),在无穷远处生成的电场为0,对无穷远处的电荷\(q{\infty}\)的作用力也是0,这里不考虑周期性边界条件。则有:

\\\begin{align\*} \\int\\frac{\\partial\^2V_i(\\mathbf{r})}{\\partial x\^2}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}\&=2\\pi jk_x\\int\\frac{\\partial V_i(\\mathbf{r})}{\\partial x}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}\\\\ \&=2\\pi jk_x\\left\[\\left.V_i(\\mathbf{r})e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}\\right\|_{x=-\\infty}\^{x=\\infty}+2\\pi jk_x\\int V_i(\\mathbf{r})e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}\\right\\ &=-4\pi^2k_x^2V_i(\mathbf{k}) \end{align*} \]

同理可得泊松方程左侧形式为:

\\\int\\nabla\^2V_i(\\mathbf{r})e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}=-4\\pi\^2k\^2V_i(\\mathbf{k}) \\

而右侧形式需要用到狄拉克函数的抽样特性:

\\\int_{-\\infty}\^{\\infty}\\delta(t)f(t)dt=\\int_{-\\infty}\^{\\infty}\\delta(t)f(0)dt=f(0)\\int_{-\\infty}\^{\\infty}\\delta(t)dt=f(0) \\

即:

\\\int\\delta(\\mathbf{r}-\\mathbf{r}_i)e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}}d\\mathbf{r}=e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}_i} \\

得到傅里叶空间的单点泊松方程:

\4\\pi\^2k\^2V_i(\\mathbf{k})=\\frac{q_i}{\\epsilon_0}e\^{-2\\pi j\\mathbf{k}\\cdot\\mathbf{r}_i} \\

倒易空间

涉及到傅里叶空间,我们很自然的想到使用固体物理学的倒易空间变换,也就是把周期性盒子当作一个原胞。根据倒易空间(也叫\(\mathbf{k}\)空间)晶格矢(倒格矢)定义有:

\\\mathbf{k}=m_1\\mathbf{k}_1+m_2\\mathbf{k}_2+m_3\\mathbf{k}_3\\\\ \\

其中:

\k_i\\cdot L_j=\\delta_{i,j}\\\\ \\delta_{i,j}=\\left\\{ \\begin{matrix} 1, i=j\\\\ 0, i\\neq j \\end{matrix} \\right. \\

按照我们常用的长方体周期性边界条件:

\\\begin{matrix} \\mathbf{L}=(L_x,L_y,L_z)=\\mathbf{L}_1+\\mathbf{L}_2+\\mathbf{L}_3\\\\ \\mathbf{L}_1 = (L_x,0,0)\\\\ \\mathbf{L}_2 = (0,L_y,0)\\\\ \\mathbf{L}_3 = (0,0,L_z) \\end{matrix} \\

可以计算得:

\\\mathbf{k}_1=\\frac{2\\pi(\\mathbf{L}_2\\times\\mathbf{L}_3)}{\\mathbf{L}_1\\cdot(\\mathbf{L}_2\\times\\mathbf{L}_3)}= \\frac{2\\pi}{\\Omega}(\\mathbf{L}_2\\times\\mathbf{L}_3)=\\frac{\\pi L_yL_z}{\\Omega L_x}\\mathbf{L}_1=\\frac{2\\pi}{L_x\^2}\\mathbf{L}_1 \\

其中\(\Omega\)表示周期性盒子的体积,类似的有:

\\\mathbf{k}_2=\\frac{2\\pi(\\mathbf{L}_3\\times\\mathbf{L}_1)}{\\mathbf{L}_2\\cdot(\\mathbf{L}_3\\times\\mathbf{L}_1)}= \\frac{2\\pi}{L_y\^2}\\mathbf{L}_2 \\

以及

\\\mathbf{k}_3=\\frac{2\\pi(\\mathbf{L}_1\\times\\mathbf{L}_2)}{\\mathbf{L}_3\\cdot(\\mathbf{L}_1\\times\\mathbf{L}_2)}= \\frac{2\\pi}{L_z\^2}\\mathbf{L}_3 \\

经过倒易空间变换之后,原胞体积从\(\Omega=L_xL_yL_z\)变成:\(\Omega^*=\frac{(2\pi)^3}{L_xL_yL_z}\)。因为在前一步傅里叶空间的泊松方程中我们注意到\(\mathbf{k}\)前面总是带了一个\(2\pi\),这里不妨使用倒易晶格矢的定义对\(\mathbf{k}\)的形式做一个简化:

\\\mathbf{k}=\\left(\\frac{2\\pi}{L_x}, \\frac{2\\pi}{L_y}, \\frac{2\\pi}{L_z}\\right) \\

这样一来傅里叶空间的泊松方程可以简写为:

\V_i(\\mathbf{k})=\\frac{q_i}{\\epsilon_0k\^2}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i} \\

其中\(k^2=|\mathbf{k}|^2=\frac{4\pi^2m_1^2}{L_x^2}+\frac{4\pi^2m_2^2}{L_y^2}+\frac{4\pi^2m_3^2}{L_z^2}\),可以实现实空间到倒易空间的变换。

衰减函数构造

对于上述傅里叶变换之后的单点电势的形式,即使我们对整个\(\mathbf{k}\)空间进行积分,也是一个发散的结果。所以这里用到了一个非常特别的思想,由Edwald提出,把静电能量项分为远程相互作用项和短程相互作用项,分别在倒易空间和实空间收敛,这样就可以精确计算静电能。实际操作的时候有不同的推导过程,我们这里引用一种比较"数学"的推导方法(参考链接1)。

首先我们构造一个衰减函数\(e^{-k^2t}\),这个衰减函数有个特性是:

\\\int_0\^{\\infty}e\^{-k\^2t}dt=\\left.\\left(-\\frac{1}{k\^2}e\^{-k\^2t}\\right)\\right\|_0\^{\\infty}\\\\=\\frac{1}{k\^2} \\

这样我们就可以用这个积分形式替换掉傅里叶-泊松方程中的\(\frac{1}{k^2}\)项:

\V_i(\\mathbf{k})=\\frac{q_i}{\\epsilon_0}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i}\\int_0\^{\\infty}e\^{-k\^2t}dt \\

因为这里使用的是从0到无穷大的一个积分形式,那么我们就可以实现一个截断,将其划分成两个积分的加和,假如我们在\(\eta\)处做一个截断,则有:

\V_i(\\mathbf{k})=\\frac{q_i}{\\epsilon_0}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i}\\left(\\int_0\^{\\eta}e\^{-k\^2t}dt+\\int_{\\eta}\^{\\infty}e\^{-k\^2t}dt\\right) \\

这里取短程(Short Term)相互作用为:

\V_i\^S(\\mathbf{k})=\\frac{q_i}{\\epsilon_0}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i}\\int_0\^{\\eta}e\^{-k\^2t}dt \\

以及长程(Long Term)相互作用为:

\V_i\^L(\\mathbf{k})=\\frac{q_i}{\\epsilon_0}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i}\\int_{\\eta}\^{\\infty}e\^{-k\^2t}dt=\\frac{q_i}{\\epsilon_0k\^2}e\^{-j\\mathbf{k}\\cdot\\mathbf{r}_i}e\^{-\\eta k\^2} \\

短程作用项计算

按照预期,划分了短程作用项和长程作用项之后,应该可以得到一个实空间收敛的短程相互作用,我们对短程作用做一个逆傅里叶变换:

\\\begin{align\*} V_i\^S(\\mathbf{r})\&=\\frac{1}{k_xk_yk_z}\\sum_{\\mathbf{k}}V_i\^S(\\mathbf{k})e\^{i\\mathbf{k}\\cdot\\mathbf{r}}\\\\ \&=\\frac{q_i}{k_xk_yk_z\\epsilon_0}\\sum_{\\mathbf{k}}e\^{j\\mathbf{k}\\cdot(\\mathbf{r}-\\mathbf{r}_i)}\\int_0\^{\\eta}e\^{-k\^2t}dt\\\\ \&=\\frac{q_i}{k_xk_yk_z\\epsilon_0}\\int_0\^{\\eta}\\sum_{\\mathbf{k}}e\^{j\\mathbf{k}\\cdot(\\mathbf{r}-\\mathbf{r}_i)}e\^{-k\^2t}dt \\end{align\*} \\

很明显,积分内的求和项是一个指数平方函数的离散傅里叶变换。而我们可以知道,正态分布函数\(f(\xi)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{\xi^2}{2\sigma^2}}\)的傅里叶变换和逆傅里叶变换不改变其分布形式:

\\\begin{align\*} F(k)\&=\\int f(\\xi)e\^{-jk\\xi}d\\xi\\\\ \&=\\frac{1}{\\sqrt{2\\pi}\\sigma}\\int e\^{\\frac{-\\xi\^2-2jk\\xi\\sigma\^2}{2\\sigma\^2}}d\\xi\\\\ \&=\\frac{1}{\\sqrt{2\\pi}\\sigma}\\int e\^{\\frac{-\\xi\^2-2jk\\xi\\sigma\^2-(jk\\sigma\^2)\^2+(jk\\sigma\^2)\^2}{2\\sigma\^2}}d\\xi\\\\ \&=\\frac{1}{\\sqrt{2\\pi}\\sigma}e\^{\\frac{(jk\\sigma\^2)\^2}{2\\sigma\^2}}\\int e\^{-\\frac{(\\xi+jk\\sigma\^2)\^2}{2\\sigma\^2}}d\\xi \\end{align\*} \\

由于积分项只是一个实空间的积分,其本质还是一个正态分布函数的积分,我们知道其积分结果是一个常数,所以有:

\F(k)=e\^{-\\frac{k\^2\\sigma\^2}{2}} \\

也是一个正态分布,只是其均方差从\(\sigma\)变成了\(\frac{1}{\sigma}\),也就是其积分结果为:

\\\int F(k)dk=\\frac{\\sqrt{2\\pi}}{\\sigma} \\

同样的道理我们也可以计算得,正态分布函数得逆傅里叶变换结果也依然是一个正态分布函数,其均方差也是\(\frac{1}{\sigma}\)。

那么回到短程静电势,先做个变量替换\(t=\frac{\sigma^2}{2},\sigma\geq0\),则有\(dt=\sigma d\sigma,\sigma_{t=\eta}=\sqrt{2\eta},\sigma_{t=0}=0\)。此时短程相互作用势为:

\\\begin{align\*} V_i\^S(\\mathbf{r})\&=\\frac{q_i}{k_xk_yk_z\\epsilon_0}\\int_{0}\^{\\sqrt{2\\eta}}\\left(\\sum_{\\mathbf{k}}e\^{j\\mathbf{k}\\cdot(\\mathbf{r}-\\mathbf{r}_i)}e\^{-\\frac{k\^2\\sigma\^2}{2}}\\right)\\sigma d\\sigma\\\\ \&=\\frac{q_i}{\\epsilon_0}\\int_{0}\^{\\sqrt{2\\eta}}\\frac{e\^{-\\frac{(\\mathbf{r}-\\mathbf{r}_i)\^2}{2\\sigma\^2}}}{N_{coe}}\\sigma d\\sigma \\end{align\*} \\

这里\(N_{coe}\)是一个用于归一化正态分布的常数:

\\\begin{align\*} N_{coe}\&=\\int_{\\mathbf{r}}e\^{-\\frac{\\left\|\\mathbf{r}-\\mathbf{r}_i\\right\|}{2\\sigma\^2}}d\\mathbf{r}\\\\ \&=\\int_{-\\infty}\^{\\infty}e\^{-\\frac{(z-z_i)\^2}{2\\sigma\^2}}\\left\[\\int_{-\\infty}\^{\\infty}e\^{-\\frac{(y-y_i)\^2}{2\\sigma\^2}}\\left(\\int_{-\\infty}\^{\\infty}e\^{-\\frac{(x-x_i)\^2}{2\\sigma\^2}}dx\\right)dy\\rightdz\\ &=(2\pi\sigma^2)^{\frac{3}{2}} \end{align*} \]

所以有:

\\\begin{align\*} V_i\^S(\\mathbf{r})\&=\\frac{q_i}{\\epsilon_0}\\int_{0}\^{\\sqrt{2\\eta}}\\frac{e\^{-\\frac{(\\mathbf{r}-\\mathbf{r}_i)\^2}{2\\sigma\^2}}}{(2\\pi\\sigma\^2)\^{\\frac{3}{2}}}\\sigma d\\sigma\\\\ \&=\\frac{q_i}{(2\\pi)\^{\\frac{3}{2}}\\epsilon_0}\\int_{0}\^{\\sqrt{2\\eta}}\\frac{e\^{-\\frac{(\\mathbf{r}-\\mathbf{r}_i)\^2}{2\\sigma\^2}}}{\\sigma\^2} d\\sigma \\end{align\*} \\

这里用一个变量替换:\(y=-\frac{|\mathbf{r}-\mathbf{r}_i|}{\sqrt{2}\sigma}\),则有:\(\sigma=-\frac{|\mathbf{r}-\mathbf{r}_i|}{\sqrt{2}y}\),其微分变换形式为:\(d\sigma=\frac{|\mathbf{r}-\mathbf{r}i|}{\sqrt{2}y^2}dy\),其边界为:\(y{\sigma=\sqrt{2\eta}}=-\frac{|\mathbf{r}-\mathbf{r}i|}{2\sqrt{\eta}},y{\sigma=0}=-\infty\),代入得:

\\\begin{align\*} V_i\^S(\\mathbf{r})\&=\\frac{q_i}{(2\\pi)\^{\\frac{3}{2}}\\epsilon_0}\\int_{-\\infty}\^{-\\frac{\|\\mathbf{r}-\\mathbf{r}_i\|}{2\\sqrt{\\eta}}}\\frac{\\sqrt{2}e\^{-y\^2}}{\|\\mathbf{r}-\\mathbf{r}_i\|} dy\\\\ \&=\\frac{q_i}{2\\pi\^{\\frac{3}{2}}\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i\|}\\int_{-\\infty}\^{-\\frac{\|\\mathbf{r}-\\mathbf{r}_i\|}{2\\sqrt{\\eta}}}e\^{-y\^2}dy\\\\ \&=\\frac{q_i}{2\\pi\^{\\frac{3}{2}}\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i\|}\\int_{\\frac{\|\\mathbf{r}-\\mathbf{r}_i\|}{2\\sqrt{\\eta}}}\^{+\\infty}e\^{-y\^2}dy \\end{align\*} \\

此时使用一个误差函数\(Erfc(y)=\frac{2}{\sqrt{\pi}}\int_{y}^{\infty}e^{-x^2}dx\)代入进行替换:

\V_i\^S(\\mathbf{r})=\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i\|}Erfc\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i\|}{2\\sqrt{\\eta}}\\right) \\

因为\(\eta\)是我们手动引入的一个常数参量,如果考虑\(\eta=\frac{\sigma^2}{2}\),那么形式就变成了:

\V_i\^S(\\mathbf{r})=\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i\|}Erfc\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i\|}{\\sqrt{2}\\sigma}\\right) \\

这个形式的短程相互作用势,表示的是单个盒子内的单个带电粒子\(q_i\)在\(\mathbf{r}\)处的电势,如果考虑周期性边界条件,则形式需要变为:

\V_i\^S(\\mathbf{r})=\\sum_{\\mathbf{n}}\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right) \\

这个形式的相互作用势相比于原始形式\(V_i(\mathbf{r})=\frac{1}{4\pi\epsilon_0}\sum_{\mathbf{n}}\frac{q_i}{\left|\mathbf{r}-\mathbf{r}_i+\mathbf{n}\mathbf{L}\right|}\)而言,使用了一个误差函数对实空间做了一个截断:

\V_i\^S(\\mathbf{r})\\approx\\sum_{\\mathbf{n'}}\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n'}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n'}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right),1-Erfc\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i+\\mathbf{n'}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right)\<\\epsilon \\

从而只需要计算有限\(\mathbf{n'}\)的周期性盒子即可。因为这里截断的是距离\(d_{\mathbf{n}}=|\mathbf{r}-\mathbf{r}i+\mathbf{n}\mathbf{L}|\),可以用达朗贝尔判别法证明短程相互作用势在实空间的收敛性(按一般性取法先令一个\(\delta>0\)):\(\lim{l_{\mathbf{n}}\rightarrow\infty}\frac{Erfc(\frac{l_{\mathbf{n}}+\delta}{\sqrt{2}\sigma})l_{\mathbf{n}}}{(l_{\mathbf{n}}+\delta)Erfc(\frac{l_{\mathbf{n}}}{\sqrt{2}\sigma})}=\lim_{l_{\mathbf{n}}\rightarrow\infty}\frac{Erfc\left(\frac{l_{\mathbf{n}+\delta}}{\sqrt{2}\sigma}\right)}{Erfc\left(\frac{l_{\mathbf{n}}}{\sqrt{2}\sigma}\right)}=e^{-\frac{\delta^2}{2\sigma^2}}\lim_{l_{\mathbf{n}}\rightarrow\infty}e^{-\frac{l_{\mathbf{n}}\delta}{\sigma^2}}=e^{-\frac{\delta^2}{2\sigma^2}}<1\)。即:电势的短程相互作用在实空间收敛。得到短程相互作用电势的形式之后,可以进一步计算短程相互作用的电势能:

\E\^S=\\sum_{\\mathbf{n}}\\sum_{i=0}\^{N-2}\\sum_{j=i+1}\^{N-1}\\frac{q_iq_j}{4\\pi\\epsilon_0\|\\mathbf{r}_j-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{r}_j-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right)+\\sum_{\|\\mathbf{n}\|\>0}\\frac{q_i\^2}{4\\pi\\epsilon_0\|\\mathbf{n}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{n}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right) \\

长程作用项计算

前面得到长程相互作用电势形式为:

\V_i\^L(\\mathbf{k})=\\frac{q_i}{\\epsilon_0 \|\\mathbf{k}\|\^2}e\^{-j\\mathbf{k}\\mathbf{r}_i}e\^{-\\eta \|\\mathbf{k}\|\^2} \\

同样使用短程作用项中的取值\(\eta=\frac{\sigma^2}{2}\)。做一个逆傅里叶变换变回实空间:

\V_i\^L(\\mathbf{r})=\\frac{q_i}{k_xk_yk_z\\epsilon_0}\\sum_{\|\\mathbf{k}\|\>0}\\frac{e\^{-j\\mathbf{k}\\mathbf{r}_i}e\^{-\\frac{\\sigma\^2 \|\\mathbf{k}\|\^2}{2}}}{\|\\mathbf{k}\|\^2}e\^{j\\mathbf{k}\\cdot\\mathbf{r}} \\

类似的可以根据达朗贝尔判别方法证明该式收敛。并且参考前面倒易空间中的\(\mathbf{k}\)的定义有:

\e\^{j\\mathbf{k}\\cdot\\mathbf{nL}}=e\^{2j\|\\mathbf{n}\|\\pi}=1 \\

也就是长程相互作用项可以略去周期性盒子的求和项,因此长程相互作用电势能的形式为:

\E\^L=\\frac{1}{2k_xk_yk_z\\epsilon_0}\\sum_{\|\\mathbf{k}\|\>0}\\frac{e\^{-\\frac{\\sigma\^2 k\^2}{2}}}{k\^2}\\sum_{i=0}\^{N-1}q_ie\^{-j\\mathbf{k}\\mathbf{r}_i}\\sum_{l=0}\^{N-1}q_le\^{j\\mathbf{k}\\cdot\\mathbf{r}_l} \\

后面这两个求和的内容形式是两个平面波函数的内积,其物理意义为把实空间的一个固定电荷按照概率幅分配到不同的倒易空间的格点上,可以定义一个倒易空间的电荷分布函数:

\S(\\mathbf{k})=\\sum_{i=0}\^{N-1}q_ie\^{j\\mathbf{k}\\cdot\\mathbf{r}_i} \\

则可以进一步简化长程相互作用势能的写法:

\E\^L=\\frac{1}{2k_xk_yk_z\\epsilon_0}\\sum_{\|\\mathbf{k}\|\>0}\\frac{e\^{-\\frac{\\sigma\^2 k\^2}{2}}}{k\^2}\\left\|S(\\mathbf{k})\\right\|\^2 \\

需要注意的一点是,虽然这里的长程相互作用势能是收敛的,但是其中包含了点电荷\(i\)对\(\mathbf{r}_i\)处产生的电势能(需要去除)。而此前计算短程相互作用时可以得到的误差函数形式的长程相互作用形式:

\\\begin{align\*} V_i\^L(\\mathbf{r})\&=\\sum_{\\mathbf{n}}\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i-\\mathbf{nL}\|}-V_i\^S(\\mathbf{r})\\\\ \&=\\sum_{\\mathbf{n}}\\frac{q_i}{4\\pi\\epsilon_0\|\\mathbf{r}-\\mathbf{r}_i-\\mathbf{nL}\|}Erf\\left(\\frac{\|\\mathbf{r}-\\mathbf{r}_i-\\mathbf{nL}\|}{\\sqrt{2}\\sigma}\\right) \\end{align\*} \\

虽然不收敛,但是如果在这里取一个\(\mathbf{r}=\mathbf{r}_i,\mathbf{nL}=0\),也就是前面提到的电荷自我相互作用,则长程相互作用形式变为:

\V_i\^L(\\mathbf{r}_i)=\\frac{q_i}{4\\pi\\epsilon_0}\\sqrt{\\frac{2}{\\pi}}\\frac{1}{\\sigma} \\

则可以得到在倒易空间的长程相互作用项中需要扣除的自我相互作用项为:

\E\^{self}=\\frac{1}{2}\\sum_{i=0}\^{N-1}q_iV_i\^L(\\mathbf{r}_i)=\\frac{1}{4\\pi\\epsilon_0}\\frac{1}{\\sqrt{2\\pi}\\sigma}\\sum_{i=0}\^{N-1}q_i\^2 \\

总电势能

经过前面的计算,我们已经分别得到了实空间收敛的短程相互作用项、倒易空间收敛的长程相互作用项以及长程相互作用项中需要扣除的一个自我相互作用项,那么可以汇总电势能为:

\\\begin{align\*} E\&=E\^S+E\^L-E\^{self}\\\\ \&=\\sum_{\\mathbf{n}}\\sum_{i=0}\^{N-2}\\sum_{j=i+1}\^{N-1}\\frac{q_iq_j}{4\\pi\\epsilon_0\|\\mathbf{r}_j-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{r}_j-\\mathbf{r}_i+\\mathbf{n}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right)+\\sum_{\|\\mathbf{n}\|\>0}\\frac{q_i\^2}{4\\pi\\epsilon_0\|\\mathbf{n}\\mathbf{L}\|}Erfc\\left(\\frac{\|\\mathbf{n}\\mathbf{L}\|}{\\sqrt{2}\\sigma}\\right)\\\\ \&+\\frac{1}{2k_xk_yk_z\\epsilon_0}\\sum_{\|\\mathbf{k}\|\>0}\\frac{e\^{-\\frac{\\sigma\^2 k\^2}{2}}}{k\^2}\\left\|S(\\mathbf{k})\\right\|\^2\\\\ \&-\\frac{1}{4\\pi\\epsilon_0}\\frac{1}{\\sqrt{2\\pi}\\sigma}\\sum_{i=0}\^{N-1}q_i\^2 \\end{align\*} \\

总结概要

本文介绍了Ewald求和计算方法在周期性边界条件下计算静电势能的方法。周期性的静电势函数并不是一个空间收敛的函数,通过Ewald求和可以将静电势切分为短程相互作用和长程相互作用,两项分别在实空间和倒易空间(或称傅里叶空间、k空间等)收敛。然后就可以进一步进行截断,用更少的代价获得更高精度的电势能计算结果。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/ewald.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

参考链接

  1. http://micro.stanford.edu/mediawiki/images/4/46/Ewald_notes.pdf