Revert "example with augmented utils::bounds"

This reverts commit 25d4b3484d.
This commit is contained in:
Jacob Gissinger
2024-05-12 02:00:48 -04:00
parent 25d4b3484d
commit 61b9469fd1
5 changed files with 58 additions and 34 deletions

View File

@ -91,10 +91,20 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
adapt[nadapt].which = PAIR; adapt[nadapt].which = PAIR;
adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]); adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]);
adapt[nadapt].pparam = utils::strdup(arg[iarg+2]); adapt[nadapt].pparam = utils::strdup(arg[iarg+2]);
utils::bounds(FLERR, arg[iarg+3], 1, atom->ntypes, char *typestr = nullptr;
adapt[nadapt].ilo, adapt[nadapt].ihi, error, Atom::ATOM); typestr = utils::expand_type(FLERR, arg[iarg+3], Atom::ATOM, lmp);
utils::bounds(FLERR, arg[iarg+4], 1, atom->ntypes, if (typestr)
adapt[nadapt].jlo, adapt[nadapt].jhi, error, Atom::ATOM); adapt[nadapt].ilo = adapt[nadapt].ihi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+3], 1, atom->ntypes,
adapt[nadapt].ilo, adapt[nadapt].ihi, error);
delete[] typestr;
typestr = nullptr;
typestr = utils::expand_type(FLERR, arg[iarg+4], Atom::ATOM, lmp);
if (typestr)
adapt[nadapt].jlo = adapt[nadapt].jhi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+4], 1, atom->ntypes,
adapt[nadapt].jlo, adapt[nadapt].jhi, error);
delete[] typestr;
// switch i,j if i > j, if wildcards were not used // switch i,j if i > j, if wildcards were not used
@ -130,8 +140,13 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
adapt[nadapt].aparam = CHARGE; adapt[nadapt].aparam = CHARGE;
chgflag = 1; chgflag = 1;
} else error->all(FLERR,"Illegal fix adapt/fep command"); } else error->all(FLERR,"Illegal fix adapt/fep command");
utils::bounds(FLERR, arg[iarg+2], 1, atom->ntypes, char *typestr = nullptr;
adapt[nadapt].ilo, adapt[nadapt].ihi, error, Atom::ATOM); typestr = utils::expand_type(FLERR, arg[iarg+2], Atom::ATOM, lmp);
if (typestr)
adapt[nadapt].ilo = adapt[nadapt].ihi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+2], 1, atom->ntypes,
adapt[nadapt].ilo, adapt[nadapt].ihi, error);
delete[] typestr;
if (utils::strmatch(arg[iarg+3],"^v_")) { if (utils::strmatch(arg[iarg+3],"^v_")) {
adapt[nadapt].var = utils::strdup(arg[iarg+3]+2); adapt[nadapt].var = utils::strdup(arg[iarg+3]+2);
} else error->all(FLERR,"Illegal fix adapt/fep command"); } else error->all(FLERR,"Illegal fix adapt/fep command");

View File

