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

This commit is contained in:
Axel Kohlmeyer 2019-05-31 00:31:36 -04:00
parent 4243af30d7
commit f73c848ee4
No known key found for this signature in database
GPG Key ID: D9B44E93BF0C375A
3 changed files with 16 additions and 2 deletions

View File

@ -777,6 +777,7 @@ void FixAtomSwap::write_restart(FILE *fp)
list[n++] = ubuf(next_reneighbor).d;
list[n++] = nswap_attempts;
list[n++] = nswap_successes;
list[n++] = ubuf(update->ntimestep).d;
if (comm->me == 0) {
int size = n * sizeof(double);
@ -804,4 +805,8 @@ void FixAtomSwap::restart(char *buf)
nswap_attempts = 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");
}

View File

@ -2543,7 +2543,7 @@ void FixGCMC::write_restart(FILE *fp)
list[n++] = ndeletion_successes;
list[n++] = ninsertion_attempts;
list[n++] = ninsertion_successes;
list[n++] = ubuf(update->ntimestep).d;
if (comm->me == 0) {
int size = n * sizeof(double);
@ -2577,6 +2577,10 @@ void FixGCMC::restart(char *buf)
ndeletion_successes = list[n++];
ninsertion_attempts = 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) {

View File

@ -798,11 +798,12 @@ void FixDeposit::options(int narg, char **arg)
void FixDeposit::write_restart(FILE *fp)
{
int n = 0;
double list[4];
double list[5];
list[n++] = random->state();
list[n++] = ninserted;
list[n++] = nfirst;
list[n++] = ubuf(next_reneighbor).d;
list[n++] = ubuf(update->ntimestep).d;
if (comm->me == 0) {
int size = n * sizeof(double);
@ -825,6 +826,10 @@ void FixDeposit::restart(char *buf)
nfirst = static_cast<int> (list[n++]);
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);
}