Missing atom in parallel DPD simulation

Dear all,

I am using DPD to simulate a polymer solution. However, I keep getting the following error:

ERROR on proc 0: Bond atom missing in image check (…/domain.cpp:766)
Last command: run 80000

As I understand, this is due to the cutoff being too small, so a processor loses track of a ghost atom. I reran the simulation with the bond distance being 0.85 instead of 0, and the same issue happens. I was wondering if anyone has come across the same issue and/or know how to come about fixing it. Below is my script.

Thanks a lot in advance,

  • Renato

===== Initialization =====

units lj
boundary p p p
atom_style bond
bond_style harmonic

comm_modify vel yes
newton off
neighbor 0.3 bin
neigh_modify delay 0 every 4 check no

log log.dpd_v1
read_data data.tips

bond_coeff 1 2 0

===== Pairwise Interactions =====

pair_style dpd 1.73 1.0 34387
pair_coeff 1 1 43.25 2.6 1.0
pair_coeff 2 2 43.25 2.6 1.0
pair_coeff 1 2 25.00 2.6 1.0

===== Velocity and Fixes

velocity all create 1.73 8178251
fix 1 all nve

thermo_style custom step temp pe ke etotal
thermo 100

dump 1 all atom 10000 dump_coords_eq_dpd_v1

===== Equilibrate at 473 K =====

timestep 0.01
run 80000

unfix 1

===== Cooling to 323 K =====

reset_timestep 0

pair_style hybrid/overlay dpd 1.73 1.0 12332 dpd/tstat 1.73 1.1764 1.0 34387
pair_coeff 1 1 dpd 43.25 2.6 1.0
pair_coeff 1 1 dpd/tstat 2.6 1.0
pair_coeff 2 2 dpd 43.25 2.6 1.0
pair_coeff 2 2 dpd/tstat 2.6 1.0
pair_coeff 1 2 dpd 25.00 2.6 1.0
pair_coeff 1 2 dpd/tstat 2.6 1.0

fix 2 all nve

dump 2 all atom 10000 dump_coords_cool_dpd_v1

timestep 0.01
run 1000000

Dear all,

I am using DPD to simulate a polymer solution. However, I keep getting the following error:

ERROR on proc 0: Bond atom missing in image check (…/domain.cpp:766)
Last command: run 80000

As I understand, this is due to the cutoff being too small, so a processor loses track of a ghost atom. I reran the simulation with the bond distance being 0.85 instead of 0, and the same issue happens. I was wondering if anyone has come across the same issue and/or know how to come about fixing it. Below is my script.

​there are multiple possible reasons why bonds get too long. is this error happening already at the first step or later during a run?
if the latter, you should visualize your trajectory (with sufficient resolution) so you can look closer at what is happening.
it can also be due to badly chosen force constants or length of time step or communication cutoff. difficult to say with limited information.

axel.​

Dear Axel,

I appreciate the response.The error happens at the very first step - I’m running it on a cluster (nodes=2:ppn=16). However, it works fine when I run it on a single core, thus corroborating my initial theory (please do correct me if I’m wrong).

I played around with most force constants (I made the repulsions extra soft, even for DPD standards, to ensure that was not the issue).

Below is my .pbs file, in case that is the source of the issue.

Thanks a lot in advance for all the help,
Best wishes,

  • Renato

#!/bin/bash
#PBS -l nodes=2:ppn=16
#PBS -q med16core
#PBS -j oe
#PBS -o $PBS_JOBID.med
#PBS -l walltime=72:00:00
#PBS -N dpd_v1
#PBS -m abe
#PBS -M rspacek@…828…
set echo

module purge
module load intel/16.0.1 impi/5.1.2 mkl/16.0.1

cd $PBS_O_WORKDIR

mpirun -np 32 ./lmp_impi < in.dpd_v1

Dear Axel,

I appreciate the response.The error happens at the very first step - I’m running it on a cluster (nodes=2:ppn=16). However, it works fine when I run it on a single core, thus corroborating my initial theory (please do correct me if I’m wrong).

​if it happens at the very first step, it most likely means, that your data file is faulty; it probably has incorrect image flags somewhere. those issues don’t show up with serial execution (you should see a warning, though), since all ​atoms are local so looking for the closest neighbor among local and ghost atoms is always successful. for systems distributed over domains, this is not given.

I played around with most force constants (I made the repulsions extra soft, even for DPD standards, to ensure that was not the issue).

​you are chasing the wrong rabbit here down the wrong hole. ​

Below is my .pbs file, in case that is the source of the issue.

​no, that cannot be.

axel.​

Dear Axel,

Thanks for the response. After much reading and playing around with the scrips, please allow me to ask one last thing, to make sure I understand the source of my issue:

Suppose my data file contains initial coordinates for a polymer that is crossing the periodic boundary. In this case, would I then have to initialize the atoms’ image flags by using the trailing integers (nx, ny, nz) in the data file?

My simulation consists of 3e6 atoms; 6000 chains (with 100 atoms each) and the remaining are single atoms. Do you recommend that the initial position of each chain lies entirely inside the box?

In case I’m plain wrong and these make no sense, I would be happy to hear any suggestions. Thanks a lot in advance.

Best wishes,

  • Renato

Dear Axel,

Thanks for the response. After much reading and playing around with the scrips, please allow me to ask one last thing, to make sure I understand the source of my issue:

Suppose my data file contains initial coordinates for a polymer that is crossing the periodic boundary. In this case, would I then have to initialize the atoms’ image flags by using the trailing integers (nx, ny, nz) in the data file?

​definitely. ​

My simulation consists of 3e6 atoms; 6000 chains (with 100 atoms each) and the remaining are single atoms. Do you recommend that the initial position of each chain lies entirely inside the box?

​not required with periodic boundary conditions. please re-read the read_data docs.

axel.​

Dear Axel,

Adding the initial image flags to the data file still gives me the same error:

Neighbor list info …
update every 4 steps, delay 0 steps, check no
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 1.3
ghost atom cutoff = 1.3
binsize = 0.65, bins = 154 154 154
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair dpd, perpetual
attributes: half, newton off
pair build: half/bin/newtoff
stencil: half/bin/3d/newtoff
bin: standard
ERROR on proc 0: Bond atom missing in image check (…/domain.cpp:766)
Last command: run 800

I am confident the initial image flags are correct, seen as how I utilized another software to generate them, as well as the initial coordinates (GALAMOST).

Any other clues as to why this is happening?

Thanks a lot in advance,

  • Renato

P.S.: Script used is unchanged, same as in the first post.

That error is happening b/c the 2nd atom in a bond is too far
away from a processor that it doesn’t have a copy of it
as a ghost atom. The ghost cutoff is 1.3 (force cut + skin),
as listed in the pre-run output. Do you have a initial
bond config, with a bond longer than that?

Seve