大家好,我是小马老师。
本文介绍lammps计算角度分布(adf)的方法。
与晶向分布rdf类似,lammps提供了角度分布的计算命令:compute adf。
该命令可以统计出体系内某类角度(如水分子H-O-H)的分布数据。
(1)语法格式
compute ID group-ID adf Nbin itype1 jtype1 ktype1 Rjinner1 Rjouter1 Rkinner1 Rkouter1 ...
看着格式就挺复杂的,下面介绍一下参数的含义:
Nbin = 分块个数,把连续的角度值划分为Nbin块,便于归类统计
itype1 = 中心原子类型,如水分子的O原子
jtype1 = J 原子类型,如水分子的其中一个H原子
ktype1 = K 原子类型,如水分子的另一个H原子
Rjinner1 = J 原子内径
Rjouter1 = J 原子外径
Rkinner1 = K 原子内径
Rkouter1 = K 原子外径
(2)计算原理
常规的参数基本就这些,简单的角度统计原理是这样的:
确定要统计的角度类型,如水分子H-O-H,中心原子I就是O,周围两个原子J、K就是H。
当I和J的距离R满足:Rjinner1
为便于理解,我已经简化了判断条件,详细的判断条件可查阅lammps手册。
(3)数据输出
compute adf计算的结果可以使用fix ave/time命令输出。
compute myADF all adf 32 2 2 2 0.5 3.5 0.5 3.5
fix 1 all ave/time 100 1 100 c_myADF[*] file tmp.adf mode vector
tmp.adf文件中,一共有4列,第一列为bin的数量,第二列为不同bin对应的角度值,第三列为该角度值出现的概率,第四列为该角度的数量。
因此,在绘图时,第二列为横坐标,第三列为纵坐标,即可得到角度分布图。
(4)案例代码
下面给出lammps官方案例,在案例中计算了水分子体系中O-O-O和H-O-H的角度分布。
units real
atom_style full
read_data data.spce
pair_style lj/cut/coul/long 12.0 12.0
pair_coeff * * 0.0 1.0
pair_coeff 1 1 0.15535 3.166
kspace_style pppm 1.0e-6
bond_style harmonic
angle_style harmonic
dihedral_style none
improper_style none
bond_coeff 1 1000.00 1.000
angle_coeff 1 100.0 109.47
special_bonds lj/coul 1.0e-100 1.0e-100 1.0
neighbor 2.0 bin
timestep 2.0
neigh_modify every 1 delay 2 check yes
fix 1 all shake 0.0001 20 0 b 1 a 1
fix 2 all nvt temp 300.0 300.0 100.0
velocity all create 300.0 6244325
thermo 100
run 500
reset_timestep 0
compute gofa all adf 45 1 1 1 2.0 3.5 2.0 3.5 &
2 1 1 0.0 1.2 1.5 2.5 # O-O-O, O-H...O
fix adf all ave/time 10 100 1000 c_gofa[*] file spce-adf.dat mode vector
run 1000
公众号:lammps加油站