2- 分子模拟软件和模拟步骤
2.1 Lammps特点:
- 多尺度、集成很多、适合物化过程
- NAMD和VMD结合可以对轨迹、大体系很适合
2.2 分子动力学学习
- 了解基础
- 基本流程
- 手册
- FAQ论坛
2.3 分子动力学的一般步骤
- 确定好初始条件后,使体系初始状态能量最小化,使其初始状态达到平衡状态;接着确定好势函数参数
- 预处理:使体系到达预期温度以后的稳态之后,也就是弛豫(使温度达到预期温度后转成NPT,减少热力学量的涨落,使温度更容易达到目标的压强和温度),才能开始抽样
- 抽样:既是统计平均,进行足够长时间的模拟,计算相关物理量。要抽样够足够的样品点,一般大于5000个点;要计算关联函数,能表征弛豫时间,抽样的点要跨越100t的时间间隔,就是不在关联时间才能计算体系的量
- 结果分析和评估
3 lammps简介
3.1 特点:
- 建模比较弱小
- 后期数据处理 pizza软件包可以处理数据
- 可扩展性好,稍微懂C语言比较好
3.2 如何学习?
- 概览手册,并大概了解框架。重点1.2,有哪些特点,可以做哪些研究对象(全原子,粗粒度,联合力场),哪些力场,系综
- 需要时直接查询
- in文件格式:直接找例子上手
- 命令主要分四类:
- 初始化:单位,维度,边界,原子类型,相互作用(看参考文献,看lammps里支持吗)
- 建模:data格式
- 设定:势函数参数,建立邻近列表,时间步长和设定,能量最小化
- 计算方法:
- 输入输出设定:
- 补充基础知识,不断积累经验
3.3 手册
- 可以处理的对象
- 处理的势函数类型
- 系综(主要是fix命令)
- 诊断方法
- 断点处理
4 案例讲解
4.1 建议
- 不要自己想当然写
- 用小系统测试
- 看命令和看手册要连贯看,看how to discussion
- 多看别人写的例子,先follow别人的文章(介绍方法比较详细)
4.2 复刻文献基本信息
- 聚合物N=20/ -e
- 反离子 Nc=Np/
4.3 in 文件撰写
- 软件:Ultra data
- 第一步注释 in文件目标
# BD simulation of polyelectrolyto polymer in counterion ion
echo screen # 调试,往in文件和屏幕输出到log文件中
# 初始化-物理模型
units lj #用相关领域的单位
dimension 3 #定义维度,要在定义盒子之前定义
newton on #可写可不写,如果体系很大结构复杂,体系通讯不是很迅速,可以关掉
boundary p p p #边界条件
atom_style full #原子类型 不同类型的原子需要下载相应的包,要仔细阅读手册,在建模前用
# 初始化-相互作用 成键相互作用和非成键相互作用
bond_type harmonic
angle_style harmonic
pair_style lj/cut/coul/long 10.0 8.0
# 建模,把data文件中的分子信息读入;如果系统很大,先做小系统进入平衡态以后再replicate
read_data #data文件要严格按照例子来写,依次写好各种大致介绍、原子信息,键长信息、键角信息
# 相互作用参数
bond_coeff 1 5000.0 1.0
angle_coeff 1 300.0 180
pair_coeff 1 1 1.0 1.0 # 原子 参数 截断距离
pair_coeff 1 2 1.0 0.8 0.898
pair_coeff 2 2 1.0 0.6 0.673
pair_modify shift yes #保证截断点的力为0
#库仑力一般用pppm算法
kspace_style pppm 1.0e-4
kspace_modify order
#开始计算
# 体系能量最小化,保证初始构型达到合理构象,排除非常不合理的初始构象,使求导得到的力非常大;跑完之后一定要测试一下初始结构
dump 1 all atom 2 dump.lammpstrij #输出能量最小化的轨迹, 第一个参数是ID,输出类型,几步,输出文件名
min_style cg #一般默认就可以,共轭梯度下降法
minimize 1.0e-4 1.0e-6 10000 100000 #不支持刚体结构,有很多方式可以选择,跑完之后得到初始结构以后再跑一遍
# 除了能量最小化得到初始构象,命令在pair_style soft
# 1. 把相互作用是改成软势,直接跑分子动力学
# 2. fix nve/limit 0.1
# 写fix语句,实现分子动力学模拟-郎之万动力学
neighbor 0.3bin #要保证邻近列表的r为r+0.3bin,只要没跑到这个距离外就不用更新类别
# 朗之王是NVT系综
velocity all create 1.2 4928459 dist gaussian #通过随机粒子速度,使温度达到目标温度1.2
fix 10 all nve #nve其实就是用力和势函数不断的去更新粒子的位置
fix 20 all langevin 1.2 1.2 1000.0 0.699411 zero yes#增加两个额外力,实现langevin动力学控温 zero yes保证动量不漂移
thermo 1000#输出热力学信息
#弛豫和跑平衡,使初始构型达到平衡态,然后取样计算热力学量,进行收集
# 弛豫过程 做热力学平衡态模拟之前,需要先使初始构型达到平衡态,这个过程就称之为弛豫;达到平衡态以后再收集数据.如何确定平衡态呢?找一个特征物理量来标定(一般是rg)
dump 1 all atom 1000 dump.lammpstrj
run 10000000
# data collection 收集数据点跨越的时间最好跨越1000个tau,tau是弛豫时间
undump 1
dump 2 all custiom 1000 dump.lammpstrj id
run 10000000000
5 如何学习lammps
5.1 整体流程
5.5.1 建模
- 研究对象
- 体系组成
- 边界条件
- 维度
- 单位
- 相互作用
- data文件一定要认真检查,并做能量最小化,把overlap的原子排开
5.5.2 系综
- 先NVT,把温度达到目标温度
- 再控制压强使其达到平衡态
5.2 命令分类
- 建模
- 相互作用(pair bond angle 二面角)势函数形式、参数设置 搞懂自己领域即可
- fix(用什么方法实现温度和压力控制)
- compute(计算输出结果,建议自己敲代码算)
- 输出(热力学,x,v)
建模、相互作用、输出会用即可
fix要学理解算法,源代码
5.3 学习重点
- 搞清楚研究体系的模型,要去理解如何操作模型,理解分子原子之间的拓扑结构,去了解背后的有机或无机知识
- 认真读in文件,知道每一条命令的作用,为什么设置参数,去看手册,如果换成我我怎么做
- 拿小系统做测试是十分必要的
6.如何处理错误
6.1 特别难的问题
- 官网 mail list 搜索之前的问题
6.2 出现错误
- 官网手册 Errors部分 有常规问题,可以直接搜索,或者再看一下手册中这个命令
- 根据警告信息和log文件中的信息,自己先排错
- 关注能量和温度涨落,如果变化太大,可能是初始结构不好或者步长太大
- 在论坛和官网邮箱提问
7. 结构数据分析
7.1 RDF
7.2 近邻数
7.3 序参量
7.4 Rg A
8 reax反应力场
8.1 包的安装和工具介绍
cd lmps/src #反应力场的安装包
make package-status #反应力场安装包分Reax 和USER-Reax
cd USER-REAXC/
less README #看反应力场介绍
cd tools/ #tools里可以分析reax键的工具
cd lib/ #看怎么安装库,一般是 make -f Makefile.gfortran 对lib进行编译
make yes-USER-REAXC #安装反应力场库
cd examples #可以看粒子里面的in和data文件