5.2 分子动力学2

参考官网:
https://www.vasp.at/wiki/index.php/Machine_learning_force_field_calculations:_Basics

https://www.vasp.at/wiki/index.php/Best_practices_for_machine-learned_force_fields

https://www.vasp.at/wiki/index.php/Machine_learning_force_field:_Theory

vasp6自带的机器学习

on-the-fly训练是基于分子动力学(MD)模拟来采样训练结构。逐步自动组装数据集,并在可行时用于生成MLFF。相反,在每个时间步骤中,当前力场预测能量、力和相应的贝叶斯误差估计。简单来说,如果误差超过一定阈值,将执行另一个从头开始的计算,并将参考能量和力添加到训练数据集中。相反的情况下,从头开始的步骤将被省略,系统将通过MLFF预测进行传播。随着轨迹上力场的改善,许多从头开始的步骤可以被避免,MD模拟将显著加速。最终,现场训练会产生一个准备投入生产的MLFF,即以预测模式运行MD模拟。以下步骤概述了从开始到生产运行的路径:

基础

1、准备

准备POSCAR、POTCAR、KPOINTS和AIMD的INCAR文件。

2、从零开始 on-the-fly训练

1
2
ML_LMLFF = .TRUE.  #开启机器学习
ML_MODE = train #训练模式

将会生成几个重要的文件:

ML_LOGFILE The log file for all MLFF-related details; training status, current errors and other important quantities can be extracted from here.(search err)

ML_ABN This file contains the collected training structures and a list of selected local reference configurations.

ML_FFN A binary file containing the current MLFF.

3、重复训练(可选)

1
2
cp ML_ABN ML_AB
cp CONTCAR POSCAR

也可以重复2步骤完全重新训练。INCAR和其他文件保持不变。如果读取上一步的力场,可以修改POSCAR以完成结构的变化,比如吸附、表面等。

将 ML_MODE 设置为 train 不变,然后重新启动 VASP。日志文件将包含一个描述现有数据集的部分,以及在生成力场之后,常规的即时程序将继续进行。最终,ML_ABN 将包含来自两个即时运行的训练结构。类似地,ML_FFN 文件是一个合并的力场。在存在 ML_AB 文件的情况下,train 模式将始终执行一个续集运行。如果想重新开始,只需从执行目录中删除 ML_AB 文件。

4、refit快速预测

cp ML_ABN ML_AB

INCAR修改:

ML_MODE = refit

会生成新的 ML_FFN。官网提示这一步是必要的。在即时训练成功且结果符合你对适用性和剩余误差的期望时,在力场应用于仅预测的 MD 运行之前还有最后一步需要完成:为快速预测模式重新拟合。再次将最终数据集拷贝到 ML_AB 文件中:

cp ML_ABN ML_AB
同时,在 INCAR 文件中设定:

ML_MODE = refit
运行 VASP 将会创建一个新的 ML_FFN 文件,最终可以用于生产。

重要提示:尽管在技术上可能直接进行第5步,但强烈不建议这样做。没有重新拟合步骤,VASP 无法启用具有大约 20 到 100 倍加速的快速预测模式。你可以检查 ML_FFN 文件的 ASCII 头部信息,确保其中的力场支持快速预测。

5、运行机器学习MD

cp ML_FFN ML_FF

INCAR修改:

ML_MODE = run

选择这个设置后,VASP 将仅使用来自 MLFF 的预测结果,不进行从头算的计算。与相应的从头算运行相比,每个时间步的执行时间将降低几个数量级。

提示:MLFF 可以应用于更大的系统尺寸,即,你可以复制模拟盒以获得改进的统计数据。由于这种方法与原子数呈线性关系,因此你可以轻松估计对计算需求的影响。

ML_MODE参数见:
https://www.vasp.at/wiki/index.php/ML_MODE

建议:

