Irregular::migrate_atoms() and infinite loop.

mdasilva's picture
Submitted by mdasilva on Tue, 10/24/2017 - 17:33

Hello everybody, lately I've been reading LIGGGHTS-PUBLIC version 3.5.0 code to have a better understanding about atoms migration scheme. I found that two methods are available, Comm::exchange() and Irregular::migrate_atoms().

I decided to give a chance to Irreglar::migrate_atoms() and made a couple of changes in verlet.cpp file in order to use this method. The changes are very few, so I guess they are alright; here they are:

1) around line 73 added an include sentence:

#include "irregular.h" (this way Verlet class are aware of Irregular class and methods)

2) around line 298 I have this:

//domain->pbc();
double **x = atom->x;
tagint *image = atom->image;
int nlocal = atom->nlocal;
for (i = 0; i < nlocal; i++) domain->remap(x[i],image[i]);

It was first using Domain::pbc() for periodic boundary conditions, and now it is using Domain::remap().

3) around line 312 I have this:

//comm->exchange();
Irregular *irregular = new Irregular(lmp);
irregular->migrate_atoms();
delete irregular;

The rest of the code is untouched and compilation goes fine, but when I run the binflow simulation it goes into an infinite loop. I set up a very small simulation with 10000 particles and 15000 timesteps. The bottom of hopper is not removed, so the simulation is to just put a few particles in the hopper.

All the particles are inserted, but the simulation doesn't stop when it reaches 150000 timesteps, it goes on for, at least, 4~5 hours (at this time a stopped the simulation).

If I revert the changes everything goes fine. The simulation is dumping some vtk files and I use them to "see" what should be going wrong, but I had no luck. Both set of files let me renderize the some animation.

Well, any suggestion? The code for using Irregular::migrate_atoms() was found on other fixes code (for instances fix_deform.cpp).

Thank you very much,
Miguel.