diff --git a/src/REPLICA/temper.cpp b/src/REPLICA/temper.cpp index 00ca062ecc..a4c67108d3 100644 --- a/src/REPLICA/temper.cpp +++ b/src/REPLICA/temper.cpp @@ -219,7 +219,17 @@ void Temper::command(int narg, char **arg) timer->init_timeout(); update->integrate->run(nevery); - if (timer->is_timeout()) break; + + // check for timeout across all procs + + int my_timeout=0; + int any_timeout=0; + if (timer->is_timeout()) my_timeout=1; + MPI_Allreduce(&my_timeout, &any_timeout, 1, MPI_INT, MPI_SUM, universe->uworld); + if (any_timeout) { + timer->force_timeout(); + break; + } // compute PE // notify compute it will be called at next swap diff --git a/src/USER-MISC/temper_grem.cpp b/src/USER-MISC/temper_grem.cpp index 692f78cf9f..866f923fb9 100644 --- a/src/USER-MISC/temper_grem.cpp +++ b/src/USER-MISC/temper_grem.cpp @@ -241,7 +241,17 @@ void TemperGrem::command(int narg, char **arg) timer->init_timeout(); update->integrate->run(nevery); - if (timer->is_timeout()) break; + + // check for timeout across all procs + + int my_timeout=0; + int any_timeout=0; + if (timer->is_timeout()) my_timeout=1; + MPI_Allreduce(&my_timeout, &any_timeout, 1, MPI_INT, MPI_SUM, universe->uworld); + if (any_timeout) { + timer->force_timeout(); + break; + } // compute PE // notify compute it will be called at next swap diff --git a/src/USER-MISC/temper_npt.cpp b/src/USER-MISC/temper_npt.cpp index 55c9aadc6f..d0a14d8e4d 100644 --- a/src/USER-MISC/temper_npt.cpp +++ b/src/USER-MISC/temper_npt.cpp @@ -220,7 +220,17 @@ void TemperNPT::command(int narg, char **arg) timer->init_timeout(); update->integrate->run(nevery); - if (timer->is_timeout()) break; + + // check for timeout across all procs + + int my_timeout=0; + int any_timeout=0; + if (timer->is_timeout()) my_timeout=1; + MPI_Allreduce(&my_timeout, &any_timeout, 1, MPI_INT, MPI_SUM, universe->uworld); + if (any_timeout) { + timer->force_timeout(); + break; + } // compute PE // notify compute it will be called at next swap diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index d799869db3..b6f0c63546 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -23,7 +23,9 @@ #include "atom.h" #include "force.h" #include "comm.h" +#include "neighbor.h" #include "neigh_list.h" +#include "neigh_request.h" #include "memory.h" #include "error.h" #include "domain.h" @@ -238,7 +240,7 @@ void PairSDPDTaitwaterIsothermal::allocate () { void PairSDPDTaitwaterIsothermal::settings (int narg, char **arg) { if (narg != 2 && narg != 3) error->all (FLERR, "Illegal number of arguments for " - "pair_style sdpd/taitwater/morris/isothermal"); + "pair_style sdpd/taitwater/isothermal"); temperature = force->numeric (FLERR, arg[0]); viscosity = force->numeric (FLERR, arg[1]); @@ -297,13 +299,26 @@ void PairSDPDTaitwaterIsothermal::coeff (int narg, char **arg) { error->all(FLERR,"Incorrect args for pair coefficients"); } +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairSDPDTaitwaterIsothermal::init_style() +{ + if ((!atom->rho_flag) || (atom->drho == NULL)) + error->all(FLERR,"Pair style dpd/taitwater/isothermal requires atom " + "attributes rho and drho"); + + neighbor->request(this,instance_me); +} + /* ---------------------------------------------------------------------- init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ double PairSDPDTaitwaterIsothermal::init_one (int i, int j) { if (setflag[i][j] == 0) - error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are set"); + error->all(FLERR,"Not all pair sdpd/taitwater/isothermal coeffs are set"); cut[j][i] = cut[i][j]; diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h index caaa0759d0..2d3d06297b 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h @@ -36,6 +36,7 @@ class PairSDPDTaitwaterIsothermal : public Pair { void settings (int, char **); void coeff (int, char **); virtual double init_one (int, int); + virtual void init_style(); protected: double viscosity, temperature; diff --git a/src/atom.cpp b/src/atom.cpp index de5d30930a..1396eb596c 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -175,6 +175,8 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) spin_flag = eradius_flag = ervel_flag = erforce_flag = ervelforce_flag = 0; cs_flag = csforce_flag = vforce_flag = etag_flag = 0; + // USER-SPH, USER-MESO, and USER-DPD flags + rho_flag = e_flag = cv_flag = vest_flag = 0; dpd_flag = edpd_flag = tdpd_flag = 0;