Unverified Commit f73c848e authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

detect and error out when timestep was reset when restarting fixes atom/swap, gcmc, or deposit

parent 4243af30
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -777,6 +777,7 @@ void FixAtomSwap::write_restart(FILE *fp)
  list[n++] = ubuf(next_reneighbor).d;
  list[n++] = ubuf(next_reneighbor).d;
  list[n++] = nswap_attempts;
  list[n++] = nswap_attempts;
  list[n++] = nswap_successes;
  list[n++] = nswap_successes;
  list[n++] = ubuf(update->ntimestep).d;


  if (comm->me == 0) {
  if (comm->me == 0) {
    int size = n * sizeof(double);
    int size = n * sizeof(double);
@@ -804,4 +805,8 @@ void FixAtomSwap::restart(char *buf)


  nswap_attempts = static_cast<int>(list[n++]);
  nswap_attempts = static_cast<int>(list[n++]);
  nswap_successes = static_cast<int>(list[n++]);
  nswap_successes = static_cast<int>(list[n++]);

  bigint ntimestep_restart = (bigint) ubuf(list[n++]).i;
  if (ntimestep_restart != update->ntimestep)
    error->all(FLERR,"Must not reset timestep when restarting fix atom/swap");
}
}
+5 −1
Original line number Original line Diff line number Diff line
@@ -2543,7 +2543,7 @@ void FixGCMC::write_restart(FILE *fp)
  list[n++] = ndeletion_successes;
  list[n++] = ndeletion_successes;
  list[n++] = ninsertion_attempts;
  list[n++] = ninsertion_attempts;
  list[n++] = ninsertion_successes;
  list[n++] = ninsertion_successes;

  list[n++] = ubuf(update->ntimestep).d;


  if (comm->me == 0) {
  if (comm->me == 0) {
    int size = n * sizeof(double);
    int size = n * sizeof(double);
@@ -2577,6 +2577,10 @@ void FixGCMC::restart(char *buf)
  ndeletion_successes    = list[n++];
  ndeletion_successes    = list[n++];
  ninsertion_attempts    = list[n++];
  ninsertion_attempts    = list[n++];
  ninsertion_successes   = list[n++];
  ninsertion_successes   = list[n++];

  bigint ntimestep_restart = (bigint) ubuf(list[n++]).i;
  if (ntimestep_restart != update->ntimestep)
    error->all(FLERR,"Must not reset timestep when restarting fix gcmc");
}
}


void FixGCMC::grow_molecule_arrays(int nmolatoms) {
void FixGCMC::grow_molecule_arrays(int nmolatoms) {
+6 −1
Original line number Original line Diff line number Diff line
@@ -798,11 +798,12 @@ void FixDeposit::options(int narg, char **arg)
void FixDeposit::write_restart(FILE *fp)
void FixDeposit::write_restart(FILE *fp)
{
{
  int n = 0;
  int n = 0;
  double list[4];
  double list[5];
  list[n++] = random->state();
  list[n++] = random->state();
  list[n++] = ninserted;
  list[n++] = ninserted;
  list[n++] = nfirst;
  list[n++] = nfirst;
  list[n++] = ubuf(next_reneighbor).d;
  list[n++] = ubuf(next_reneighbor).d;
  list[n++] = ubuf(update->ntimestep).d;


  if (comm->me == 0) {
  if (comm->me == 0) {
    int size = n * sizeof(double);
    int size = n * sizeof(double);
@@ -825,6 +826,10 @@ void FixDeposit::restart(char *buf)
  nfirst = static_cast<int> (list[n++]);
  nfirst = static_cast<int> (list[n++]);
  next_reneighbor = (bigint) ubuf(list[n++]).i;
  next_reneighbor = (bigint) ubuf(list[n++]).i;


  bigint ntimestep_restart = (bigint) ubuf(list[n++]).i;
  if (ntimestep_restart != update->ntimestep)
    error->all(FLERR,"Must not reset timestep when restarting this fix");

  random->reset(seed);
  random->reset(seed);
}
}