• lammps计算角度分布(ADF)


    大家好,我是小马老师。
    本文介绍lammps计算角度分布(adf)的方法。
    在这里插入图片描述

    与晶向分布rdf类似,lammps提供了角度分布的计算命令:compute adf。
    该命令可以统计出体系内某类角度(如水分子H-O-H)的分布数据。
    (1)语法格式

    compute ID group-ID adf Nbin itype1 jtype1 ktype1 Rjinner1 Rjouter1 Rkinner1 Rkouter1 ...
    
    • 1

    看着格式就挺复杂的,下面介绍一下参数的含义:

    Nbin = 分块个数,把连续的角度值划分为Nbin块,便于归类统计
    itype1 = 中心原子类型,如水分子的O原子
    jtype1 = J 原子类型,如水分子的其中一个H原子
    ktype1 = K 原子类型,如水分子的另一个H原子
    Rjinner1 =  J 原子内径
    Rjouter1 = J 原子外径
    Rkinner1 = K 原子内径
    Rkouter1 = K 原子外径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (2)计算原理
    常规的参数基本就这些,简单的角度统计原理是这样的:
    确定要统计的角度类型,如水分子H-O-H,中心原子I就是O,周围两个原子J、K就是H。
    当I和J的距离R满足:Rjinner1 并且I和K的距离R满足:Rkinner1 系统会认为这三个原子构成一个角,会计算该角度的值,循环判断下一个角度,直至结束。
    为便于理解,我已经简化了判断条件,详细的判断条件可查阅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
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    公众号:lammps加油站

  • 相关阅读:
    OSPF的防止环路的机制
    消息队列 - RabbitMQ
    利用 lxml 库的XPath()方法在网页中快速查找元素
    【网络文明】关注网络安全
    MongoDB慢查询与索引
    c++分层最短路(洛谷飞行路线)acwing版
    SQL之between操作符
    基于JAVA忆居民宿管理计算机毕业设计源码+系统+数据库+lw文档+部署
    跳跃游戏----题解报告
    算法常用 C++ 容器总结
  • 原文地址:https://blog.csdn.net/lammps_jiayou/article/details/126502428