The effects of size and shape on the structural and thermal stability of platinum nanoparticles .pdf
设置基本参数units为metal(对与金属固体,粒子类型默认是atomatic),设置基本参数boundary为ppp,即周期性边界条件,设置基本参数临近列表的外壳层厚度为2(单位:埃)
FCC类型的晶格,其晶格常数设置为3.61。(FCC:就是立方体模型,立方体的6个面各有9个原子,体中心有1个原子),设置202020的模拟盒子,里面全是原子。从文章中知道,纳米颗粒体系是2~20nm,约400~5000个原子,在这个模拟盒子中,金属纳米颗粒有800多个。
# nanoparticle melt
# 基本参数
units metal # 使用金属单位
boundary p p p # 周期性边界条件(x,y,z)
atom_style atomic # 对于金属固体,默认设置为atomic原子类型
timestep 0.001 # 时间步长设置为0.001ps
neighbor 2.0 bin # 临近列表的外壳层厚度设置为2,style的位置一般是bin(一种计算模式)
neigh_modify every 1 delay 0 #每隔多少步重新构建临近原子列表
variable T0 equal 2.5 # 定义温度变量T0为2.5
variable T1 equal 2000 # 定义温度变量T1为2000
# 模型
lattice fcc 3.61 # 定义FCC类型的晶格,其晶格常数设置为3.61
region box block 0 20 0 20 0 20 units box # 创建仿真区域,确定模拟盒子的大小
create_box 1 box # 创建一个包含一个原子类型的模拟盒子
create_atoms 1 box # 在盒子中创建原子
# 热力学
thermo 100 # 每隔100步输出一次热力学信息
thermo_style custom step temp vol pe ke # 输出步数step、温度temp、体积vol、势能pe、动能ke
# 原子与原子间的相互作用
pair_style eam # 调用EAM 势函数(它通常用于描述金属原子间的相互作用,将每个原子的能量分解为两部分:原子之间的相互作用能和原子周围电子密度对原子的影响)
pair_coeff * * Cu_u3.eam # * * 是设置系统中所有类型的原子之间的相互作用参数;提供文件(.eam),其中包括EAM势函数需要的参数,该文件应与本代码文件(.lmp)放入一个文件夹
# 温度初始化
velocity all create ${T0} 114514 dist gaussian # velocity:初始化速度,对速度创建随机数seed=114514,gaussian:符合高斯分布(在温度T0下)
# 为了方便计算机模拟,搞的极小化能量算法,可以去掉
minimize 1e-4 1e-6 1000 1000 # 极小化能量
# 1e-4:在最小化过程中,LAMMPS 将尝试使系统中所有原子 受到的力 都小于这个值。
# 1e-6:在最小化过程中,LAMMPS 将尝试使系统中所有原子的 位移 都小于这个值。
# 第一个1000:最大迭代次数;第二个1000:每次迭代时,为了找到最佳的步长,最多进行 1000 次尝试。
# 熔化
dump 1 all custom 100 all.lammpstrj id type x y z # dump 1:将系统中的数据输出(输出格式:自定义为custom)到文件1。每100步将所有原子的位置信息(all.lammpstrj id type x y z)写入文件。
fix nvt all nvt temp ${T0} ${T0} 0.01 # 将系统固定在NVT(恒V恒T)系综中(nvt all),维持温度为T0~T0(nvt temp ${T0} ${T0}),热阻0.01
run 10000 # 运行10000步
unfix nvt # 运行结束后,取消在NVT系综固定
change_box all x scale 4 y scale 4 z scale 4 # 改变仿真区域大小为其4倍,以便熔化后V膨胀(主要是之前我们定义boundary是p)
#熔化·升温
fix nvt all nvt temp ${T0} ${T1} 0.2 # 温度从T0变化到T1,热阻0.2
run 120000
unfix nvt
#熔化·恒温
fix nvt all nvt temp ${T1} ${T1} 0.01
run 120000
unfix nvt
#熔化·降温
fix nvt all nvt temp ${T1} ${T0} 0.1
run 480000
unfix nvt
#熔化·恒温
fix nvt all nvt temp ${T0} ${T0} 0.01
run 10000
unfix nvt
compute 1 all msd #计算(compute的ID=1)所有原子的 位移的均方根
fix msd1 all ave/time 10 100 1000 c_1[1] c_1[2] c_1[3] c_1[4] # file msd1
# fix msd1 表示 将计算结果输出到msd1文件中
# 每隔 10 步计算一次 MSD,每次计算使用最近 100 步的数据,并且在运行了 1000 步之后开始计算
# 计算MSD 的时间步数c_1[1]、x 方向的 MSD c_1[2]、y 方向的 MSD c_1[3]、z 方向的 MSD c_1[4],
# file msd1意味着输出到文件(msd1),如果不这样的话,将只会出现在.lammps文件中,当然,这条命令与fix msd1重复
write_restart rst.nanoparticle # 将当前状态写入restart文件
write_data rst.nanoparticle.lmp # 将 当前原子的数据 写入数据文件
然后在同一个文件夹里,放入eam的参数文件,使用powershell(按住shift+鼠标右键),运行mpiexec -np 8 lmp -in xxx.lmp 。
等待系统运算,结束后关闭powershell,按windows+Q,查找OVITO软件,打开。将刚刚运行出来的all.lammpstrj文件拖入OVITO。
上图是T=0时刻的纳米粒子模型,可见有864个原子,是FCC类型的立方体,将整个盒子(白线框)占满了。
先恒温100个时间步长,这是第99帧的情况,可见粒子已经在立方体中无规则运动起来,并满足一定的热力学关系。
然后进行升温,升温之前我们将盒子扩大为原来的4倍,就是考虑到纳米粒子体系的膨胀与周期性边界条件(ppp)的冲突,另外整个过程都是固定在模拟盒子nvt体系下的。(前面已经说过,npt体系下,扩大盒子造成的真空区域也会被纳入恒压体系,造成整个体系成为单质,这就不是我们想要的金属纳米颗粒体系了)