原创 一直陪着你的 LAMMPS交流站 2021-10-18 11:40
收录于话题#lammps案例16个内容
大家好,小编最近的课题需要输出RDF(径向分布函数),小编就去lammps官网及网络查找了如何用lammps输出RDF,小编就把自己学到的用法在这里跟大家分享,也算是小编学习过程中的一个笔记。
本教程也是小编现学现卖,不足之处请各位指出,希望能给读者提供一定的帮助,读者可结合实际需求,同时希望专业前辈提出不足,小编会和大家共同学习。
01
RDF介绍
1.径向分布函数概念
在统计力学中,多粒子系统(原子、分子、胶体……中, 径向分布函数(又称对关联函数)描述粒子密度作为距参考原子的距离的函数如何变化。
如果给定粒子当做原点,体系平均粒子数密度为 ρ=N/V,则距原点为r处的局部时间平均的密度为 ρ*g(r) 。这是对均匀的各向同性系统的简化定义。
简言之,这是对于距参考粒子距离为r处找到粒子的相对概率的测量,参考态是理想气体。一般的算法是计算在距参考原子 r 到 r+dr 这样的壳层里有多少粒子。
RDF的定义的定义式如下:
式中,V为系统的个数,N为系统中的粒子数,n(r)为纳米粒子半径dr处厚度下的原子数。
2.径向分布函数意义
径向分布函数通常用g(r,r')来表示。对于 |r-r'| 比较小的情况,g(r,r') 主要表征的是原子的堆积状况及各个键之间的距离。对于长程的性质,由于对于给定的距离找到原子的几率基本上相同,所以g(r,r')随着|r-r'|的增大而变得平缓,最后趋向于恒值。通常定义 g(r,r')时,归一化的条件为 |r-r'| 趋向于无穷大时,g(r,r') 趋向于一。通常,对于晶体,由于其有序的结构,径向分布函数有长程的峰,而对于非晶物质(amorphous matter),则径向分布函数一般只有短程的峰。
径向分布函数通常被用来描述原子有序性及描述电子的相关性(指的就是给定一个电子,其他电子在此电子周围出现的几率),也就是在RDF图中,峰所在位置就是电子出现概率大的位置。
02
官网用法
我们在lammps官网可以看到输出RDF的具体语法
compute ID group-ID rdf Nbin itype1 jtype1 itype2 jtype2 ... keyword/value ...
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
举例:
compute 1 all rdf 100
compute 1 all rdf 100 1 1
compute 1 all rdf 100 * 3 cutoff 5.0
compute 1 fluid rdf 500 1 1 1 2 2 1 2 2
compute 1 fluid rdf 500 1*3 2 5 *10 cutoff 3.
在compute rdf命令中,Nbin为统计量(样本量),数越多可能曲线会越光滑(一般200-500);itype1是径向分布函数的中心原子, jtype1是被统计的原子。
在fix ave/time命令中,Nfreq必须是Nevery的整数倍,
Nevery
必须是非零。用compute rdf命令时,value1、value2 ... 为c_ID[1],c_ID[2],c_ID[3],输出结果按列依次为序号,c_ID[1]为group到原点的距离,即x轴,c_ID[2]为g( r ),c_ID[3]为coor( r ),即 g( r )的积分,也就是输出的数据以c_ID[1]为横轴,以c_ID[2]或c_ID[3]为纵轴,就可以得到某一时刻的RDF曲线。
例如以下命令可用于输出每1000步的rdf值,在截断半径范围内,距离被分成200段:
compute rdf all rdf 200 2 6 #rdf
fix rdf all ave/time 1000 1 1000 c_rd1[1] c_rd1[2] c_rd1[3] file data.rdf mode vector
03
代码示例
本文将之前做的一个案例CuNi合金熔化模拟过程的1550K-2500K升温过程的RDF输出,添加的代码为:
compute rdf all rdf 200
fix saverdf all ave/time 100 100 10000 c_rdf[1] c_rdf[2] file data.rdf mode vector
完整in文件如下:
#lammps交流站案例
units metal
boundary p p p
atom_style atomic
read_data melting.in.dat
lattice fcc 3.65
region box block -30 30 -5 5 -5 5
#create_box 1 box
#create_atoms
mass 1 64.55
mass 2 58.69
pair_style eam/alloy
pair_coeff * * CuNi.lammps.eam Cu Ni
region 1 block INF -0.01 -6 6 -6 6
group left region 1
region 2 block -0.01 INF -6 6 -6 6
group right region 2
timestep 0.002
velocity all create 1550.0 4928459 dist gaussian
fix 1 all npt temp 1550 1550 0.1 iso 0 0 0.2
dump melt all atom 10000 dump.dat
#dump melt all custom 1000 dump.atom.slow tag type xu yu zu vx vy vz sxx syy szz
restart 50000 restart.*
thermo 100
run 4000
#thermo_style custom step temp etotal pe press vol pxx pyy pzz pyz pxz pxy
unfix 1
fix 1 right npt temp 1550 2500 0.1 x 0 0 0.2
#1.输出rdf
compute rdf all rdf 200
fix saverdf all ave/time 100 100 10000 c_rdf[1] c_rdf[2] file data.rdf mode vector
run 2000
unfix 1
fix 1 right npt temp 2500 1550 0.1 x 0 0 0.2
run 44000
unfix 1
fix 1 all nph iso 0.0 0.0 0.2
run 500000
最后,用记事本打开生成的data.rdf文件,用里面的数c_rdf[1]及 c_rdf[2]绘图,就可以得到如下的RDF曲线。
注意
1.文中所需的data文件及势文件已上传至QQ群-lammps交流站。
更多案例请关注lammps交流站
LAMMPS交流站