Defining groups of atoms give non-straight division lines.

Dear LAMMPS users,

In my input scripts, I usually define several regions, groups and types of atoms after the system box has been created and filled with atoms according to a certain lattice structure. For instance, let us say I define a region that consist of atoms with x-coordinate between 0 and 5, and another region with atoms with x-coordinate between 5 and 10. Then I create a group of the first region called "left" and a group of the second region called "right". Everything is done before any run or minimization is done, so all the atoms are perfectly placed in the initial lattice structure. Thus I expect a sharp, straight line between the different groups, with atoms of coordinate x<5.000 in group "left" and atoms of coordinate x>=5.000 in group "right". However, this is not always the case when I look at my simulations.

As shown in the attached image, along a dividing line between two groups some atoms are assigned to one group, while some are assigned to the other. By investigating the coordinates of the atoms, they have exactly the same x-coordinates, so my question is this: why do some atoms go into one group, and some to the other? Is this all due to numerical round-offs, possibly combined with a bad choice of dividing line between the two groups? This is really frustrating, since I sometimes end up with non-straight cracks (in my crack simulations), and if I have defects on a surface I get stress concentrations at these defect points. I wish, of course, to have a perfect initial structure.

By the way, this artifact appears both when running on a single processor and when running on several processors.

Do you have any explanation as to why this happens, and what I could do to solve it?

Sincerely,
Christer H. Ersland.

geometry.png

If you have an atom at x = 5, and you define 2 regions as you say, with their
dividing line at 5, and then invoke 2 group commands using those 2 regions,
then the atom at x = 5 will be in both regions. The definition of "inside" a
region is inside it or on the surface. The atom is on the surface of
both regions.

Your idea below of using < 5 for one region and >= 5 for the other might
work for region boundaries which are lines aligned with coordinate
axes. But it wouldn't work for anything else, e.g. a region that is a sphere.

The solution is not to define both your regions boundaries with 5.
Use 5 for one, and 5.0001
for the other.

It's easy to tell if you get the group assignment you want since
LAMMPS prints out
how many atoms got assigned to each group. If the sum != # of atoms,
you know you mis-assigned some atoms.

Steve

Dear LAMMPS users,

As shown in the attached image, along a dividing line between two groups some atoms are assigned to one group, while some are assigned to the other. By investigating the coordinates of the atoms, they have exactly the same x-coordinates, so my question is this: why do some atoms go into one group, and some to the other? Is this all due to numerical round-offs, possibly combined with a bad choice of dividing line between the two groups? This is really frustrating, since I sometimes end up with non-straight cracks (in my crack simulations), and if I have defects on a surface I get stress concentrations at these defect points. I wish, of course, to have a perfect initial structure.

those are likely to be rounding errors. you must have placed atoms
_exactly on the group boundary
and then the tiniest difference can decide for left of right. you
won't see this on output, unless you
write out positions with more than 15 digits accuracy. the problem is
the group definition. just shift
it be a few fractions of an angstrom (e.g. 4.99 or 5.01) and you should be fine.

By the way, this artifact appears both when running on a single processor and when running on several processors.

yes., atom positions are computed the same way on each processor. no
rounding involved.

axel.

I should have also mentioned that you can define a region with
the "side out" option. Atoms will only be in that region
if they are outside the region and not on the surface. So that
is perfectly opposite the definition of "inside" the region and
your atoms at x = 5 would go into one or the other of the
regions with no duplicates.

Steve