仓库源文站点原文


layout: post title: MD模拟中施加外磁场 categories:


在MD模拟中可以施加外场, 除电场, 磁场, 重力场等常见外场, 也可以施加一些人为的外场, 如剪切, 排斥等. 电场, 重力场的施加比较简单, 因为由它们引起的力只取决于粒子的电荷或质量, 而这些都是粒子的基本属性, 在模拟过程中不会变化, 很容易处理. 施加磁场就麻烦一些. 根据经典的电动力学理论, 带电粒子在磁场中运动时会受到洛伦兹力, $\vec F=q (\vec v × \vec B)$. 这个力的大小正比于粒子的速度和磁感应强度, 方向始终与粒子速度垂直, 因而不会做功, 只会改变粒子运动速度的方向. 由于洛伦兹力与粒子的速度有关, 而粒子速度在MD模拟过程中是变化的, 需要借助数值积分进行更新, 这样就导致没有办法直接施加磁场, 因为速度和力耦合在一起, 必须隐式地求解的更新方程, 或借助其他特殊的算法.

总体而言, MD代码中实现外磁场难度不大, 但应用并不广泛, 猜测原因在于外磁场对体系的影响比较小, 也没有太多有意义的体系可供研究.

GROMACS目前不支持外磁场, 需要自己修改代码实现. DL_POLY支持好几种外传, 包括外磁场, 所以一般涉及外磁场的模拟都是使用DL_POLY完成.

下面是我初步查阅的几篇文献, 可以作为外磁场实现和测试的参考.

详细讨论了如何在MD过程中施加外磁场, 给出了具体的实现方法和公式, 很多程序的实现都参考了这篇文献给出的方法.

研究了外磁场对液态水的影响, 施加外磁场的方法基于前一篇文献.

给出了外磁场实现的简单原理, 更重要的是给出了具体的模拟实例, 可用于测试.

两个应用实例, 看看施加外磁场能做些什么.