simplify by returning new variable index in creator function and avoid calling finder
This commit is contained in:
@ -590,10 +590,8 @@ int PythonImpl::create_entry(char *name, int ninput, int noutput, int length_lon
|
||||
pfuncs[ifunc].svalue[i] = utils::strdup(istr[i] + 3);
|
||||
char *vname = pfuncs[ifunc].svalue[i];
|
||||
int ivar = input->variable->find(vname);
|
||||
if (ivar < 0) { // create internal variable if does not exist
|
||||
input->variable->internal_create(vname, 0.0);
|
||||
ivar = input->variable->find(vname);
|
||||
}
|
||||
// create internal variable if does not exist
|
||||
if (ivar < 0) ivar = input->variable->internal_create(vname, 0.0);
|
||||
if (!input->variable->internalstyle(ivar))
|
||||
error->all(FLERR, Error::NOLASTLINE, "Variable {} for python command is invalid style",
|
||||
vname);
|
||||
@ -611,10 +609,8 @@ int PythonImpl::create_entry(char *name, int ninput, int noutput, int length_lon
|
||||
pfuncs[ifunc].svalue[i] = utils::strdup(istr[i] + 3);
|
||||
char *vname = pfuncs[ifunc].svalue[i];
|
||||
int ivar = input->variable->find(vname);
|
||||
if (ivar < 0) { // create internal variable if does not exist
|
||||
input->variable->internal_create(vname, 0.0);
|
||||
ivar = input->variable->find(vname);
|
||||
}
|
||||
// create internal variable if does not exist
|
||||
if (ivar < 0) ivar = input->variable->internal_create(vname, 0.0);
|
||||
if (!input->variable->internalstyle(ivar))
|
||||
error->all(FLERR, Error::NOLASTLINE, "Variable {} for python command is invalid style",
|
||||
vname);
|
||||
|
||||
@ -108,10 +108,8 @@ ComputeAngleLocal::ComputeAngleLocal(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
if (tstr) {
|
||||
tvar = input->variable->find(tstr);
|
||||
if (tvar < 0) {
|
||||
input->variable->internal_create(tstr,0.0);
|
||||
tvar = input->variable->find(tstr);
|
||||
}
|
||||
if (tvar < 0) tvar = input->variable->internal_create(tstr, 0.0);
|
||||
|
||||
if (!input->variable->internalstyle(tvar))
|
||||
error->all(FLERR, "Variable for compute angle/local is invalid style");
|
||||
}
|
||||
|
||||
@ -154,10 +154,8 @@ ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
if (dstr) {
|
||||
dvar = input->variable->find(dstr);
|
||||
if (dvar < 0) {
|
||||
input->variable->internal_create(dstr,0.0);
|
||||
dvar = input->variable->find(dstr);
|
||||
}
|
||||
if (dvar < 0) dvar = input->variable->internal_create(dstr, 0.0);
|
||||
|
||||
if (!input->variable->internalstyle(dvar))
|
||||
error->all(FLERR, "Variable for compute bond/local is invalid style");
|
||||
}
|
||||
|
||||
@ -102,10 +102,8 @@ ComputeDihedralLocal::ComputeDihedralLocal(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
if (pstr) {
|
||||
pvar = input->variable->find(pstr);
|
||||
if (pvar < 0) {
|
||||
input->variable->internal_create(pstr,0.0);
|
||||
pvar = input->variable->find(pstr);
|
||||
}
|
||||
if (pvar < 0) pvar = input->variable->internal_create(pstr, 0.0);
|
||||
|
||||
if (!input->variable->internalstyle(pvar))
|
||||
error->all(FLERR, "Variable for compute dihedral/local is invalid style");
|
||||
}
|
||||
|
||||
@ -390,13 +390,10 @@ void CreateAtoms::command(int narg, char **arg)
|
||||
if (!input->variable->equalstyle(vvar))
|
||||
error->all(FLERR, Error::NOLASTLINE, "Variable {} for create_atoms is invalid style", vstr);
|
||||
|
||||
#define SETUP_XYZ_VAR(str,var) \
|
||||
#define SETUP_XYZ_VAR(str, var) \
|
||||
if (str) { \
|
||||
var = input->variable->find(str); \
|
||||
if (var < 0) { \
|
||||
input->variable->internal_create(str, 0.0); \
|
||||
var = input->variable->find(str); \
|
||||
} \
|
||||
if (var < 0) var = input->variable->internal_create(str, 0.0); \
|
||||
if (!input->variable->internalstyle(var)) \
|
||||
error->all(FLERR, Error::NOLASTLINE, \
|
||||
"Variable {} for create_atoms is invalid style", str); \
|
||||
|
||||
@ -866,33 +866,18 @@ void FixDeposit::options(int narg, char **arg)
|
||||
if (!input->variable->equalstyle(vvar))
|
||||
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||
|
||||
if (xstr) {
|
||||
xvar = input->variable->find(xstr);
|
||||
if (xvar < 0) {
|
||||
input->variable->internal_create(xstr,0.0);
|
||||
xvar = input->variable->find(xstr);
|
||||
}
|
||||
if (!input->variable->internalstyle(xvar))
|
||||
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||
}
|
||||
if (ystr) {
|
||||
yvar = input->variable->find(ystr);
|
||||
if (yvar < 0) {
|
||||
input->variable->internal_create(ystr,0.0);
|
||||
yvar = input->variable->find(ystr);
|
||||
}
|
||||
if (!input->variable->internalstyle(yvar))
|
||||
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||
}
|
||||
if (zstr) {
|
||||
zvar = input->variable->find(zstr);
|
||||
if (zvar < 0) {
|
||||
input->variable->internal_create(zstr,0.0);
|
||||
zvar = input->variable->find(zstr);
|
||||
}
|
||||
if (!input->variable->internalstyle(zvar))
|
||||
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||
}
|
||||
#define SETUP_XYZ_VAR(str, var) \
|
||||
if (str) { \
|
||||
var = input->variable->find(str); \
|
||||
if (var < 0) var = input->variable->internal_create(str, 0.0); \
|
||||
if (!input->variable->internalstyle(xvar)) \
|
||||
error->all(FLERR, "Variable {} for fix deposit is invalid style", str); \
|
||||
} \
|
||||
|
||||
SETUP_XYZ_VAR(xstr, xvar);
|
||||
SETUP_XYZ_VAR(ystr, yvar);
|
||||
SETUP_XYZ_VAR(zstr, zvar);
|
||||
#undef SETUP_XYZ_VAR
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1316,7 +1316,7 @@ void Variable::internal_set(int ivar, double value)
|
||||
create an INTERNAL style variable with name, set to value
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Variable::internal_create(char *name, double value)
|
||||
int Variable::internal_create(char *name, double value)
|
||||
{
|
||||
if (find(name) >= 0)
|
||||
error->all(FLERR,"Creation of internal-style variable {} which already exists", name);
|
||||
@ -1334,6 +1334,7 @@ void Variable::internal_create(char *name, double value)
|
||||
error->all(FLERR, "Variable name '{}' must have only letters, numbers, or underscores", name);
|
||||
names[nvar] = utils::strdup(name);
|
||||
nvar++;
|
||||
return nvar - 1;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -49,7 +49,7 @@ class Variable : protected Pointers {
|
||||
void compute_atom(int, int, double *, int, int);
|
||||
int compute_vector(int, double **);
|
||||
void internal_set(int, double);
|
||||
void internal_create(char *, double);
|
||||
int internal_create(char *, double);
|
||||
|
||||
tagint int_between_brackets(char *&, int);
|
||||
double evaluate_boolean(char *);
|
||||
|
||||
Reference in New Issue
Block a user