我先用lammps的GCMC构建了两个珠子,现在我想计算两个珠子在重叠一定的距离之后,重叠部分原子之间的势能,所有的原子都固定不动。
下面是示意图
1.** 请问应该用lammps的哪些命令呢**?
最重要的就是不想涉及重叠部分意外的原子,或者是直接把重叠部分外的原子删掉?
我本来想用compute group/group计算,把两个珠子各看成一个group,但是对截断距离的设置把握不准,因为截断距离设置大了就避免不了计算重叠区域以外的原子。
还有就是LJ里的σ和原子的直径是不是相等的啊,如果不是,他俩有什么关联吗?
截断距离一般取多大合适呢?
下面是我现在的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命令对势能进行时间平均,以便于统计计算。
希望对您有帮助!
不知道你这个问题是否已经解决, 如果还没有解决的话: