more robust variable error checks
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user