support special case where number of data lines from fix is number of added atoms

This commit is contained in:
Axel Kohlmeyer
2022-11-19 14:01:10 -05:00
parent b39842ba23
commit 442eeb9f52
2 changed files with 9 additions and 5 deletions

View File

@ -325,12 +325,12 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint
}
/* ----------------------------------------------------------------------
return # of lines in section of data file labeled by keyword
return # of lines in section of data file labeled by keyword. -1 signals use # of added atoms
------------------------------------------------------------------------- */
bigint FixPropertyAtom::read_data_skip_lines(char * /*keyword*/)
{
return atom->natoms;
return -1;
}
/* ----------------------------------------------------------------------

View File

@ -875,10 +875,13 @@ void ReadData::command(int narg, char **arg)
int i;
for (i = 0; i < nfix; i++)
if (strcmp(keyword, fix_section[i]) == 0) {
if (firstpass)
if (firstpass) {
fix(fix_index[i], keyword);
else
skip_lines(fix_index[i]->read_data_skip_lines(keyword));
} else {
auto nskip = fix_index[i]->read_data_skip_lines(keyword);
if (nskip < 0) nskip = natoms;
skip_lines(nskip);
}
break;
}
if (i == nfix)
@ -2225,6 +2228,7 @@ void ReadData::fix(Fix *ifix, char *keyword)
int nchunk, eof;
bigint nline = ifix->read_data_skip_lines(keyword);
if (nline < 0) nline = natoms;
bigint nread = 0;
while (nread < nline) {