怎么用lammps计算重叠势?

我先用lammps的GCMC构建了两个珠子,现在我想计算两个珠子在重叠一定的距离之后,重叠部分原子之间的势能,所有的原子都固定不动。
下面是示意图

img

1.** 请问应该用lammps的哪些命令呢**?

  • 最重要的就是不想涉及重叠部分意外的原子,或者是直接把重叠部分外的原子删掉?

  • 我本来想用compute group/group计算,把两个珠子各看成一个group,但是对截断距离的设置把握不准,因为截断距离设置大了就避免不了计算重叠区域以外的原子。

  1. 还有就是LJ里的σ和原子的直径是不是相等的啊,如果不是,他俩有什么关联吗?

  2. 截断距离一般取多大合适呢?
    下面是我现在的in文件,总觉得有问题

#用LJ势能计算重叠势
#只计算两个group之间的势能,同一个group的不计算:compute ID group1-ID group/group group2-ID
#所有原子都冻结 fix ID group-ID freeze

units lj 
dimension 3
boundary p p p
atom_style atomic

neighbor        0.2 bin
neigh_modify    every 1 delay 0 check yes

read_data model.data

pair_style      lj/cut 0.85#1.5 
pair_coeff    * * 0.12 0.5

group bead1 type 1
group bead2 type 2

fix   FREEZE all setforce 0.0 0.0 0.0
fix   1 all nve

compute     overlay bead1 group/group bead2
thermo        100
thermo_style    custom  step  c_overlay c_overlay[1] c_overlay[2] c_overlay[3]
#c_overlay是总能量,其他三个是力
 
timestep    0.001

dump        1 all custom 100 dump_1.5.xyz id type x y z vx vy vz fx fy fz
run        10000

参考下这里

-
900

该回答引用GPTᴼᴾᴱᴺᴬᴵ
计算重叠区域原子之间的势能可以使用LAMMPS的compute group/group命令。在这种情况下,您可以把两个珠子看做两个group,并使用命令compute group/group来计算它们之间的相互作用能量。对于这个问题,您需要定义一个新的group来包含重叠区域内的原子,并计算该组中原子之间的相互作用。
·
在这种情况下,您不需要删除重叠部分外的原子。但是,您需要使用compute group/group命令来计算仅适用于两个group之间的相互作用能。使用该命令后,您可以通过设置截断半径来限制相互作用的计算范围。截断半径越大,计算的范围越广,但计算的精度会降低。
·
对于Lennard-Jones势,σ是原子的直径的一半,因此两个参数σ和ε可以根据原子之间的相互作用来确定。在LJ势中,σ用于计算原子之间的吸引力部分,而ε则用于计算斥力部分。
·
在你的输入文件中,你已经使用了compute group/group命令来计算两个group之间的相互作用。您还需要添加一个新的组,以包含重叠部分内的原子,并计算该组中原子之间的相互作用能。您可以使用fix命令来限制原子的运动。最后,通过修改timestep和run命令中的步数,以使计算更准确。

下面是一个可能的示例输入文件:

LJ势计算重叠势
仅计算两个group之间的势能
所有原子都被冻结 fix ID group-ID freeze
units lj
dimension 3
boundary p p p
atom_style atomic

neighbor 0.2 bin
neigh_modify every 1 delay 0 check yes

read_data model.data

设置LJ势,将截断半径设置为0.85
pair_style lj/cut 0.85

将LJ参数设置为1.0
pair_coeff * * 1.0 1.0

将两个珠子分别设置为group
group bead1 type 1
group bead2 type 2

定义一个新的group来包含重叠区域内的原子
group overlap region overlap # 请根据需要修改此命令

固定所有原子不动
fix FREEZE all setforce 0.0 0.0 0.0

计算两个group之间的相互作用
compute overlay bead1 group/group bead2

计算重叠区域内的原子之间的相互作用
compute overlap_group overlap group/group overlap

thermo 100
thermo_style custom step c_overlay c_overlay[1] c_overlay[2] c_overlay[3] c_overlap_group # 请根据需要修改此命令