即时学习可能比单点电子计算要复杂得多,因为它结合了 VASP 的多个特征。每个部分都需要通过可用的 INCAR 标签进行适当设置。如果计算的某个部分配置错误,可能会严重影响生成的 MLFF 的质量。在最坏的情况下,成功的训练甚至可能不可能实现。更具体地说,即时学习需要控制以下方面:

一致的收敛性
需要确保通过即时学习收集的所有从头算参考数据在单点电子计算设置方面是一致且收敛良好的。注意分子动力学运行中针对不同温度和密度的目标。一个 MLFF 只能再现单一的势能景观!
正确设置分子动力学模拟
考虑热力学集合的选择、恒温器和恒压器设置以及适当的时间步长。
正确设置机器学习力场参数
注意系统相关参数,如截断半径或原子环境描述符分辨率。
通过即时学习控制数据集生成
监控和控制通过自动贝叶斯阈值确定和稀疏化收集多少从头算参考数据。
质量控制
建立对剩余训练误差的合理期望。通过将预测与已知量(从从头算中)进行比较来评估生成的力场的质量。
提示:在尝试从头开始生成 MLFF 之前,首先要彻底熟悉系统的纯从头算计算。一旦你有信心控制收敛性,可以继续进行一次简短的 MD 模拟,不使用机器学习辅助。验证结果是否符合预期的值,如守恒原理等。只有在这样做之后,才能继续进行计算的机器学习方面。

  • 熟悉第一性原理计算,机器学习之前先进行简短的MD模拟以验证结构是否符合预期。
  • 为了结果的准确性,要注意动态训练收集的参考数据与单点电子计算设置保持一致且收敛良好。注意 MD 运行中针对的不同温度和密度。MLFF只能再现单一的势能!
  • 选择MD过程合适的系综、时间步长等参数

进阶

使用机器学习力场方法,VASP可以基于第一性原理模拟来构建力场。在构建、测试、重新学习和应用力场时,必须仔细考虑许多方面。这里列出了一些最佳实践,但请注意,这个列表并不全面,这种方法尚未被应用到大量系统中。因此,我们建议进行常规严格的监测,这对所有研究项目都是必要的。机器学习力场(MLFF)培训所需的基本步骤可以在机器学习力场计算的基础页面上找到。

要开始训练运行,请将 ML_MODE = TRAIN。取决于在执行 VASP 的文件夹中是否存在有效的 ML_AB,将自动选择两种模式中的一种:没有 ML_AB 文件:训练算法将从零开始。存在 ML_AB 文件:基于现有结构数据库将继续训练。在这种操作模式下,将从现有数据库(ML_AB 文件)生成一个力场,然后从指定的 POSCAR 文件中继续进行 MD 运行。这种模式用于从材料的相空间中选择额外的结构。但也可以用于通过首先训练块材料,然后在 POSCAR 文件中向表面添加分子并继续训练来检查表面。
如果有几个相同种类的原子应该由机器学习算法进行不同处理,重要的是在 POSCAR 文件中给它们不同的名称。例如,如果在块材料中有氧原子并且在表面的分子中也有氧原子,建议在 POSCAR 中将氧原子分成两组,并分别命名为 O1 和 O2。不可能在POSCAR文件中给不同的原子组相同的名称,名称限制为两个字符。训练模式要求VASP执行从头算计算,因此第一步是建立电子最小化方案。

警告:非常重要的一点是在从头开始训练和继续训练之间不要更改INCAR文件中的从头参数设置。同样,在恢复训练时不允许更改POTCAR文件。

第一性原理计算部分

  • 先进行自洽计算,不要设置 MAXMIX>0
  • 一般可以先单胞,然后应用到超胞。
  • 自洽计算检查K点、截断能等收敛情况。
  • (ISYM=0)对于标准的MD
  • NPT等不固定体积的ENCUT要比固体体积大30%。

