diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index 107dbfbaff..386523c364 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -354,7 +354,18 @@ void Ewald::compute(int eflag, int vflag) if (eflag || vflag) ev_setup(eflag,vflag); else evflag = evflag_atom = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + + // if atom count has changed, update qsum and qsqsum + if (atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // return if there are no charges + + if (qsqsum == 0.0) return; + // extend size of per-atom arrays if necessary if (atom->nlocal > nmax) { @@ -431,13 +442,6 @@ void Ewald::compute(int eflag, int vflag) if (slabflag != 2) f[i][2] += qscale * q[i]*ek[i][2]; } - // update qsum and qsqsum, if atom count has changed and energy needed - - if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { - qsum_qsq(); - natoms_original = atom->natoms; - } - // sum global energy across Kspace vevs and add in volume-dependent term if (eflag_global) { diff --git a/src/KSPACE/msm.cpp b/src/KSPACE/msm.cpp index d3c72306be..2719b21e16 100644 --- a/src/KSPACE/msm.cpp +++ b/src/KSPACE/msm.cpp @@ -457,6 +457,17 @@ void MSM::compute(int eflag, int vflag) } } + // if atom count has changed, update qsum and qsqsum + + if (atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // return if there are no charges + + if (qsqsum == 0.0) return; + // invoke allocate_peratom() if needed for first time if (vflag_atom && !peratom_allocate_flag) { @@ -565,13 +576,6 @@ void MSM::compute(int eflag, int vflag) if (evflag_atom) fieldforce_peratom(); - // update qsum and qsqsum, if atom count has changed and energy needed - - if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { - qsum_qsq(); - natoms_original = atom->natoms; - } - // sum global energy across procs and add in self-energy term const double qscale = qqrd2e * scale; diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 814ea1e63e..1924ad4db9 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -607,6 +607,17 @@ void PPPM::compute(int eflag, int vflag) cg_peratom->setup(); } + // if atom count has changed, update qsum and qsqsum + + if (atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // return if there are no charges + + if (qsqsum == 0.0) return; + // convert atoms from box to lamda coords if (triclinic == 0) boxlo = domain->boxlo; @@ -666,13 +677,6 @@ void PPPM::compute(int eflag, int vflag) if (evflag_atom) fieldforce_peratom(); - // update qsum and qsqsum, if atom count has changed and energy needed - - if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { - qsum_qsq(); - natoms_original = atom->natoms; - } - // sum global energy across procs and add in volume-dependent term const double qscale = qqrd2e * scale;