运行模拟
timestep 0.001
dump 1 all custom 100 dump_1.5.xyz id type x y z vx vy vz fx fy fz
run 10000

这个示例代码中,我添加了一个新的group来包含重叠区域内的原子,并使用了compute group/group来计算这些原子之间的相互作用。同时,使用了LJ势,并将截断半径设置为0.85。请根据需要修改这些命令。

参考GPT和自己的思路,以下是修改后的代码,增加了计算重叠势的部分:

#用LJ势能计算重叠势
#只计算两个group之间的势能,同一个group的不计算:compute ID group1-ID group/group group2-ID
#所有原子都冻结 fix ID group-ID freeze

units lj 
dimension 3
boundary p p p
atom_style atomic

neighbor        0.2 bin
neigh_modify    every 1 delay 0 check yes

read_data model.data

pair_style      lj/cut 0.85#1.5 
pair_coeff    * * 0.12 0.5

group bead1 type 1
group bead2 type 2

# 取消之前的 fix 命令
unfix 1
unfix FREEZE

# 固定两个珠子不动
fix bead1freeze bead1 setforce 0 0 0
fix bead2freeze bead2 setforce 0 0 0

# 设置GCMC
variable seed equal 12345
variable beta equal 1.0/0.8
variable P equal 0.5
variable chempot equal -3.0

fix gcmc bead1 gcmc 100 10 12345 0 12345 1 1.0 beta 0.5 chempot
fix_modify gcmc move always

compute g_overlap bead1 group/group bead2
thermo        100
thermo_style    custom  step  c_g_overlap c_g_overlap[1] c_g_overlap[2] c_g_overlap[3]
#c_g_overlap是总能量,其他三个是力

timestep    0.001

dump        1 all custom 100 dump_1.5.xyz id type x y z vx vy vz fx fy fz
run        100000

# 取消GCMC fix和之前固定珠子不动的fix
unfix gcmc
unfix bead1freeze
unfix bead2freeze

参考GPT和自己的思路:要计算重叠势,可以使用LAMMPS中的pair_style lj/cut命令来计算Lennard-Jones势能。Lennard-Jones势能是一种经典的分子间相互作用势,描述了两个原子之间的吸引和排斥力,并通过一个截断半径来避免无穷远距离的计算。

在计算重叠势时,建议使用compute group/group命令计算两个珠子之间的势能。同时,通过fix group-ID freeze命令将所有原子固定不动,以避免计算过程中原子的运动。

截断距离的选择需要根据模拟系统的特点来确定。一般来说,截断距离应该足够小,以保证在截断半径范围内的相互作用能够被准确计算。在计算重叠势时,建议选择一个比两个珠子之间的初始距离略大的截断距离。

在使用Lennard-Jones势能时,原子的直径通常定义为Lennard-Jones势能中的σ参数。对于不同的原子,其σ参数可能不同,需要根据具体的分子模型来确定。

以下是一个示例的in文件,可以用于计算重叠势:

units           lj
dimension       3
boundary        p p p

atom_style      atomic

read_data       model.data

pair_style      lj/cut 0.85
pair_coeff      1 1 0.1 1.0
pair_coeff      2 2 0.1 1.0
pair_coeff      1 2 0.1 1.0

group           bead1 type 1
group           bead2 type 2

fix             freeze all setforce 0.0 0.0 0.0
fix             nve all nve

compute         overlap bead1 group/group bead2
fix             overlap all enforce2d
fix             energy all ave/time 1 10 100 c_overlap[4] file overlap.txt

timestep        0.001

thermo_style    custom step c_overlap[4]
thermo          100

run             10000


这个in文件中,通过设置fix freeze命令将所有原子固定不动,通过fix nve命令对系统进行NVE模拟。使用compute group/group命令计算两个珠子之间的势能,并通过fix enforce2d命令限制原子的运动为二维平面运动。同时,使用fix ave/time命令对势能进行时间平均,以便于统计计算。

希望对您有帮助!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^