|||
关于分子动力学模拟中邻区列表算法的优化理论
侯吉旋
Laboratoire de Physique, UMR 5182 CNRS, Ecole Normale Supérieure de Lyon, 46, Allée d’Italie, F-69364 Lyon Cedex 07, France
在过去的半个世纪里,分子动力学方法已经成功地应用到许多科学领域并取得了众多成果。但由于计算机的计算能力有限,大尺度的分子动力学模拟一直是一个难题。对于一个含有N个粒子的可加系统,每一步运算都需要计算N(N-1)/2个粒子相互作用。然而对于短程相互作用体系,如Lennard-Jones系统,每个粒子只与距离小于截断半径Rcut范围内的粒子相互作用,因此在实际运算过程中只需要计算大约(4pRcut3r/3)N/2个粒子相互作用即可,r为系统的密度。可见大部分计算时间都浪费在对结果没有贡献的粒子间相互作用上。
为此在1967年Verlet采用了一种邻区列表算法,大大缩短了短程相互作用系统的计算机模拟的计算时间。在这个算法中,引入了一个比截断半径Rcut稍大的列表半径Rlist,两者之差叫做皮肤半径DºRlist-Rcut,见图1。在模拟的第一步,每个粒子的半径为Rlist的邻区内的粒子编号都储存在一个列表里,在接下来的运算中,我们只需要考虑该粒子与之相对应的列表中的粒子的相互作用,这样每步的运算量正比于N。直到有一个粒子的位移大于皮肤半径的一半,即D/2,则列表需要更新,以免在列表半径以外的粒子进入到相互作用区域内,那么这一步的运算量正比于N2。由于仅在需要更新列表的时候运算量与没有采用邻区列表算法时候的运算量相当,而其他步数都节省了很多运算时间,因此邻区列表算法大大加速了分子动力学模拟。
邻区列表算法示意图
皮肤半径D大小的选取直接影响了计算时间的长短。如果D太小,则列表需要经常更新,那么就无法节省计算时间。如果D太大,以至于列表里面几乎涵盖了整个体系大部分粒子,尽管列表不需要更新,但是每一步的计算量和不使用邻区列表的时候一样,也无法节约时间。因此需要选择一个最优的D,使得计算时间最小。
尽管邻区列表算法被广泛应用,但是很少有文章系统地研究过邻区列表算法的优化问题。我们提供了一种选择最优化参数的计算方法。通过分别使用自由粒子近似和扩散近似对所需模拟的时间进行计算, 再对两种近似计算进行比较.
我们研究了更新间隔和皮肤半径D的关系。当D较小的时候,更新间隔是D的一次函数,对应于自由粒子近似;当D较大的时候,更新间隔是D的二次函数,对应了扩散近似。
更新间隔与皮肤半径的关系
the solid line is given by free particle approximation; the dashed line is given by diffusion approximation.
现在来看看我们最关心的计算机所消耗的时间。下图显示了不同浓度下计算时间和皮肤半径大小的关系。正如所预期的,在皮肤半径D小的时候,自由粒子描述与模拟数据符合得很好,而在皮肤半径D大的时候扩散描述与模拟数据符合得很好。同时,在密度小的时候,自由粒子描述与大部分数据都很接近,而扩散描述只与小部分数据符合。而当密度升高,自由粒子描述与模拟数据的符合程度逐渐降低,而扩散描述与模拟数据的符合程度逐渐升高。从图中我们可以看到,能让计算时间最小的皮肤半径的值介于自由粒子描述的最优化点和扩散描述的最优化点之间。密度越小,实际模拟的最优化点和自由粒子描述的最优化点越接近。而密度越大,实际模拟的最优化点和扩散描述的最优化点越接近。
The CPU time as a function of the skin radius for different density.
有了我们的理论之后,做分子动力学模拟的你就不需要盲目的尝试了。如果你的系统处在低密度状态,使用自由粒子近似就知道怎么选择参数让计算时间最小。如果你的系统是高密度状态,那么用扩散近似就知道怎么选择参数了。一般情况下,最优的参数选择都会落在这两个近似给出的最优值之间。
References
侯吉旋,司黎明, Optimization Theory for Neighbor List Algorithmin Fluid System Simulation. 物理化学学报, 2009, 25(03): 430-434.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 07:49
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社