recover failing unit tests and whitespace fixes

This commit is contained in:
Axel Kohlmeyer
2021-12-23 15:19:17 -05:00
parent 7018ba65be
commit a653ee6b2c
5 changed files with 42 additions and 23 deletions

View File

@ -128,7 +128,7 @@ void DumpXTC::init_style()
int idump; int idump;
for (idump = 0; idump < output->ndump; idump++) for (idump = 0; idump < output->ndump; idump++)
if (strcmp(id,output->dump[idump]->id) == 0) break; if (strcmp(id,output->dump[idump]->id) == 0) break;
if (output->mode_dump[idump] == 1) if (output->mode_dump[idump] == 1)
error->all(FLERR,"Cannot use every/time setting for dump xtc"); error->all(FLERR,"Cannot use every/time setting for dump xtc");

View File

@ -120,7 +120,7 @@ void Integrate::ev_setup()
(1) computes that need energy/virial info on this timestep (1) computes that need energy/virial info on this timestep
(2) time dumps that may need per-atom compute info on this timestep (2) time dumps that may need per-atom compute info on this timestep
NOTE: inefficient to add all per-atom eng/virial computes NOTE: inefficient to add all per-atom eng/virial computes
but don't know which ones the dump needs but don't know which ones the dump needs
see NOTE in output.cpp see NOTE in output.cpp
invoke matchstep() on all timestep-dependent computes to clear their arrays invoke matchstep() on all timestep-dependent computes to clear their arrays
eflag: set any or no bits eflag: set any or no bits
@ -140,7 +140,7 @@ void Integrate::ev_set(bigint ntimestep)
int i,flag; int i,flag;
int tdflag = 0; int tdflag = 0;
if (output->any_time_dumps && if (output->any_time_dumps &&
output->next_time_dump_any == ntimestep) tdflag = 1; output->next_time_dump_any == ntimestep) tdflag = 1;
flag = 0; flag = 0;

View File