@ -33,7 +33,7 @@ class Atom : protected Pointers {
enum { DOUBLE, INT, BIGINT }; enum { DOUBLE, INT, BIGINT };
enum { GROW = 0, RESTART = 1, BORDER = 2 }; enum { GROW = 0, RESTART = 1, BORDER = 2 };
enum { ATOMIC = 0, MOLECULAR = 1, TEMPLATE = 2 }; enum { ATOMIC = 0, MOLECULAR = 1, TEMPLATE = 2 };
enum { ATOM = 0, BOND = 1, ANGLE = 2, DIHEDRAL = 3, IMPROPER = 4, NONTYPE = 5 }; enum { ATOM = 0, BOND = 1, ANGLE = 2, DIHEDRAL = 3, IMPROPER = 4 };
enum { NUMERIC = 0, LABELS = 1 }; enum { NUMERIC = 0, LABELS = 1 };
enum { MAP_NONE = 0, MAP_ARRAY = 1, MAP_HASH = 2, MAP_YES = 3 }; enum { MAP_NONE = 0, MAP_ARRAY = 1, MAP_HASH = 2, MAP_YES = 3 };

View File

@ -99,10 +99,20 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
adapt[nadapt].pair = nullptr; adapt[nadapt].pair = nullptr;
adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]); adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]);
adapt[nadapt].pparam = utils::strdup(arg[iarg+2]); adapt[nadapt].pparam = utils::strdup(arg[iarg+2]);
utils::bounds(FLERR, arg[iarg+3], 1, atom->ntypes, char *typestr = nullptr;
adapt[nadapt].ilo, adapt[nadapt].ihi, error, Atom::ATOM); typestr = utils::expand_type(FLERR, arg[iarg+3], Atom::ATOM, lmp);
utils::bounds(FLERR, arg[iarg+4], 1, atom->ntypes, if (typestr)
adapt[nadapt].jlo, adapt[nadapt].jhi, error, Atom::ATOM); adapt[nadapt].ilo = adapt[nadapt].ihi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+3], 1, atom->ntypes,
adapt[nadapt].ilo, adapt[nadapt].ihi, error);
delete[] typestr;
typestr = nullptr;
typestr = utils::expand_type(FLERR, arg[iarg+4], Atom::ATOM, lmp);
if (typestr)
adapt[nadapt].jlo = adapt[nadapt].jhi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+4], 1, atom->ntypes,
adapt[nadapt].jlo, adapt[nadapt].jhi, error);
delete[] typestr;
// switch i,j if i > j, if wildcards were not used // switch i,j if i > j, if wildcards were not used
@ -126,8 +136,13 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
adapt[nadapt].bond = nullptr; adapt[nadapt].bond = nullptr;
adapt[nadapt].bstyle = utils::strdup(arg[iarg+1]); adapt[nadapt].bstyle = utils::strdup(arg[iarg+1]);
adapt[nadapt].bparam = utils::strdup(arg[iarg+2]); adapt[nadapt].bparam = utils::strdup(arg[iarg+2]);
utils::bounds(FLERR, arg[iarg+3], 1, atom->nbondtypes, char *typestr = nullptr;
adapt[nadapt].ilo, adapt[nadapt].ihi, error, Atom::BOND); typestr = utils::expand_type(FLERR, arg[iarg+3], Atom::BOND, lmp);
if (typestr)
adapt[nadapt].ilo = adapt[nadapt].ihi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+3], 1, atom->nbondtypes,
adapt[nadapt].ilo, adapt[nadapt].ihi, error);
delete[] typestr;
if (utils::strmatch(arg[iarg+4],"^v_")) { if (utils::strmatch(arg[iarg+4],"^v_")) {
adapt[nadapt].var = utils::strdup(arg[iarg+4]+2); adapt[nadapt].var = utils::strdup(arg[iarg+4]+2);
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]); } else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);
@ -139,8 +154,13 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
adapt[nadapt].angle = nullptr; adapt[nadapt].angle = nullptr;
adapt[nadapt].astyle = utils::strdup(arg[iarg+1]); adapt[nadapt].astyle = utils::strdup(arg[iarg+1]);
adapt[nadapt].aparam = utils::strdup(arg[iarg+2]); adapt[nadapt].aparam = utils::strdup(arg[iarg+2]);
utils::bounds(FLERR, arg[iarg+3], 1, atom->nangletypes, char *typestr = nullptr;
adapt[nadapt].ilo, adapt[nadapt].ihi, error, Atom::ANGLE); typestr = utils::expand_type(FLERR, arg[iarg+3], Atom::ANGLE, lmp);
if (typestr)
adapt[nadapt].ilo = adapt[nadapt].ihi = utils::inumeric(FLERR, typestr, false, lmp);
else utils::bounds(FLERR, arg[iarg+3], 1, atom->nangletypes,
adapt[nadapt].ilo, adapt[nadapt].ihi, error);
delete[] typestr;
if (utils::strmatch(arg[iarg+4],"^v_")) { if (utils::strmatch(arg[iarg+4],"^v_")) {
adapt[nadapt].var = utils::strdup(arg[iarg+4]+2); adapt[nadapt].var = utils::strdup(arg[iarg+4]+2);
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]); } else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);

View File