通常,VASP DFT 计算适用的一切也适用于这里。电子最小化的准则可用于为即时学习设置从头算部分。另外,我们强烈建议在即时学习期间遵循以下关于从头算计算的准则:
当使用用于机器学习的力场时,请不要设置 MAXMIX>0。在机器学习过程中,常常会跳过第一原理计算数百甚至数千个离子步骤,而离子在第一原理计算之间可以有明显的移动。在这些情况下,使用 MAXMIX 往往会导致电子结构不收敛或在自洽循环中出现错误。
通常可以在较小的单元胞上训练力场,然后将其应用于较大的系统。务必选择一个足够大的结构,以便声子或集体振荡“适应”到超晶格中。
学习准确的力很重要。为此,必须检查电子最小化是否收敛。这些检查可能包括 KPOINTS 文件中的 k 点数目、平面波极限(ENCUT)、电子最小化算法等。
关闭标准分子动力学运行的对称性(ISYM=0)。
对于没有固定网格(NpT)的模拟,平面波截断 ENCUT 必须设置得比固定体积计算高出至少 30%。此外,经常重新启动(ML_MODE=TRAIN,工作目录中存在现有的 ML_AB 文件)以重新初始化 KS 轨道的 PAW 基函数并避免 Pulay 应力。

MD部分

  • 有轻原子要减小POTIM或增大轻原子的POMASS,氢原子不超过0.7 fs 氧原子不超过 1.5 fs。
  • TEEND要大于TEBEG,且大于目标温度30%。
  • 最好NPT,或者NVT+ Langevin thermostat,避免NVE。

通过Hellmann-Feynman定理从电子最小化获得力之后,VASP必须传播离子以在相空间中获得新的构型。对于分子动力学部分,熟悉设置分子动力学运行是有利的。此外,在分子动力学部分,我们建议以下设置:

如果系统中含有轻元素,请减小积分步长(POTIM),或者在INCAR或POTCAR文件中增加轻元素质量(POMASS)。作为一个经验法则,时间步长不应超过氢元素和含氧化合物分别为0.7 fs和1.5 fs。然而,对于重元素(如硅),3 fs的时间步长可能效果更好。
如果可能的话,通过温度梯度逐渐加热系统(将TEEND设置得高于TEBEG)。从一个较低的温度(不是零度)开始,并逐渐增加到所需应用温度的30%以上。这将有助于“实时”训练探索相空间的更大部分,并将导致更稳定的力场。
如果可能的话,更倾向于在NpT集合中进行分子动力学训练(ISIF=3)。额外的晶胞波动可以提高所得到的力场的稳健性。但是,对于流体,只允许超晶胞的体积变化,否则晶胞可能“崩溃”,即极端倾斜,使系统成为一层原子。这可以通过ICONST在这里和这里来实现。有关约束晶胞形状的示例输入,请参阅ICONST页面或本页面的末尾。NVT集合(ISIF=2)对于训练也是可以接受的,但使用随机热浴恒温器,因为它非常适合相空间采样(遍历性)。
我们应该尽可能地探索材料相空间的更多部分。因此,应始终避免在NVE集合中训练。

训练部分

  • 分步训练:比如表面吸附分子,先训练晶体,然后表面、单独分子和整个系统。
  • 给定结构,温度、压力越大,误差越大,

ML_MODE=TRAIN已经为机器学习中的即时训练设置了广泛使用的默认值。尽管如此,我们仍然想为设置单独的机器学习参数提供以下指导:

如果系统包含不同组件,首先要分别训练它们。例如,如果系统由一个晶体表面和与该表面结合的分子组成。先训练主要的晶体,然后是表面,可能是孤立的分子,最后是整个系统(如果您不需要描述孤立的分子,可以跳过对该分子的训练)。通过这种方式,可以避免在计算密集型的复合系统中进行大量的从头算计算。

如果在训练过程中没有足够的参考配置(在ML_ABN中可以看到),则应该调整ML_EPS_LOW的默认值,以稀疏使用从ML_AB中提取的局部参考配置。这可以改善训练好的力场的性能。但是,这也可能会降低准确性。

