Way to the science

LAMMPS完成reaxff模拟后统计产物分子

LAMMPS完成reaxff模拟后统计产物分子

输入脚本示例

# .....
units           real
atom_style      charge
read_data       data.CHO
pair_style      reax/c NULL
pair_coeff      * * ffield.reax.cho H C O 
neighbor        2 bin 
neigh_modify    every 10 delay 0 check no
fix             1 all nvt temp 3500.0 3500.0 100.0
fix             2 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c
fix             4 all reax/c/species 1 100 100 species.out element H C O cutoff 2 2 0.15 
velocity        all create 3500 428459 dist gaussian
timestep        0.25
thermo          1  
run             3000

注:velocity命令给体系赋予一个初始速度,不加这条命令则体系从0K开始升温到3500K。428459是种子号,改成12345也可以。

统计产物的核心命令

fix reax/species
fix 1 all reax/species 1 100 100 species.out element H C O cutoff 2 2 0.15

1 100 100 分别表示每隔1步采样一次键级,采样100次,并在100步的时候输出平均键级,再比如改成1 2 100则表示在98 100步时采集键级在100步时取平均输出。species.out则是输出文件的文件名。element参数建议加上,不过不加则默认为C H O的顺序,而data文件中的原子顺序大多数情况下并非如此。cutoff也是可选参数,表示原子之间的截止键级(注意是键级不是距离),需要自己酌情调整,数值太大会导致完整的分子被切成碎片,数值太小则会导致断裂的分子之间藕断丝连。

运行LAMMPS后species.out文件格式

# Timestep     No_Moles     No_Specs     H11C5  H  H8C5  H2  H7C5  H4C  H4C3  H3C  H9C5  O2  100         29         10   1   10   1   2   1   1   1   1   1   10  
# Timestep     No_Moles     No_Specs     H5C2  H5C3  H2  H8C5  H  H4C3  H3C2  H3C  H2C  H4C2  O2  200         33         11   1   1   5   1   7   2   2   1   2   1   10  # Timestep     No_Moles     No_Specs     H5C2  H3C2  H2C  H2  H4C3  H  H4C2  H3C  HC  O2  300         36         10   1   3   4   6   3   6   1   1   1   10  
# Timestep     No_Moles     No_Specs     H5C2  H3C2  H2C  H2  H4C3  H  H4C2  H3C  HC  O2  400         36         10   1   3   4   6   3   6   1   1   1   10  
# Timestep     No_Moles     No_Specs     H5C2  H3C2  H  H2C  H2  H4C3  H4C2  H3C  HC  O2  500         36         10   1   3   6   4   6   3   1   1   1   10  ... ...

.out文件中奇数行为注释行,标注了一些分子、团簇的符号,偶数行则是团簇分子的个数。

一个简单的python脚本读取指定分子的个数。

# Setting parameters
file_name='pecies.out'
target='O2'
# Read coordinate from dump file 
z=[]
type=[]
with open(file_name,'r') as species:
    lines=species.readlines()
    length=len(lines) 
species.close()
Step=[]
Num=[]
for i in range(0,length,2):
    a=lines[i].strip()    
    a=a.split()    
    b=lines[i+1].strip()    
    b=b.split() 
    if target in a:
        Num.append(b[a.index(target)-1]) 
    else:
        Num.append(0)
        Step.append(b[0])
print('#Time_step  ',target)
for i in range(len(Num)): 
    print (Step[i],Num[i])

更新中……

注:本文由知乎主黄蕴原创,侵删~演示的脚本以LAMMPS安装包中example:in.CHOZ(戊烷的燃烧)为例

Leave a comment

Your email address will not be published. Required fields are marked *