@ -199,9 +199,9 @@ void Output::setup(int memflag)
// (2) and (3) only apply for non-variable dump intervals // (2) and (3) only apply for non-variable dump intervals
// finally, do not write if same snapshot written previously, // finally, do not write if same snapshot written previously,
// i.e. on last timestep of previous run // i.e. on last timestep of previous run
int writeflag = 0; int writeflag = 0;
if (last_dump[idump] < 0 && dump[idump]->first_flag == 1) writeflag = 1; if (last_dump[idump] < 0 && dump[idump]->first_flag == 1) writeflag = 1;
if (mode_dump[idump] == 0) { if (mode_dump[idump] == 0) {
@ -209,7 +209,7 @@ void Output::setup(int memflag)
writeflag = 1; writeflag = 1;
} else { } else {
if (every_time_dump[idump] > 0.0) { if (every_time_dump[idump] > 0.0) {
double tcurrent = update->atime + double tcurrent = update->atime +
(ntimestep - update->atimestep) * update->dt; (ntimestep - update->atimestep) * update->dt;
double remainder = fmod(tcurrent,every_time_dump[idump]); double remainder = fmod(tcurrent,every_time_dump[idump]);
if ((remainder < EPSDT*update->dt) || if ((remainder < EPSDT*update->dt) ||
@ -234,7 +234,7 @@ void Output::setup(int memflag)
if (writeflag || last_dump[idump] < 0) if (writeflag || last_dump[idump] < 0)
calculate_next_dump(0,idump,ntimestep); calculate_next_dump(0,idump,ntimestep);
// if dump not written now, use addstep_compute_all() // if dump not written now, use addstep_compute_all()
// since don't know what computes the dump will invoke // since don't know what computes the dump will invoke
if (mode_dump[idump] == 0 && if (mode_dump[idump] == 0 &&
@ -354,7 +354,7 @@ void Output::setup(int memflag)
if (next_dump[idump] == ntimestep) { if (next_dump[idump] == ntimestep) {
if (last_dump[idump] == ntimestep) continue; if (last_dump[idump] == ntimestep) continue;
if (mode_dump[idump] == 0 && if (mode_dump[idump] == 0 &&
(dump[idump]->clearstep || var_dump[idump])) (dump[idump]->clearstep || var_dump[idump]))
modify->clearstep_compute(); modify->clearstep_compute();
@ -365,7 +365,7 @@ void Output::setup(int memflag)
last_dump[idump] = ntimestep; last_dump[idump] = ntimestep;
calculate_next_dump(1,idump,ntimestep); calculate_next_dump(1,idump,ntimestep);
if (mode_dump[idump] == 0 && if (mode_dump[idump] == 0 &&
(dump[idump]->clearstep || var_dump[idump])) (dump[idump]->clearstep || var_dump[idump]))
modify->addstep_compute(next_dump[idump]); modify->addstep_compute(next_dump[idump]);
} }
@ -490,7 +490,7 @@ void Output::setup(int memflag)
if (which == 0) if (which == 0)
next_dump[idump] = next_dump[idump] =
(ntimestep/every_dump[idump])*every_dump[idump] + every_dump[idump]; (ntimestep/every_dump[idump])*every_dump[idump] + every_dump[idump];
else if (which == 1) else if (which == 1)
next_dump[idump] += every_dump[idump]; next_dump[idump] += every_dump[idump];
} else { } else {
@ -507,7 +507,7 @@ void Output::setup(int memflag)
bigint nextdump; bigint nextdump;
double nexttime; double nexttime;
double tcurrent = update->atime + double tcurrent = update->atime +
(ntimestep - update->atimestep) * update->dt; (ntimestep - update->atimestep) * update->dt;
if (every_time_dump[idump] > 0.0) { if (every_time_dump[idump] > 0.0) {
@ -517,27 +517,27 @@ void Output::setup(int memflag)
// which = 2: no change to previous nexttime (only timestep has changed) // which = 2: no change to previous nexttime (only timestep has changed)
if (which == 0) if (which == 0)
nexttime = static_cast<bigint> (tcurrent/every_time_dump[idump]) * nexttime = static_cast<bigint> (tcurrent/every_time_dump[idump]) *
every_time_dump[idump] + every_time_dump[idump]; every_time_dump[idump] + every_time_dump[idump];
else if (which == 1) else if (which == 1)
nexttime = next_time_dump[idump] + every_time_dump[idump]; nexttime = next_time_dump[idump] + every_time_dump[idump];
else if (which == 2) else if (which == 2)
nexttime = next_time_dump[idump]; nexttime = next_time_dump[idump];
nextdump = ntimestep + nextdump = ntimestep +
static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) / static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) /
update->dt) + 1; update->dt) + 1;
// if delta is too small to reach next timestep, use multiple of delta // if delta is too small to reach next timestep, use multiple of delta
if (nextdump == ntimestep) { if (nextdump == ntimestep) {
double tnext = update->atime + double tnext = update->atime +
(ntimestep+1 - update->atimestep) * update->dt; (ntimestep+1 - update->atimestep) * update->dt;
int multiple = static_cast<int> int multiple = static_cast<int>
((tnext - nexttime) / every_time_dump[idump]); ((tnext - nexttime) / every_time_dump[idump]);
nexttime = nexttime + (multiple+1)*every_time_dump[idump]; nexttime = nexttime + (multiple+1)*every_time_dump[idump];
nextdump = ntimestep + nextdump = ntimestep +
static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) / static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) /
update->dt) + 1; update->dt) + 1;
} }
@ -548,14 +548,14 @@ void Output::setup(int memflag)
if (which < 2 || next_time_dump[idump] < 0.0) { if (which < 2 || next_time_dump[idump] < 0.0) {
nexttime = input->variable->compute_equal(ivar_dump[idump]); nexttime = input->variable->compute_equal(ivar_dump[idump]);
} else } else
nexttime = next_time_dump[idump]; nexttime = next_time_dump[idump];
if (nexttime <= tcurrent) if (nexttime <= tcurrent)
error->all(FLERR,"Dump every/time variable returned a bad time"); error->all(FLERR,"Dump every/time variable returned a bad time");
nextdump = ntimestep + nextdump = ntimestep +
static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) / static_cast<bigint> ((nexttime - tcurrent - EPSDT*update->dt) /
update->dt) + 1; update->dt) + 1;
if (nextdump <= ntimestep) if (nextdump <= ntimestep)
error->all(FLERR,"Dump every/time variable too small for next timestep"); error->all(FLERR,"Dump every/time variable too small for next timestep");
@ -704,7 +704,7 @@ void Output::reset_dt()
// reset next_dump but do not change next_time_dump, 2 arg for reset_dt() // reset next_dump but do not change next_time_dump, 2 arg for reset_dt()
// do not invoke for a dump already scheduled for this step // do not invoke for a dump already scheduled for this step
// since timestep change affects next step // since timestep change affects next step
if (next_dump[idump] != ntimestep) if (next_dump[idump] != ntimestep)
calculate_next_dump(2,idump,update->ntimestep); calculate_next_dump(2,idump,update->ntimestep);

