refactoring of USER-TALLY computes to handle sparse and hybrid systems

with sparse and hybrid systems, Pair::ev_tally() may not be called on
every processor and thus the computes in USER-TALLY may hang during
reverse communication because of the error->all() call after checking
whether callback from Pair::ev_tally() has been called at least once.
To address this cleanly, a second callback function needs to be added,
which is run during Pair::ev_setup() and will now handle all memory
re-allocation and clearing of accumulators, just like it is done for
regular tallied data.
This commit is contained in:
Axel Kohlmeyer
2017-06-12 22:12:12 -04:00
parent e530ba46f4
commit b01143102d
12 changed files with 147 additions and 176 deletions

View File

@ -135,6 +135,7 @@ class Compute : protected Pointers {
virtual double memory_usage() {return 0.0;}
virtual void pair_setup_callback(int, int) {}
virtual void pair_tally_callback(int, int, int, int,
double, double, double,
double, double, double) {}