diff --git a/src/compute.cpp b/src/compute.cpp index fde11f6c7f..ca42519273 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -75,6 +75,7 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) invoked_scalar = invoked_vector = invoked_array = -1; invoked_peratom = invoked_local = -1; + invoked_flag = 0; // set modify defaults diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index 56a38e2402..87b7e85fa4 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -402,13 +402,24 @@ int DumpCustom::count() } // invoke Computes for per-atom quantities + // only if within a run or minimize + // else require that computes are current + // this prevents a compute from being invoked by the WriteDump class if (ncompute) { - for (i = 0; i < ncompute; i++) - if (!(compute[i]->invoked_flag & INVOKED_PERATOM)) { - compute[i]->compute_peratom(); - compute[i]->invoked_flag |= INVOKED_PERATOM; + if (update->whichflag == 0) { + for (i = 0; i < ncompute; i++) + if (compute[i]->invoked_peratom != update->ntimestep) + error->all(FLERR,"Compute used in write_dump between runs " + "is not current"); + } else { + for (i = 0; i < ncompute; i++) { + if (!(compute[i]->invoked_flag & INVOKED_PERATOM)) { + compute[i]->compute_peratom(); + compute[i]->invoked_flag |= INVOKED_PERATOM; + } } + } } // evaluate atom-style Variables for per-atom quantities