add "Incorrect format in ... section of data file" to Error_details and url

This commit is contained in:
Axel Kohlmeyer
2024-03-26 23:56:38 -04:00
parent b01efd96a5
commit cd154abe73
4 changed files with 42 additions and 11 deletions

View File

@ -37,3 +37,20 @@ but the :doc:`read_data <read_data>` command is missing the (optional)
arguments that identify the fix and the header keyword and section arguments that identify the fix and the header keyword and section
keyword or those arguments are inconsistent with the keywords in the keyword or those arguments are inconsistent with the keywords in the
data file. data file.
.. _err0002:
Incorrect format in ... section of data file
--------------------------------------------
This error happens when LAMMPS reads the contents of a section of a
:doc:`data file <read_data>` and the number of parameters in the line
differs from what is expected. This most commonly happens, when the
atom style is different from what is expected for a specific data file
since changing the atom style usually changes the format of the line.
This error can also happen when the number of entries indicated in the
header of a data file (e.g. the number of atoms) is larger than the
number of lines provided (e.g. in the corresponding Atoms section)
and then LAMMPS will continue reading into the next section and that
would have a completely different format.

View File

@ -970,7 +970,8 @@ void FixCMAP::read_data_section(char * /*keyword*/, int /*n*/, char *buf,
atom5 = values.next_tagint(); atom5 = values.next_tagint();
if (values.has_next()) throw TokenizerException("too many items",line); if (values.has_next()) throw TokenizerException("too many items",line);
} catch (std::exception &e) { } catch (std::exception &e) {
error->all(FLERR,"Incorrect format of CMAP section: {}", e.what()); error->all(FLERR,"Incorrect format of CMAP section in data file: {}{}",
e.what(), utils::errorurl(2));
} }
atom1 += id_offset; atom1 += id_offset;

View File

