diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index cf6e2814c0e0bb56f5a19b2a2481ea019259e114..03de42c68ca1d387784210e911d5cfe2f97c652d 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -969,6 +969,8 @@ void PPPMKokkos<DeviceType>::set_grid_global() if (!gewaldflag) { if (accuracy <= 0.0) error->all(FLERR,"KSpace accuracy must be > 0"); + if (q2 == 0.0) + error->all(FLERR,"Must use 'kspace_modify gewald' for uncharged system"); g_ewald = accuracy*sqrt(natoms*cutoff*xprd*yprd*zprd) / (2.0*q2); if (g_ewald >= 1.0) g_ewald = (1.35 - 0.15*log(accuracy))/cutoff; else g_ewald = sqrt(-log(g_ewald)) / cutoff; @@ -1179,6 +1181,7 @@ double PPPMKokkos<DeviceType>::final_accuracy() double yprd = domain->yprd; double zprd = domain->zprd; bigint natoms = atomKK->natoms; + if (natoms == 0) natoms = 1; // avoid division by zero double df_kspace = compute_df_kspace(); double q2_over_sqrt = q2 / sqrt(natoms*cutoff*xprd*yprd*zprd); diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 28dda4abfcc380a68c52a5f26656c58b0a72abc8..53ab2e5a9d72159e116e2cd02bba223552a558ca 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -1004,6 +1004,8 @@ void PPPM::set_grid_global() if (!gewaldflag) { if (accuracy <= 0.0) error->all(FLERR,"KSpace accuracy must be > 0"); + if (q2 == 0.0) + error->all(FLERR,"Must use kspace_modify gewald for uncharged system"); g_ewald = accuracy*sqrt(natoms*cutoff*xprd*yprd*zprd) / (2.0*q2); if (g_ewald >= 1.0) g_ewald = (1.35 - 0.15*log(accuracy))/cutoff; else g_ewald = sqrt(-log(g_ewald)) / cutoff; @@ -1346,6 +1348,7 @@ double PPPM::final_accuracy() double yprd = domain->yprd; double zprd = domain->zprd; bigint natoms = atom->natoms; + if (natoms == 0) natoms = 1; // avoid division by zero double df_kspace = compute_df_kspace(); double q2_over_sqrt = q2 / sqrt(natoms*cutoff*xprd*yprd*zprd);