I think I found a bug in compute group/group. Say I define two groups

of atoms A and B that sum to the total number of molecules. I then

use compute group/group for the different subsets of atoms:

compute AB A group/group B

compute BA B group/group A

compute AA A group/group A

compute BB B group/group B

compute All all group/group all

If I then sum the force as (AB + BA + AA + BB = All), the total

force=0 as it should:

variable dum equal (c_AB[1]+c_BA[1]+c_AA[1]+c_BB[1])

thermo_style custom c_All[1] v_dum

However, if I can only get the total energy to match if I use (AB +

AA + BB = All):

variable dum equal (0.5*c_AB+0.5*c_BA+c_AA+c_BB)

thermo_style custom pe c_All v_dum

This seems to suggest that the energy AB interactions are

double-counted in compute group/group.

Stan

Nice analysis - I'll take a look.

Steve

So imagine group A and group B are 2 simply

2 different single

atoms. If you use compute AB, then I think

you would expect to get the force between atoms

A and B, and the energy of the A-B interaction,

not half the energy.

So if you sum compute AB and compute BA,

you will get zero force (b/c it's signed)

and 2x the energy of the A-B interaction.

We could add the 1/2 factor to everything, but

I don't think that's what the user expects when

they just use compute AB, and for your combined

calculation it seems like just a bookkeeping thing.

Steve

Steve,

I see what you are saying. I've almost finished a kspace (Ewald/PPPM)

version of compute group/group but I'm not sure how to double the AB

interactions in kspace if you have some atoms only in one group and

some that are in both groups. It's easier if you separate the AB and

BA interactions explicitly. I'll send you some code soon so you can

take a look.

Stan

We could enforce an error condition with compute group/group

that the 2 sets of atoms either need to be the same group,

or disjoint, i.e. no atom in both groups. Doesn't seem logical

to use it when some atoms (but not all) are in both groups.

Steve

Steve,

I think I got it to work--I perform the group-group calcs again a

second time to get the BA energy (only). Enforcing the error

conditions would also work too.