View File

@ -74,6 +74,13 @@ public:
END_HIDE_OUTPUT(); END_HIDE_OUTPUT();
} }
void close_dump()
{
BEGIN_HIDE_OUTPUT();
command("undump id");
END_HIDE_OUTPUT();
}
void generate_text_and_binary_dump(std::string text_file, std::string binary_file, void generate_text_and_binary_dump(std::string text_file, std::string binary_file,
std::string dump_modify_options, int ntimesteps) std::string dump_modify_options, int ntimesteps)
{ {
@ -505,6 +512,7 @@ TEST_F(DumpAtomTest, rerun)
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
ASSERT_EQ(count_lines(dump_file), 82); ASSERT_EQ(count_lines(dump_file), 82);
continue_dump(1); continue_dump(1);
close_dump();
lmp->output->thermo->evaluate_keyword("pe", &pe_2); lmp->output->thermo->evaluate_keyword("pe", &pe_2);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
ASSERT_EQ(count_lines(dump_file), 123); ASSERT_EQ(count_lines(dump_file), 123);
@ -532,6 +540,7 @@ TEST_F(DumpAtomTest, rerun_bin)
lmp->output->thermo->evaluate_keyword("pe", &pe_1); lmp->output->thermo->evaluate_keyword("pe", &pe_1);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
continue_dump(1); continue_dump(1);
close_dump();
lmp->output->thermo->evaluate_keyword("pe", &pe_2); lmp->output->thermo->evaluate_keyword("pe", &pe_2);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
HIDE_OUTPUT([&] { HIDE_OUTPUT([&] {

View File

@ -73,6 +73,13 @@ public:
END_HIDE_OUTPUT(); END_HIDE_OUTPUT();
} }
void close_dump()
{
BEGIN_HIDE_OUTPUT();
command("undump id");
END_HIDE_OUTPUT();
}
void generate_text_and_binary_dump(std::string text_file, std::string binary_file, void generate_text_and_binary_dump(std::string text_file, std::string binary_file,
std::string fields, std::string dump_modify_options, std::string fields, std::string dump_modify_options,
int ntimesteps) int ntimesteps)
@ -330,6 +337,7 @@ TEST_F(DumpCustomTest, rerun)
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
ASSERT_EQ(count_lines(dump_file), 82); ASSERT_EQ(count_lines(dump_file), 82);
continue_dump(1); continue_dump(1);
close_dump();
lmp->output->thermo->evaluate_keyword("pe", &pe_2); lmp->output->thermo->evaluate_keyword("pe", &pe_2);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
ASSERT_EQ(count_lines(dump_file), 123); ASSERT_EQ(count_lines(dump_file), 123);
@ -338,6 +346,7 @@ TEST_F(DumpCustomTest, rerun)
}); });
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun); lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
ASSERT_DOUBLE_EQ(pe_1, pe_rerun); ASSERT_DOUBLE_EQ(pe_1, pe_rerun);
HIDE_OUTPUT([&] { HIDE_OUTPUT([&] {
command(fmt::format("rerun {} first 2 last 2 every 1 post yes dump x y z", dump_file)); command(fmt::format("rerun {} first 2 last 2 every 1 post yes dump x y z", dump_file));
}); });
@ -359,6 +368,7 @@ TEST_F(DumpCustomTest, rerun_bin)
lmp->output->thermo->evaluate_keyword("pe", &pe_1); lmp->output->thermo->evaluate_keyword("pe", &pe_1);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
continue_dump(1); continue_dump(1);
close_dump();
lmp->output->thermo->evaluate_keyword("pe", &pe_2); lmp->output->thermo->evaluate_keyword("pe", &pe_2);
ASSERT_FILE_EXISTS(dump_file); ASSERT_FILE_EXISTS(dump_file);
HIDE_OUTPUT([&] { HIDE_OUTPUT([&] {