CONQUEST-release icon indicating copy to clipboard operation
CONQUEST-release copied to clipboard

Error in the calculations with ghost atoms.

Open tsuyoshi38 opened this issue 4 years ago • 4 comments

With the version in "develop" branch, we have found that there are errors when

  1. the system includes ghost atoms
  2. we use multiple processes and
  3. some of the processes has only ghost atoms.

tsuyoshi38 avatar May 07 '21 08:05 tsuyoshi38

What kind of errors? A failure, or a problem with the energy or force?

davidbowler avatar May 21 '21 14:05 davidbowler

CONQUEST stops with an error something like the error finding a neighbor atoms (or matrix elements). I thought it may be related to the fact that ghost atoms does not have any neighbors for some matrix elements, but I do not remember the details now. I will report more detailed information in a few days.

tsuyoshi38 avatar May 23 '21 01:05 tsuyoshi38

I think that it is this error (that I have also found):

 Completed set_blocks()
 Completed set_domains()
          Allocating memory for distribute_atom
 Completed distribute_atoms()
  rcut for BCS_parts =   34.920331988484620     
 Members in covering set:         2016
 Made covering set for matrix multiplications
  Error in process   16
  Error in process   16
  Atoms are too far apart! Minimum distance is     100.000000000000

This is related to the routine subroutine check_InterAtomicDistances in mult_module.f90. You can run successfully without it by setting IO.CheckInitialAtomicDistances F in the input, but we need to understand why the error happens.

davidbowler avatar May 24 '21 07:05 davidbowler

I have encountered this bug today. The problem comes from the distance detection routine in mult_module.f90:

https://github.com/OrderN/CONQUEST-release/blob/e0f11dc46ffc73c58b315f355625824b599873cf/src/mult_module.f90#L3537-L3547

We exclude ghost atoms from the distance check, so if a process has only ghost atoms, it will fail this test. I think that a simple test around line 3566 to check if r_min is 100.0 would solve this; alternatively we could set a flag if a process has only ghost atoms (locally in this routine or globally).

@tsuyoshi38 @ayakon what do you think?

davidbowler avatar Feb 14 '22 15:02 davidbowler