@ -1068,7 +1068,8 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset,
} }
if ((nwords != avec->size_data_atom) && (nwords != avec->size_data_atom + 3)) if ((nwords != avec->size_data_atom) && (nwords != avec->size_data_atom + 3))
error->all(FLERR,"Incorrect format in {}: {}", location, utils::trim(buf)); error->all(FLERR,"Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
*next = '\n'; *next = '\n';
// set bounds for my proc // set bounds for my proc
@ -1149,7 +1150,8 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset,
// skip over empty or comment lines // skip over empty or comment lines
} else if ((nvalues < nwords) || } else if ((nvalues < nwords) ||
((nvalues > nwords) && (!utils::strmatch(values[nwords],"^#")))) { ((nvalues > nwords) && (!utils::strmatch(values[nwords],"^#")))) {
error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); error->all(FLERR, "Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
} else { } else {
int imx = 0, imy = 0, imz = 0; int imx = 0, imy = 0, imz = 0;
if (imageflag) { if (imageflag) {
@ -1243,7 +1245,8 @@ void Atom::data_vels(int n, char *buf, tagint id_offset)
if (values.size() == 0) { if (values.size() == 0) {
// skip over empty or comment lines // skip over empty or comment lines
} else if ((int)values.size() != avec->size_data_vel) { } else if ((int)values.size() != avec->size_data_vel) {
error->all(FLERR, "Incorrect velocity format in data file: {}", utils::trim(buf)); error->all(FLERR, "Incorrect format in Velocities section of data file: {}{}",
utils::trim(buf), utils::errorurl(2));
} else { } else {
tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset; tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset;
if (tagdata <= 0 || tagdata > map_tag_max) if (tagdata <= 0 || tagdata > map_tag_max)
@ -1287,7 +1290,9 @@ void Atom::data_bonds(int n, char *buf, int *count, tagint id_offset,
// skip over empty or comment lines // skip over empty or comment lines
// Bonds line is: number(ignored), bond type, atomID 1, atomID 2 // Bonds line is: number(ignored), bond type, atomID 1, atomID 2
if (nwords > 0) { if (nwords > 0) {
if (nwords != 4) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); if (nwords != 4)
error->all(FLERR, "Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
typestr = utils::utf8_subst(values[1]); typestr = utils::utf8_subst(values[1]);
atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom1 = utils::tnumeric(FLERR, values[2], false, lmp);
atom2 = utils::tnumeric(FLERR, values[3], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp);
@ -1378,7 +1383,9 @@ void Atom::data_angles(int n, char *buf, int *count, tagint id_offset,
// skip over empty or comment lines // skip over empty or comment lines
// Angles line is: number(ignored), angle type, atomID 1, atomID 2, atomID 3 // Angles line is: number(ignored), angle type, atomID 1, atomID 2, atomID 3
if (nwords > 0) { if (nwords > 0) {
if (nwords != 5) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); if (nwords != 5)
error->all(FLERR, "Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
typestr = utils::utf8_subst(values[1]); typestr = utils::utf8_subst(values[1]);
atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom1 = utils::tnumeric(FLERR, values[2], false, lmp);
atom2 = utils::tnumeric(FLERR, values[3], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp);
@ -1485,7 +1492,9 @@ void Atom::data_dihedrals(int n, char *buf, int *count, tagint id_offset,
// skip over empty or comment lines // skip over empty or comment lines
// Dihedrals line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4 // Dihedrals line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4
if (nwords > 0) { if (nwords > 0) {
if (nwords != 6) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); if (nwords != 6)
error->all(FLERR, "Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
typestr = utils::utf8_subst(values[1]); typestr = utils::utf8_subst(values[1]);
atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom1 = utils::tnumeric(FLERR, values[2], false, lmp);
atom2 = utils::tnumeric(FLERR, values[3], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp);
@ -1611,7 +1620,9 @@ void Atom::data_impropers(int n, char *buf, int *count, tagint id_offset,
// skip over empty or comment lines // skip over empty or comment lines
// Impropers line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4 // Impropers line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4
if (nwords > 0) { if (nwords > 0) {
if (nwords != 6) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); if (nwords != 6)
error->all(FLERR, "Incorrect format in {}: {}{}", location,
utils::trim(buf), utils::errorurl(2));
typestr = utils::utf8_subst(values[1]); typestr = utils::utf8_subst(values[1]);
atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom1 = utils::tnumeric(FLERR, values[2], false, lmp);
atom2 = utils::tnumeric(FLERR, values[3], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp);
@ -1727,7 +1738,8 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus, tagint id_offset)
if (values.size() == 0) { if (values.size() == 0) {
// skip over empty or comment lines // skip over empty or comment lines
} else if ((int)values.size() != avec_bonus->size_data_bonus) { } else if ((int)values.size() != avec_bonus->size_data_bonus) {
error->all(FLERR, "Incorrect bonus data format in data file: {}", utils::trim(buf)); error->all(FLERR, "Incorrect format in Bonus section of data file: {}{}",
utils::trim(buf), utils::errorurl(2));
} else { } else {
tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset; tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset;
if (tagdata <= 0 || tagdata > map_tag_max) if (tagdata <= 0 || tagdata > map_tag_max)

View File

@ -328,8 +328,9 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint
try { try {
ValueTokenizer values(buf); ValueTokenizer values(buf);
if ((int) values.count() != values_peratom + 1) if ((int) values.count() != values_peratom + 1)
error->all(FLERR, "Incorrect format in {} section of data file: {} expected {} and got {}", error->all(FLERR, "Incorrect format in {} section of data file: {}\n"
keyword, buf, values_peratom + 1, values.count()); "expected {} parameters and got {}{}", keyword, utils::trim(buf),
values_peratom + 1, values.count(), utils::errorurl(2));
itag = values.next_tagint() + id_offset; itag = values.next_tagint() + id_offset;
if (itag <= 0 || itag > map_tag_max) if (itag <= 0 || itag > map_tag_max)