||
1. Data 文件
数据文件( datafile) 就是用来存放要模拟体系的初始构型的。 简单一点的, 里面就包含原子的坐
标信息; 复杂一点, 里面会包含键长、 键角等信息。 外部建模主要是通过数据文件 datafile 实现的,即只要你将你需要的构型以 datafile 所要求的格式保存成文件, 就能够被 LAMMPS 读入, 而建立模型。值得注意的是 Data 文件包含哪些原子信息取决于 atom_style, 一定原子的类型被设置了, 在模拟过程中就不能在改变了, 因此尽量更加通用的类型, 以免某些属性没有被包括却被用到了。 举例来说, 对于 bond 类型, 原子没有角度项, 也不能在模拟的过程中为模型添加角度属性。 尽量使用更加通用的类型, 虽然这可能会因为某些属性没有用到, 同时会稍微降低效率, 但总比出错好。具体的 atom_style 对应的 data 文件信息如下:
angle | atom-IDmolecule-IDatom-typexyz |
atomic | atom-IDatom-typexyz |
body | atom-IDatom-typebodyflagmassxyz |
bond | atom-IDmolecule-IDatom-typexyz |
charge | atom-IDatom-typeqxyz |
dipole | atom-IDatom-typeqxyzmuxmuymuz |
dpd | atom-IDatom-typethetaxyz |
edpd | atom-IDatom-typeedpd_tempedpd_cvxyz |
electron | atom-IDatom-typeqspineradiusxyz |
ellipsoid | atom-IDatom-typeellipsoidflagdensityxyz |
full | atom-IDmolecule-IDatom-typeqxyz |
line | atom-IDmolecule-IDatom-typelineflagdensityxyz |
mdpd | atom-IDatom-typerhoxyz |
mesont | atom-IDatom-typerhoecvxyz |
molecular | atom-IDmolecule-IDatom-typexyz |
peri | atom-IDatom-typevolumedensityxyz |
smd | atom-IDatom-typemoleculevolumemasskernel-radiuscontact-radiusxyz |
sphere | atom-IDatom-typediameterdensityxyz |
spin | atom-IDatom-typespxyzspxspyspz |
tdpd | atom-IDatom-typexyzcc1cc2ccNspecies |
template | atom-IDmolecule-IDtemplate-indextemplate-atomatom-typexyz |
tri | atom-IDmolecule-IDatom-typetriangleflagdensityxyz |
wavepacket | atom-IDatom-typechargespineradiusetagcs_recs_imxyz |
hybrid | atom-IDatom-typexyzsub-style1sub-style2 |
2. 势函数命令
在分子动力学模拟中, 粒子间的相互作用是通过势函数命令来指定的。 一般地, 原
子间的势函数命令有: pair_style,pair_coeff 和 pair_modify。 而对于分子内的原子间
的相互作用还需要:bond_style 和 bond_coeff 命令来确定, 这里介绍三个势函数命令
即: pair_style,pair_coeff 和 pair_modify。
( 1) pair_style 命令设置了每对原子截断半径内的相互作用的势函数类型。 这种势
函数所定义的原子间的相互作用是随时间变化的,与此对应的 bond_style 所设
置的原子间的相互作用一般不随时间变化。 在 LAMMPS 中, 一些多体势也归
类为对势, 例如 EAM,Stillinger-Weber,Tersoff,REBO 等。 因为这些势函数所定
义的原子间相互作用也是随时间变化的。 使用 hybrid 类型的势函数可以定义
不同类型的原子以不同的势函数相互作用。 势函数的具体类型确定后, 不同类
型原子的势函数的具体参数由 pair_coeff 命令设置,也可以由 read_data 命令和
read_restart 命令进行文件读入。
pari_style 命令一般会设置一个全局的截断半径, 全局的截断半径是可以被
pair_coeff 命令中的截断半径重新覆盖的。 一般地, 在一个 in 文件里重新使用
pair_style 会抹去之前设置的所有 pair_style 和 pair_coeff 命令, 除了对于
pair_styletable 和 hybrid 的设置。
以下是所有 pair_style 可选类型的概述:
pair_style none:关闭势函数相互作用。
pair_style hybrid:多种类型的势函数。
pair_style hybrid/overlay: 多种可叠加的势函数。
pair_style zero: 建立邻域列表但是没有相互作用。
pair_style adp: Mishin 依赖键角的势函数。
pair_style airebo: Stuart 的 AIREBO 势函数, 常用于描述碳体系。
pair_style airebo/morse: 利用 Morse 代替 LJ 势的 AIREBO 势函数。
pair_style beck: Beck 势, 最初用于模拟氦气。
pair_style body:体类型粒子间的相互作用。
pair_style bop: 基于量子力学计算 sigma 和 pi 键的键序势。
pair_style born:Born-Mayer-Huggins 势函数。
pair_style brownian:Brownian 势函数用于FLD(FastLubricationDynamics)。
pair_style buck:Buckingham 势函数。 LJ 势函数的变形。
pair_style colloid: 整合的胶体势, 描述颗粒与溶剂体系。
pair_style comb: 优化电荷作用的多体势。
pair_style coul/cut:截断库伦势。
pair_style dpd:耗散粒子动力学。
pair_style dsmc:直接模拟蒙特卡洛方法计算粒子碰撞。
pair_style eam: 嵌入原子势。
pair_style eim: 嵌入离子势。
pair_style gauss: 势函数的表达式具有 Gaussian 函数的形式。
pair_gayberne: 考虑各向异性的 LJ 势。
pair_style kim: KIM 项目势函数接口。
pair_style lcbop:长程键序势函数。
pair_style line/lj:线段类型粒子的 LJ 势函数。
pair_style lj/charmm:CHARMM 力场势函数。
pair_style lj/class2: COMPASS 力场势函数。
pair_style lj/cut:截断的 LJ 势
pair_style lj/expand: 扩展 LJ 势函数, 粒子半径可以为变量。
pair_style lj/gromacs: GROMACS 型 LJ 势。
pair_style lj/long: 长程 LJ 势。
pair_style lj96/cut:LJ9/6 势函数。
pair_style lubricate: 单一粒子弥散的液体润滑力计算。
pair_style meam:修改的嵌入原子势。
pair_style mie/cut: Mie 势函数。
pair_style morse: Morse 势函数。
pair_style nb3b/harmonic: 非键合三体简谐势函数。
pair_style nm/cut: N-M 势函数, 主要用于离子溶液。
pair_style peri:用于细观力学中的势函数计算。
pair_style polymorphic: 自定义自由形式的三体势函数。
pair_style reax:反应力场势函数。
pair_style rebo: Brenner 第二代 REBO 势函数。
pair_style resquared:Everaers 二次椭球势函数。
pair_style snap: 量子精度的谱分析邻域势函数。
pair_style soft: 余弦形式的软化势函数用于分开重叠的原子。
pair_style sw: Stillinger-Weber 三体势。
pair_style table:创建势能表。
pair_style tersoff: Tersoff 三体势。
pair_style tip4p/cut: 用于 TIP4P 水分子模型的库伦势。
pair_style tri/lj:三角形间的 LJ 势函数。
pair_style vashishta: Vashishta 二体或三体势。
pair_style yukawa: Yukawa 势函数。
pair_style zbl: Ziegler-Biersack-Littmark 势函数, 用于屏蔽核排斥的高
能原子碰撞模拟。
注意: 在以上概述的势函数中, 大部分在使用的时候需要特殊的功能包, 在编
译 LAMMPS 时需要加入相应的扩展包之后才能使用。
(2) pair_coeff
pair_coeff 命令指定了不同类型原子间势函数的具体参数。 其中 I,J 代表原
子类型, 可以利用具体的代表原子类型的数字表示, 要求 I<=J, IJ 间的相互
作用和 JI 间的相互作用是相同的。
采用星号*可以同时表示多种原子类型。 此时 I,J 可以有四种表示形式:
*,*n,n*,m*n。 单个星号表示所有的原子类型 1 到 N。 一次类推,*n 代表 1 到 n。
n*代表 n 到 N。 m*n 代表 m 到 n。
如果对同一对原子类型间设置多次势函数参数,新的参数会重新覆盖原来
的参数。 例如如下两行命令:
pair_coeff**101025
pair_coeff232010112
对于某些势函数当 I 不等于 J 的时候, 势函数的参数需要根据 I 和 I 之间或者
J 与 J 之间的参数进行计算。 此时可以通过 pair_modify 命令进行设置。 对于大
多数多体势来说, 势函数的参数是通过文件的形式输入到模拟中的, 此时需要
把用到的势函数文件放入相应的文件夹或指定势函数文件的路径。
( 3) pair_modify
pair_modifykeywordvalues
其中 keyword 可选的参数有:pairshiftmixtabletable/disptabinnertabinner/disptailcompute
Pair_model 命令可以修改当前定义的势函数参数。
pair 关键字用于 hybrid 和 hybrid/overlay 两种类型的势函数。 利用该关键字可以修
改子势函数类型中的参数。 special 关键字和 pair 连用, 可以定义子类型势函数中的独
特的势函数参数。
pair_modifypairlj/cut/coul/long1speciallj/coul000000
mix 关键字用于当 I 不等于 J 时势函数参数的计算方法定义。 并不是所有的势函数
类型, 都可以使用 mix 中的计算规则进行不同原子间的势函数参数计算。 以下是 mix
参数的定义:
mixgeometric
epsilon_ij=sqrt(epsilon_i*epsilon_j)
sigma_ij=sqrt(sigma_i*sigma_j)
mixarithmetic
epsilon_ij=sqrt(epsilon_i*epsilon_j)
sigma_ij=(sigma_i+sigma_j)/2
mixsixthpower
epsilon_ij=(2*sqrt(epsilon_i*epsilon_j)*sigma_i^3*sigma_j^3)/(sigma_i^6+sigma_j^6)
sigma_ij=((sigma_i**6+sigma_j**6)/2)^(1/6)
shift 关键字会影响在热力学参数输出中是否进行截断半径外的势能补偿。 但该命
令不影响模拟过程中实际力和轨迹的计算, 只是在最终势能或总能量输出的过程中,
补偿截断半径外的势能。
table 和 table/disp 关键字可以提前建立长程库伦力或长程耗散力的表格。在模拟时,
粒子间关于长程库伦作用项和长程耗散项的数值可以直接从表格中读取, 从而增加模
拟的效率。 可以通过查 manual 文件中确定哪些势函数可以建立这些表格。
tabinner 和 tabinner/disp 关键字可以设置上述表格中有关长程库伦力或长程耗散力
的截断半径。
tail 关键字为某些势函数的长程范德华力进行尾部校正。 这些校正一般不会影响原
子的动力学运动, 除非系统在恒压模式下模拟。 这些尾部校正也会影响到热力学量的
输出。尾部校正项是在一次 run 的开始统计原子数量并进行计算的。如果在模拟过程中,
原子有增加或丢失, 需要重新设置 run 进行校正计算。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 23:18
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社