lammps输出RDF(径向分布函数)详解及示例教程

原创 一直陪着你的 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 100compute 1 all rdf 100 1 1compute 1 all rdf 100 * 3 cutoff 5.0compute 1 fluid rdf 500 1 1 1 2 2 1 2 2compute 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 200fix 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交流站

  • 16
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是一个用于分子动力学模拟的软件包。径向分布函数(Radial Distribution Function)是分子模拟中一个常用的工具,能够描述分子之间的相互作用和排列情况。 MATLAB是一种科学计算和数据可视化的编程语言,可以用来编写计算径向分布函数的脚本。 编写LAMMPS径向分布函数的MATLAB计算脚本主要分为以下几个步骤: 1. 读取LAMMPS模拟的分子动力学轨迹文件。使用MATLAB中的文件读取函数,例如'load'函数,将轨迹文件中的原子坐标数据读入MATLAB中。 2. 选择需要计算径向分布函数的物种和原子数。根据具体模拟体系的需要,选择感兴趣的分子种类,并统计其在模拟系统中的个数。 3. 划定径向分布函数的半径范围和间隔。在分子模拟中,通常会将系统体积划分为一个个的球壳,计算每个球壳内分子的个数。设置不同的半径范围和间隔可以更好地描述分子之间的排列情况。 4. 遍历每一个时间步和每个分子,统计其与其他分子的距离。计算每个分子与其他分子之间的距离,并按照距离值归类到相应的球壳中。 5. 统计每个球壳内分子的个数,并计算径向分布函数。统计每个球壳内分子的个数,并根据总体分子数和球壳体积计算出归一化的径向分布函数值。 6. 对每个时间步进行求和和平均。若存在多个时间步骤,可对每一个时间步的径向分布函数进行求和并平均,得到最终的径向分布函数结果。 以上就是一个简单的LAMMPS径向分布函数MATLAB计算脚本的基本步骤,可以根据具体的模拟需求进行进一步的修改和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值