more robust variable error checks

This commit is contained in:
jrgissing
2023-05-05 17:41:42 -04:00
parent 0b71371597
commit b9161843dc
2 changed files with 14 additions and 3 deletions

View File

@ -243,11 +243,12 @@ FixReaxFFSpecies::FixReaxFFSpecies(LAMMPS *lmp, int narg, char **arg) :
if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, "fix reaxff/species delete_rate_limit", error);
delete_Nlimit_varid = -1;
if (strncmp(arg[iarg+1],"v_",2) == 0) {
delete_Nlimit_varid = input->variable->find(&arg[iarg+1][2]);
delete_Nlimit_varname = &arg[iarg+1][2];
delete_Nlimit_varid = input->variable->find(delete_Nlimit_varname.c_str());
if (delete_Nlimit_varid < 0)
error->all(FLERR,"Fix reaxff/species: Variable name {} does not exist",&arg[iarg+1][2]);
error->all(FLERR,"Fix reaxff/species: Variable name {} does not exist",delete_Nlimit_varname);
if (!input->variable->equalstyle(delete_Nlimit_varid))
error->all(FLERR,"Fix reaxff/species: Variable {} is not equal-style",&arg[iarg+1][2]);
error->all(FLERR,"Fix reaxff/species: Variable {} is not equal-style",delete_Nlimit_varname);
} else delete_Nlimit = utils::numeric(FLERR, arg[iarg+1], false, lmp);
delete_Nsteps = utils::numeric(FLERR, arg[iarg+2], false, lmp);
iarg += 3;
@ -387,6 +388,15 @@ void FixReaxFFSpecies::init()
f_SPECBOND = dynamic_cast<FixAveAtom *>(modify->add_fix(fixcmd));
setupflag = 1;
}
// check for valid variable name for delete Nlimit keyword
if (delete_Nsteps > 0) {
delete_Nlimit_varid = input->variable->find(delete_Nlimit_varname.c_str());
if (delete_Nlimit_varid < 0)
error->all(FLERR,"Fix reaxff/species: Variable name {} does not exist",delete_Nlimit_varname);
if (!input->variable->equalstyle(delete_Nlimit_varid))
error->all(FLERR,"Fix reaxff/species: Variable {} is not equal-style",delete_Nlimit_varname);
}
}
/* ---------------------------------------------------------------------- */

View File

@ -61,6 +61,7 @@ class FixReaxFFSpecies : public Fix {
int eleflag, posflag, multipos, padflag, setupflag;
int delflag, specieslistflag, masslimitflag;
int delete_Nlimit, delete_Nlimit_varid;
std::string delete_Nlimit_varname;
int delete_Nsteps, *delete_Tcount;
double massmin, massmax;
int singlepos_opened, multipos_opened, del_opened;