Skip to content

根据已有轨迹运行CP2K分子动力学计算

学习目标

  • CP2K 分子动力学计算的输入文件

  • 如何根据已有的CP2K轨迹进行计算

学习资料

CP2K官方手册:Section MD

CP2K官方练习:AIMD of bulk liquid water

CP2K MD Section 的输入文件

请先了解CP2K的输入文件语法,指路:CP2K:能量与力的计算

CP2K 的输入文件由不同的 SECTION 组成,而每个 SECTION 下级有可以包含 SUBSECTIONKEYWORDS,这些不同等级的 SECTION 和 KEYWORD 都是大写英文单词。一份输入文件的语法如下:

&SECTION
  &SUSECTION
  ...
  &END SUBSECTION
  KEYWORD1 <value>
  KEYWORD2 <value>
  ...
&END SECTION

而如果希望用CP2K进行MD计算,需要根据体系的需要,配置CP2K:能量与力的计算中介绍的 GLOBALFORCE_EVAL 这两部分,并且将 SECTION GLOBAL 下的关键字 RUN_TYPE 改为MD

&GLOBAL
  ...
  RUN_TYPE MD <---- 运行MD任务请将 RUN_TYPE 改为 MD
&END GLOBAL

此外,还需要在配置文件 input.inp 中写入 :

  • MOTION: 包含如何演变原子核(例如MD),控制输出什么数据

SECTION in input.inp. This section defines a set of tool connected with the motion of the nuclei.

  • MD: 包含了一些分子动力学模拟的基本参数,如选择什么系综(ensemble)、温度、步长和总步数等。

SUBSECTION in MOTION. This section defines the whole set of parameters needed perform an MD run.

一个简单的 MOTION 部分的例子

&MOTION 
  &MD
    ENSEMBLE NVE
    STEPS 10
    TIMESTEP 0.5
    TEMPERATURE 300.0
  &END MD
  &PRINT
    &CELL
      &EACH
        MD 1
      &END EACH
    &END CELL
    &FORCES
      &EACH
        MD 1
      &END EACH
    &END FORCES
    &TRAJECTORY
      &EACH
        MD 1
      &END EACH
    &END TRAJECTORY
    &VELOCITIES
      &EACH
        MD 1
      &END EACH
    &END VELOCITIES
  &END PRINT
&END MOTION

以上例子非常直接,一行一行读下来字面意思就是MD的参数设置。值得注意的是在 PRINT 部分中的 &EACH MD 1 &END EACH 控制的是MD打印输出的频率,指的是每一步MD模拟对应一个输出,设置成3就是每三步输出一次。EACH中MD输出频率缺省值是1

Warning

为了方便分析,CELL 的输出频率应该和 TRAJECTORY 的保持一致

根据已有轨迹进行MD计算

有的时候,我们需要对已有的一条MD轨迹进行计算:

  • 对机器学习势函数生成的MD轨迹进行精确计算

  • 更改FORCE_EVAL 部分的参数,提升已有轨迹能量和力的计算的精度

  • ……

我们可以在CP2K输入文件的 MD SECTION 下加入REFTRAJ SECTION来实现对已有轨迹的计算。

以TiO2为例子,需要在提交任务的目录下准备:

tree
.
├── cp2k.lsf                    <---- cp2k 任务提交脚本(/data/share/base/scripts/cp2k.lsf) 
├── input.inp               <---- cp2k 输入文件
├── reftraj.xyz       <---- 已有的轨迹
└── rutile.xyz          <---- 可以是轨迹中的一帧结构

0 directories, 4 files

其中 rutile.xyz 对应的是输入文件input.inpSUBSYS 中指定盒子中的原子坐标文件,可以直接选用已有轨迹中的某一帧数据。

针对这一任务,在 MOTION 部分写入

&MOTION
  &MD
    &REFTRAJ
      TRAJ_FILE_NAME reftraj.xyz
      EVAL_ENERGY_FORCES .TRUE.
      EVAL_FORCES .TRUE.
      FIRST_SNAPSHOT 1
      LAST_SNAPSHOT 50
      STRIDE 1
    &END REFTRAJ
    ...
  &END MD
  &PRINT
    ...
  &END PRINT

其中 TRAJ_FILE_NAME 关键字指定了当前文件夹下的 reftraj.xyz 做为需要计算的轨迹。

值得注意的是,CP2K输入文件中给关键字赋逻辑值时用 .TRUE..FALSE.,而 EVAL_ENERGY_FORCES 和 EVAL_FORCES 的缺省值是 .FALSE.,因此如果要计算能量和力必须要明确指定这两个关键字。

FIRST_SNAPSHOT , LAST_SNAPSHOTSTRIDE这一组关键词指定了如何对 reftraj.xyz 的结构进行计算。指的是从已有轨迹的第 FIRST_SNAPSHOT 帧到第 LAST_SNAPSHOT 帧结构,每 STRIDE 帧结构计算一次。而对于本例子,reftraj.xyz中共有50帧结构,因此以上配置文件表明从已有轨迹的第 1 帧到第 50 帧结构,每 1 帧结构计算一次,所以这样设置会计算已有轨迹中的每一个结构的能量和力。

Comments