注意:超参数优化应始终从默认值开始。对于流体,减少ML_LMAX2=2和ML_RCUT2=4可能会导致更好的拟合结果。

准确性

力场的可实现准确性取决于许多因素,例如物种、温度、压力、电子收敛、机器学习方法等。在我们实现的核岭回归中,随着本地参考构型数量的增加,力场的准确性也会提高。这种增加并非是线性的,同时计算成本也会线性增加。在生成机器学习力场时,总是存在准确性和效率之间的权衡。

以下是一些经验指南:

对于给定的结构,随着温度和压力的增加,误差也会增加。因此,力场不应该在与目标条件相距太远的条件下进行训练。例如,对于在 300 K 下的生产运行,最好是在这个温度以上(450-500 K)学习,以捕获可能在生产运行中出现的更多结构,但是在比如 1000 K 下学习同一相位并不有益,因为这可能会降低力场的准确性。
液体通常需要更多的训练结构和本地参考构型才能达到与固体类似的准确性。要达到大约 30 meV/埃的误差,液体通常需要 2000-4000 个本地参考构型,而对于简单的周期体积系统,500-1000 个参考构型可能就足够了。
一般来说,能量的拟合误差应该小于 1 meV/原子,而在 300-1000 K 之间的温度下,力的误差应该在 30-100 meV/埃之间。略高于这些值的错误可能是可以接受的,但是这些计算应该仔细检查准确性。

准确的力场:
控制学习和采样的默认参数被选择为在准确性和效率之间提供良好的权衡。特别是,ML_EPS_LOW 的默认设置倾向于在稀疏化步骤中去除本地参考构型,从而限制了准确性。然而,进一步降低 ML_EPS_LOW 至 1.0E-11 以下的值并不会提高准确性,因为在贝叶斯回归中求解的正则化正规方程的条件数大约与在稀疏化过程中考虑的 Gram 矩阵的条件数的平方成正比(见此处)。因此,如果 Gram 矩阵的条件数为 1E9,那么正规方程的条件数就为 1E18,这意味着在解正规方程时会发生精度损失。

要获得保留更多本地参考构型的高度准确的力场,必须使用以下两步过程:

首先,进行完全的即时学习:

ML_IALGO_LINREG=1; ML_SION1=0.3; ML_MRB2=12
这可以由许多不同的训练步骤组成,包括所有所需的结构。将 ML_MRB1 从 8 增加到 12,并将 ML_SION1 从 0.5 减少到 0.3,可以将 Gram 矩阵的条件数提高约 10 倍,并允许稀疏化步骤保留更多本地参考构型(通常约 2 倍)。当然,这会在一定程度上减慢力场计算的速度。

如果无法进行完全的重新训练,还可以尝试仅增加本地参考计算的数量,就像上面描述的那样,通过使用 ML_MODE=SELECT 并选择一个为 ML_CTIFOR 值,以获得令人满意的本地参考构型数量。

其次,使用 ML_MODE=REFIT 对力场进行重新调整。

使用 SVD 而不是求解正则化正规方程可以避免问题的平方化,因此设计矩阵的条件数而不是它的平方变得重要。根据我们的经验,使用默认值 ML_SION1=0.5 进行 SVD 调整总是会提高力场的准确性。

动态调节参数

如果选择了太多或太少的训练结构和本地参考配置,可以调整一些动态参数(关于学习和阈值算法的概述,请参考这里):

ML_CTIFOR:为每个原子的贝叶斯力误差定义学习阈值。在继续运行中,它可以设置为先前运行的ML_CTIFOR的最后一个值。这样可以跳过计算开始时不必要的采样。然而,当从一个结构转移到另一个结构时,此标记应该非常小心设置。ML_CTIFOR取决于物种和系统。例如,低对称结构,比如液体,通常比同一化合物的高对称固体具有更高的误差。如果首先学习液体,并且使用液体的最后一个ML_CTIFOR用于对应的固体,则此ML_CTIFOR对于固体而言太大,所有预测的错误都将低于阈值。因此,在固体上不会进行任何学习。在这种情况下,最好从ML_CTIFOR的默认值开始。ML_CTIFOR的典型可达值约为0.02在300-500 K左右,约为0.06在1000-2000 K左右,因此取决于温度,也取决于系统。

