[lammps-users] parallel problem for systems only including bond, angle and dihedral interactions

Hi all,

I'm simulating an artificial system in which there are only the bond,
angle and dihedral interactions, no pair interactions. When I begin
one cpu serial running, lammps can work well. But when I begin
parallel running, lammps will report an error as follows:

  1 by 1 by 4 processor grid
  2000 atoms
  3000 bonds
  6000 angles
  12000 dihedrals
Finding 1-2 1-3 1-4 neighbors ...
  3 = max # of 1-2 neighbors
  6 = max # of 1-3 neighbors
  18 = max # of 1-4 neighbors
  18 = max # of special neighbors
Setting up run ...
ERROR on proc 0: Bond atoms 1 198 missing on proc 0 at step 0
ERROR on proc 3: Bond atoms 151 152 missing on proc 3 at step 0
ERROR on proc 1: Bond atoms 51 52 missing on proc 1 at step 0
ERROR on proc 2: Bond atoms 149 150 missing on proc 2 at step 0

Does anyone have some experience to deal with this parallel problem?

Thanks so much!

Dongshan

Hi all,

I'm simulating an artificial system in which there are only the bond,
angle and dihedral interactions, no pair interactions. When I begin
one cpu serial running, lammps can work well. But when I begin
parallel running, lammps will report an error as follows:

1 by 1 by 4 processor grid
2000 atoms
3000 bonds
6000 angles
12000 dihedrals
Finding 1-2 1-3 1-4 neighbors ...
3 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
18 = max # of 1-4 neighbors
18 = max # of special neighbors
Setting up run ...
ERROR on proc 0: Bond atoms 1 198 missing on proc 0 at step 0
ERROR on proc 3: Bond atoms 151 152 missing on proc 3 at step 0
ERROR on proc 1: Bond atoms 51 52 missing on proc 1 at step 0
ERROR on proc 2: Bond atoms 149 150 missing on proc 2 at step 0

Does anyone have some experience to deal with this parallel problem?

many people have. check the mailing list archives.

most likely your initial structure is very high in potential energy.
you can run a minimization first before starting MD.
there also is nve/limit and shorter timesteps, fix viscous
and other tricks to bring down your system to a reasonable
state near equilibrium where you can use "normal" parameters.

cheers,
   axel.

Dongshan,
I have had it before the exact case. The problem that I had was with one of the dihedrals. the indexing of certain type of dihedral was wrong. So, one of the atoms was very far off from the rest three. In serial run, it did not show as an error but in parallel, it came out right after few steps. Hope this helps and make sure your indexing is right.

Best Regards,
Vikas

Hi, Axel and Vikas,

I found the parallel problem is really from the neighbor list. Since
there is no pair interaction in my system, lammps seems in a loss to
allocate cpus. When I add two lines as follows,

pair_style lj/cut 2.0
pair_coeff 1 1 0.0 1 1.8

namely, I added an lj potential but with 0.0 epslon, the parallel
running can be done correctly. I compared the parallel running results
(energy, forces, etc) with serial running and found they are the same.

Dongshan

The reason you get a bond atoms missing error, is that a proc
that owns atom I and needs to compute bond i-J does not have
atom J in its ghost list. The ghost list extends the distance
of the neighbor list = force cutoff + skin. If you don't have
a pair style defined then force cutoff = 0, so you ghost distance
is too short. Rather than define a fake pair style, you can
use the communicate cutoff command to get around this issue.
That's why it was added - see the doc page.

Steve

Hi Steve,

You are right. When I use

"communicate single cutoff 2.0"

the parallel lammps can run well and the results are the same with
those of one cpu.

Thank you so much!

Dongshan