Regarding force on one group due to another

Hello all,

I am using compute group/group command to calculate force from Cu atoms to c atoms since I am using pair potential between two. However for Si and C, I am using tersoff potential, Compute group/group command doesn’t work.

How to calculate force on one group due to another group if there is no pair potential between two groups. Kindly suggest.

Hello all,

I am using compute group/group command to calculate force from Cu atoms to
c atoms since I am using pair potential between two. However for Si and C,
I am using tersoff potential, Compute group/group command doesn't work.
How to calculate force on one group due to another group if there is no
pair potential between two groups. Kindly suggest.

​for tersoff, you can try compute force/tally from the USER-TALLY package.
you will get a warning, but tersoff is compatible with tallying forces,
only the virial tally is not completely covered by USER-TALLY for tersoff.

another approach would be to record the trajectory and then use rerun on
it, but have only the desired interacting potentials defined and the rest
to non using a hybrid style​. then you should get the same result from
simply doing compute reduce for fx fy fz.

please see below a small test example of two tersoff si spheres set up to
bouncing into each other.

note how the scalar (total force) from compute force/tally is the same as
the reduced fx component on the left sphere and the reduced tallied x
component of the pairwise forces. for the right sphere, the sign is
inverted. now, if there was an additional component in the system, the
reduced fx, fy, fz components would be different, but the tallied not,
since they would only be accumulated for forces between the two pairs.
hence, you would need to use rerun with disabling unwanted interactions
plus compute reduce or try compute force/tally, but the latter will not
work for a

​units metal

atom_style atomic
atom_modify map array
boundary m m m

# diamond unit cell

variable a equal 5.431
lattice custom $a &
                a1 1.0 0.0 0.0 &
                a2 0.0 1.0 0.0 &
                a3 0.0 0.0 1.0 &
                basis 0.0 0.0 0.0 &
                basis 0.0 0.5 0.5 &
                basis 0.5 0.0 0.5 &
                basis 0.5 0.5 0.0 &
                basis 0.25 0.25 0.25 &
                basis 0.25 0.75 0.75 &
                basis 0.75 0.25 0.75 &
                basis 0.75 0.75 0.25

region myreg block 0 8 &
                                0 4 &
                                0 4

create_box 2 myreg
region left sphere 2.0 2.0 2.0 1.2
region right sphere 6.0 2.0 2.0 1.2
create_atoms 1 region left
create_atoms 2 region right

group left region left
group right region right

# choose potential

pair_style tersoff
pair_coeff * * SiC.tersoff Si Si
mass * 28.06

velocity left set 0.2 0.0 0.0
velocity right set -0.2 0.0 0.0

compute ft left force/tally right
compute fl left reduce sum fx fy fz c_ft[1] c_ft[2] c_ft[3]
compute fr right reduce sum fx fy fz c_ft[1] c_ft[2] c_ft[3]

fix 1 all nve
timestep 0.001

#dump 1 all movie 100 movie.mpg type type

thermo_style custom step temp pe vol c_ft c_fl[*] c_fr[*]
thermo 1000
run 10000

Hello Axel and all,

Thanks for explaining the use of Force/tally with the example.

However when I run this example I get following error:
ERROR: Compute force/tally used with incompatible pair style. (…/compute_force_tally.cpp:72)

How to correct it? Kindly suggest.

Hello Axel and all,
Thanks for explaining the use of Force/tally with the example.
However when I run this example I get following error:
ERROR: Compute force/tally used with incompatible pair style.
(../compute_force_tally.cpp:72)

please *always* mention the LAMMPS version you are using.
i suspect you are using an old version. please upgrade to the latest
development version (23 June 2017 as of today) and the error should
become a warning.

axel.