ML_CX:它涉及阈值的计算,ML_CTIFOR =(历史上存储的贝叶斯错误的平均值)*(1.0 + ML_CX)。此标记影响选择训练结构和本地参考配置的频率。ML_CX的正值导致更少的采样(因此更少的自始至终的计算),负值导致相反的结果。ML_CX的典型值介于-0.3和0之间。对于使用加热的训练运行,默认通常会导致平衡良好的机器学习力场。当在固定温度下进行训练时,通常希望将ML_CX减小至-0.1,增加第一性原理计算的数量,从而增加训练集的规模(默认值可能导致训练数据太少)。

ML_MHIS:设置用于更新ML_CTIFOR的先前贝叶斯错误数量(从ML_ICRITERIA的默认学习步骤)。如果在初始阶段之后,阈值更新之间出现贝叶斯错误的强烈变化,并且每次更新后阈值也会发生强烈变化,则可以降低此标记的默认值10。

ML_SCLC_CTIFOR:仅在选择本地参考配置时缩放ML_CTIFOR。与ML_CX相比,此标记不会影响采样的频率(自始至终的计算)。较小的值意味着选择更多的本地参考配置;较大的值意味着选择更少的本地参考配置。

ML_EPS_LOW:控制选定的贝叶斯错误估计本地参考配置数量的稀疏化。增加ML_EPS_LOW会增加删除的本地参考配置数量,减少则相反。此标记也不会影响学习频率,因为在选定新结构的本地参考配置之后才执行稀疏化。我们不建议将阈值增加到大于1E-7的值。在该值以下,此标记可以很好地控制本地参考配置的数量,但是对于多组分系统,稀疏化算法往往会导致不同物种的本地参考配置数量出现明显不平衡。

ML_LBASIS_DISCARD:控制在任何物种的最大本地参考配置数量ML_MB达到之后是否继续计算。先前的默认行为是ML_LBASIS_DISCARD=.FALSE.:当任何物种的本地参考配置数量达到ML_MB时,计算将停止并要求增加ML_MB。在多组分系统中,对于一种物种,稀疏表示很快超过ML_MB,而其他物种的本地参考配置尚未被确定地描述,并且仍远低于限制ML_MB。因此,目前的默认值是ML_LBASIS_DISCARD=.TRUE.:在这种情况下,代码在达到阈值时处置本地参考配置。它是根据物种而不同的。

实时学习监控

你的学习监控可以分为两部分:

分子动力学/系综相关数量:

通过视觉方式监测结构。这意味着查看带有结构/轨迹查看器的CONTCAR或XDATCAR文件。很多时候,当出现问题时,可以立即追溯到不希望或非物理形变。

OUTCAR、XDATCAR和CONTCAR文件中的体积和晶格参数。确认平均体积保持在期望范围内是很重要的。在恒温恒压运行中,如果平均体积随时间发生强烈变化,表明可能存在相变或未适当平衡系统。特别麻烦的是在单个VASP运行期间发生强烈的剪切:由于VASP保持平面波基组固定并最初使用球形截断球,截断球实际上变成一个椭球。也就是说,截断球在某些倒易格子方向上变小。在单次运行中,晶格矢量的变化超过10%必须避免。相关的数据文件(ML_AB)不适合继续训练(将你的计算分批进行)。

OUTCAR和OSZICAR文件中的温度和压力。计算开始时温度和压力与期望值存在较大偏差,表明起始位置未适当平衡。如果期望特征发生强烈振荡,可以使用块平均值来监测它们(有关块平均值的更多信息,请参见下文中的“应用”)。
成对关联函数(PCDAT)。

ML_LOGFILE文件中的机器学习特定量:

每核所需内存估计。这在分配之前写在ML_LOGFILE的开头(见这里)。非常重要的一点是,如果所需内存超过物理可用内存,计算不会立即在静态数组分配时崩溃,因为许多系统使用懒惰分配。在内存不足之前,计算可能运行很长时间。因此,必须在启动后始终检查内存估计。
状态:显示每个分子动力学步骤发生的情况。当状态为“学习/关键”时,状态“力场”被更新。从一开始就经常监测这个变量(在ML_LOGFILE.1中搜索“状态”ML_LOGFILE.1|grep -E ‘learning|critical’|grep -v“#”)。如果经过50次迭代后计算仍然在每步更新“力场”,这表明计算中有严重问题。如果计算在几步后停止学习并且以后仅进行力场步骤,那么将不会得到有用的力场。在理想的学习中,力场更新频率一开始很高,然后持续降低,直到算法只是间歇性地学习。需要注意的是,由于贝叶斯错误的近似预测,学习频率永远不会降到零。如果在分子动力学运行的后期阶段学习频率突然增加,通常表示正在探索当前力场未知的新相空间。但在训练结束时学习步骤的突然增加也可能表明系统发生了不希望的变形,这需要仔细研究。

LCONF:每个学习步骤的本地配置数。

ERR:关于从头计算数据对于所有训练结构到当前分子动力学步骤的预测能量、力和应力
${\displaystyle \Delta O={\sqrt {\sum \limits {N}(O{\mathrm {AI} }-O_{\mathrm {MLFF} })^{2}/N}}}$. 这里
N遍历所有训练结构的能量,逐元素遍历每个训练结构,乘以每个结构中每个原子的个数乘以三个笛卡尔方向的力,逐元素遍历每个训练结构,乘以张量的九个成分的每个张量组分力。

BEEF:能量、力和应力的估计贝叶斯错误(列3-5)。力的最大贝叶斯误差ML_CTIFOR的当前阈值在列6上。

THRUPD:ML_CTIFOR的更新。

THRHIST:用于ML_CTIFOR的贝叶斯错误历史。

力的真实误差(ERR的第4列)、贝叶斯误差(BEEF的第4列)和阈值(BEEF的第6列)的典型演变如下所示:

ICONST

在ICONST文件中定义了几何参数,然后在分子动力学模拟中进行监控或控制。例如,两个位置之间的距离可以通过偏差势的作用来约束或影响。最后,VASP将输出写入REPORT文件。

In case of primitive coordinates

flag = R: interatomic distance between atoms item(1) and item(2).

flag = A: angle defined by atoms item(1), item(2) and item(3) (with the atom item(2) being the apex).

flag = T: torsional angle defined by atoms item(1), item(2), item(3) and item(4).

flag = M: distance between atom item(1) and the center of bond between atoms item(2) and item(3).

flag = B: distance between the center of bond between atoms item(1) and item(2) and the center of bond between atoms item(3) and item(4)

flag = P: ratio of length of the bond between atoms item(1) and item(2) and the length of the bond between atoms item(3) and item(4)

flag = W: function
${\displaystyle {\frac {1-\left(R/c\right)^{M}}{1-\left(R/c\right)^{N}}}}$ wit with
𝑅 being the bond length (in Å) between the atoms item(1) and item(2),
𝑐 is the reference bond length specified as item(3), and the exponents 𝑀 and 𝑁 are defined as item(4) and item(5), respectively.

flag = X, Y, and Z: fractional (direct) coordinates linked with the lattice vectors
𝑎, 𝑏, and 𝑐.

flag = cX, cY, and cZ: Cartesian coordinates
𝑥, 𝑦, and 𝑧.

flag = LR: length of lattice vector item(1)

flag = LA: angle between lattice vectors item(1) and item(2)

flag = LV: cell volume (no item(i) is defined in this case)

complex coordinates

flag = S: simple linear combination of primitive coordinates, i.e., $\left(\xi =\sum { {i=1} }^{ {M} }c{i},q_{i}\right)$.

flag = C: norm of the vector of primitive coordinates, which reads
$\left(\xi ={\sqrt {\sum { {i=1} }^{ {M} },(c{i},q_{i})^{2}}}\right)$.

flag = D: coordination number[1], i.e.,
$\left(\xi =\sum { {i=1} }^{ {M} }{\frac {1-\left(q{ {i} }/c_{ {i} }\right)^{9} }{1-\left(q_{ {i} }/c_{ {i} }\right)^{ {14} }}}\right)$.

flag = IS: path-based coordinate[2] measuring progress along discretized path represented by
${\displaystyle {\tilde {q}}(j)}$ predefined in file IRCCAR, i.e.,
${\displaystyle \xi ={\frac {1}{N-1}}{\frac {\sum {i=1}^{N}(i-1)\exp \left(-\sum {j=1}^{M}c{j}(q{j}-{\tilde {q}}{j}(i))^{2}\right)}{\sum {i=1}^{N}\exp \left(-\sum {j=1}^{M}c{j}(q{j}-{\tilde {q}}{j}(i))^{2}\right)}}}$

flag = IZ: path-based coordinate[2] measuring orthogonal distance from the path ${\displaystyle {\tilde {q}}}$ predefined in file IRCCAR, i.e.,
${\displaystyle \xi =-{\frac {1}{c_{1}}}\log \sum _{i=1}^{N}\exp \left(-\sum {j=1}^{M}c{j}(q-{\tilde {q}}(i))^{2}\right)}$ with 𝑁 as defined above The complex coordinates are functions defined in the space spanned by the primitive coordinates.

Mind: 所有复杂坐标都必须在最后一个基本坐标之后定义。一旦定义了复杂坐标,基本坐标只是它们定义的基础,它们的状态就会被忽略。

Settings for item(i)

它取决于标志的设置。在大多数情况下,item(i)是一个整数,指定原子的位置或晶格矢量在POSCAR文件中的位置。请注意,需要两个原子来定义键长,需要三个原子来定义键角等等。在标志W的特殊情况下,还通过item(i)定义一些额外的参数,即参考键长(通常是一个浮点数)和用于定义的指数(整数)。请查看相应标志的描述信息。

Settings for status

status = 0: the coordinate is constrained.

status = 4: the coordinate is affected by a Fermi-type step function

status = 5: the coordinate defines the collective variable in metadynamics

status = 7: the coordinate is monitored

status = 8: the coordinate is affected by a harmonic potential

例子1:

1
2
3
R 1 6 0
R 1 5 0
S 1 -1 0

第一行代表原子1和6的距离,末尾0代表状态为约束。同样第二行代表原子1和5的距离,状态约束。

第三行代表复合坐标调节,S代表原始坐标的简单结合;后面代表两个键长的差值。

无论复合坐标调节何时定义都要以原始坐标为基础,因此尽管键长状态是0,但它受第三行控制。假如要固定第一个键长和复合坐标调节,应该设置为例2。

例子2:

1
2
3
4
R 1 6 0
R 1 5 0
S 1 -1 0
S 1 0 0

如果1-6距离是1.1 Å,1-5是1.5 Å,可以用两种方式调节。

(1) 用复杂调节参数D

1
2
3
R 1 6 0
R 1 5 0
D 1.1 1.5 0

在这种情况下,出现在定义 D 的公式的分子和分母中的指数分别固定为值 9 和 14。

(2) 使用 W 原始和 S 复杂坐标来固定相同的配位数

1
2
3
W 1 6 1.1 9 14 0
W 1 5 1.5 9 14 0
S 1 1 0

这种格式的优势在于,可以为每个距离单独设置系数 M 和 N (请参阅上面 W 的定义)。此外,这种格式还允许简单直观地定义多个配位数的按比例总和和/或差异,只需通过与 S 相关联的系数的合适选择即可,这些系数可以是正、负或零。

例子3:约束体积或形状

  1. 固定体积变形状
    1
    LV 0
  2. 固定基矢角度变长度
    1
    2
    3
    LA 1 2 0
    LA 1 3 0
    LA 2 3 0
  3. 固定形状立方晶系变体积

Note that the S type constraints involving the lengths of the lattice vectors (𝑎𝑖−𝑎𝑗=0) are chosen so as to preserve ratios 𝑎1:𝑎2:𝑎3=1:1:1, as required by the cubic shape.

1
2
3
4
5
6
7
8
9
10
11
12
LA 1 2 0
LA 1 3 0
LA 2 3 0
LR 1 0
LR 2 0
LR 3 0
S 1 0 0 0 0 0 0
S 0 1 0 0 0 0 0
S 0 0 1 0 0 0 0
S 0 0 0 1 -1 0 0
S 0 0 0 1 0 -1 0
S 0 0 0 0 1 -1 0
  1. 固定单斜晶系变体积

Here, in order to fix ratios between the lengths of the lattice vectors (𝑎1:𝑎2:𝑎3), we define the constraints of the form 𝑐𝑖∗𝑎𝑖+𝑐𝑗∗𝑎𝑗=0. For instance, if the cell vectors are such that the relative proportions of their lengths are 𝑎1:𝑎2:𝑎3=1:1.5:2, the following ICONST can be used:

1
2
3
4
5
6
7
8
9
10
11
12
LA 1 2 0
LA 1 3 0
LA 2 3 0
LR 1 0
LR 2 0
LR 3 0
S 1 0 0 0 0 0 0
S 0 1 0 0 0 0 0
S 0 0 1 0 0 0 0
S 0 0 0 1.5 -1.0 0.0 0
S 0 0 0 2.0 0.0 -1.0 0
S 0 0 0 0.0 4.0 -3.0 0

REPORT

输出文件REPORT包含有关MD运行的信息,例如模拟中使用的参数列表,受控几何参数的值,与热浴(Andersen热浴)的碰撞次数,计算自由能梯度所需的数量等。

监控几何参数

仅适用NVT系综。在ICONST文件中,状态为7的几何参数在MD模拟期间进行监控。相应数值在每个MD步骤之后的Monit_coord字符串后的行中写入REPORT文件。

有时,如果所有监控参数的数值大于预定义的上限和/或下限,终止模拟是可取的。用户可以通过VALUE_MAX和VALUE_MIN标签设置这些限制。

在MD运行期间监控几何参数:

  • 设置标准的MD相关标签:IBRION=0,TEBEG,POTIM和NSW
  • 设置MDALGO=2,并选择适当的SMASS设置
  • 在ICONST文件中定义几何约束,并将受约束坐标的状态参数设置为7
  • 可选地,通过VALUE_MAX和VALUE_MIN标签分别设置坐标的上限和/或下限。

Metadynamics

仅适用NVT系综。
要运行带有Andersen热浴的元动力学,需要做到:

  • 设置标准的分子动力学相关标签:IBRION=0,TEBEG,POTIM和NSW。
  • 设置MDALGO=1(或在VASP 5.x中为MDALGO=11),并选择适当的ANDERSEN_PROB设置。
  • 设置参数HILLS_H,HILLS_W和HILLS_BIN。
  • 在ICONST文件中定义集体变量,并将集体变量的STATUS参数设置为5。
  • 如果需要,在PENALTYPOT文件中定义偏置势。
  • 实际的时间相关偏置势被写入HILLSPOT文件,在添加新的高斯函数后进行更新。在模拟开始时,VASP尝试从PENALTYPOT文件中读取初始偏置势。要继续进行元动力学运行,将HILLSPOT复制到PENALTYPOT中。每个MD步骤的所有集体变量的值都列在REPORT文件中,在字符串“Metadynamics”之后检查这些行。