diff --git a/src/kspace.cpp b/src/kspace.cpp index 69b997b8fb..16ed8be14b 100644 --- a/src/kspace.cpp +++ b/src/kspace.cpp @@ -70,6 +70,7 @@ KSpace::KSpace(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) adjust_cutoff_flag = 1; scalar_pressure_flag = 0; warn_nonneutral = 1; + warn_nocharge = 1; accuracy_absolute = -1.0; accuracy_real_6 = -1.0; @@ -279,8 +280,10 @@ void KSpace::qsum_qsq() MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); - if (qsqsum == 0.0) - error->all(FLERR,"Cannot use kspace solver on system with no charge"); + if ((qsqsum == 0.0) && (comm->me == 0) && warn_nocharge) { + error->warning(FLERR,"Using kspace solver on system with no charge"); + warn_nocharge = 0; + } q2 = qsqsum * force->qqrd2e; diff --git a/src/kspace.h b/src/kspace.h index b51a865c85..157e028e58 100644 --- a/src/kspace.h +++ b/src/kspace.h @@ -56,6 +56,8 @@ class KSpace : protected Pointers { int warn_nonneutral; // 0 = error if non-neutral system // 1 = warn once if non-neutral system // 2 = warn, but already warned + int warn_nocharge; // 0 = already warned + // 1 = warn if zero charge int order,order_6,order_allocated; double accuracy; // accuracy of KSpace solver (force units)