@ -596,24 +596,15 @@ tagint utils::tnumeric(const char *file, int line, const char *str, bool do_abor
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
compute bounds implied by numeric str with a possible wildcard asterisk compute bounds implied by numeric str with a possible wildcard asterisk
if str is a single number or type label, return nlo = nhi = label2type(str)
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
// clang-format off // clang-format off
template <typename TYPE> template <typename TYPE>
void utils::bounds(const char *file, int line, const std::string &str, bigint nmin, void utils::bounds(const char *file, int line, const std::string &str,
bigint nmax, TYPE &nlo, TYPE &nhi, Error *error, int mode = Atom::NONTYPE) bigint nmin, bigint nmax, TYPE &nlo, TYPE &nhi, Error *error)
{ {
nlo = nhi = -1; nlo = nhi = -1;
if (mode != Atom::NONTYPE) { // check for illegal charcters
char *typestr;
if ( typestr = utils::expand_type(FLERR, str, mode, lmp) )
nlo = nhi = utils::inumeric(FLERR, typestr, false, lmp);
delete[] typestr;
if (nlo > -1) return;
}
// check for illegal characters
size_t found = str.find_first_not_of("*-0123456789"); size_t found = str.find_first_not_of("*-0123456789");
if (found != std::string::npos) { if (found != std::string::npos) {
if (error) error->all(file, line, "Invalid range string: {}", str); if (error) error->all(file, line, "Invalid range string: {}", str);
@ -651,11 +642,11 @@ void utils::bounds(const char *file, int line, const std::string &str, bigint nm
} }
template void utils::bounds<>(const char *, int, const std::string &, template void utils::bounds<>(const char *, int, const std::string &,
bigint, bigint, int &, int &, Error *, int); bigint, bigint, int &, int &, Error *);
template void utils::bounds<>(const char *, int, const std::string &, template void utils::bounds<>(const char *, int, const std::string &,
bigint, bigint, long &, long &, Error *, int); bigint, bigint, long &, long &, Error *);
template void utils::bounds<>(const char *, int, const std::string &, template void utils::bounds<>(const char *, int, const std::string &,
bigint, bigint, long long &, long long &, Error *, int); bigint, bigint, long long &, long long &, Error *);
// clang-format on // clang-format on
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------

View File

@ -310,10 +310,9 @@ namespace utils {
/*! Compute index bounds derived from a string with a possible wildcard /*! Compute index bounds derived from a string with a possible wildcard
* *
* This functions processes the string in *str* and set the values of *nlo* * This functions processes the string in *str* and set the values of *nlo*
* and *nhi* according to the following six cases: * and *nhi* according to the following five cases:
* *
* - a single number, i: nlo = i; nhi = i; * - a single number, i: nlo = i; nhi = i;
* - a single type label, typestr: nlo = nhi = label2type(typestr)
* - a single asterisk, \*: nlo = nmin; nhi = nmax; * - a single asterisk, \*: nlo = nmin; nhi = nmax;
* - a single number followed by an asterisk, i\*: nlo = i; nhi = nmax; * - a single number followed by an asterisk, i\*: nlo = i; nhi = nmax;
* - a single asterisk followed by a number, \*i: nlo = nmin; nhi = i; * - a single asterisk followed by a number, \*i: nlo = nmin; nhi = i;
@ -326,12 +325,11 @@ namespace utils {
* \param nmax largest allowed upper bound * \param nmax largest allowed upper bound
* \param nlo lower bound * \param nlo lower bound
* \param nhi upper bound * \param nhi upper bound
* \param mode select labelmap using constants from Atom class
* \param error pointer to Error class for out-of-bounds messages */ * \param error pointer to Error class for out-of-bounds messages */
template <typename TYPE> template <typename TYPE>
void bounds(const char *file, int line, const std::string &str, bigint nmin, bigint nmax, void bounds(const char *file, int line, const std::string &str, bigint nmin, bigint nmax,
TYPE &nlo, TYPE &nhi, Error *error, int mode); TYPE &nlo, TYPE &nhi, Error *error);
/*! Expand list of arguments when containing fix/compute wildcards /*! Expand list of arguments when containing fix/compute wildcards
* *