improve error message throughout fix adap
This commit is contained in:
@ -48,9 +48,9 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
Fix(lmp, narg, arg), nadapt(0), anypair(0), anybond(0), anyangle(0),
|
Fix(lmp, narg, arg), nadapt(0), anypair(0), anybond(0), anyangle(0),
|
||||||
id_fix_diam(nullptr), id_fix_chg(nullptr), adapt(nullptr)
|
id_fix_diam(nullptr), id_fix_chg(nullptr), adapt(nullptr)
|
||||||
{
|
{
|
||||||
if (narg < 5) error->all(FLERR,"Illegal fix adapt command");
|
if (narg < 5) utils::missing_cmd_args(FLERR,"fix adapt", error);
|
||||||
nevery = utils::inumeric(FLERR,arg[3],false,lmp);
|
nevery = utils::inumeric(FLERR,arg[3],false,lmp);
|
||||||
if (nevery < 0) error->all(FLERR,"Illegal fix adapt command");
|
if (nevery < 0) error->all(FLERR,"Illegal fix adapt every value {}", nevery);
|
||||||
|
|
||||||
dynamic_group_allow = 1;
|
dynamic_group_allow = 1;
|
||||||
create_attribute = 1;
|
create_attribute = 1;
|
||||||
@ -62,29 +62,29 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
int iarg = 4;
|
int iarg = 4;
|
||||||
while (iarg < narg) {
|
while (iarg < narg) {
|
||||||
if (strcmp(arg[iarg],"pair") == 0) {
|
if (strcmp(arg[iarg],"pair") == 0) {
|
||||||
if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+6 > narg) utils::missing_cmd_args(FLERR,"fix adapt pair", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 6;
|
iarg += 6;
|
||||||
} else if (strcmp(arg[iarg],"kspace") == 0) {
|
} else if (strcmp(arg[iarg],"kspace") == 0) {
|
||||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt kspace", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
} else if (strcmp(arg[iarg],"atom") == 0) {
|
} else if (strcmp(arg[iarg],"atom") == 0) {
|
||||||
if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+3 > narg) utils::missing_cmd_args(FLERR,"fix adapt atom", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 3;
|
iarg += 3;
|
||||||
} else if (strcmp(arg[iarg],"bond") == 0) {
|
} else if (strcmp(arg[iarg],"bond") == 0) {
|
||||||
if (iarg+5 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+5 > narg) utils::missing_cmd_args(FLERR,"fix adapt bond", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 5;
|
iarg += 5;
|
||||||
} else if (strcmp(arg[iarg],"angle") == 0) {
|
} else if (strcmp(arg[iarg],"angle") == 0) {
|
||||||
if (iarg+5 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+5 > narg) utils::missing_cmd_args(FLERR,"fix adapt angle", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 5;
|
iarg += 5;
|
||||||
} else break;
|
} else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nadapt == 0) error->all(FLERR,"Illegal fix adapt command");
|
if (nadapt == 0) error->all(FLERR,"Nothing to adapt in fix adapt command");
|
||||||
adapt = new Adapt[nadapt];
|
adapt = new Adapt[nadapt];
|
||||||
|
|
||||||
// parse keywords
|
// parse keywords
|
||||||
@ -96,7 +96,6 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
iarg = 4;
|
iarg = 4;
|
||||||
while (iarg < narg) {
|
while (iarg < narg) {
|
||||||
if (strcmp(arg[iarg],"pair") == 0) {
|
if (strcmp(arg[iarg],"pair") == 0) {
|
||||||
if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command");
|
|
||||||
adapt[nadapt].which = PAIR;
|
adapt[nadapt].which = PAIR;
|
||||||
adapt[nadapt].pair = nullptr;
|
adapt[nadapt].pair = nullptr;
|
||||||
adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]);
|
adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]);
|
||||||
@ -107,12 +106,11 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
adapt[nadapt].jlo,adapt[nadapt].jhi,error);
|
adapt[nadapt].jlo,adapt[nadapt].jhi,error);
|
||||||
if (utils::strmatch(arg[iarg+5],"^v_")) {
|
if (utils::strmatch(arg[iarg+5],"^v_")) {
|
||||||
adapt[nadapt].var = utils::strdup(arg[iarg+5]+2);
|
adapt[nadapt].var = utils::strdup(arg[iarg+5]+2);
|
||||||
} else error->all(FLERR,"Illegal fix adapt command");
|
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+6, arg[iarg+5]);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 6;
|
iarg += 6;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"bond") == 0) {
|
} else if (strcmp(arg[iarg],"bond") == 0) {
|
||||||
if (iarg+5 > narg) error->all(FLERR, "Illegal fix adapt command");
|
|
||||||
adapt[nadapt].which = BOND;
|
adapt[nadapt].which = BOND;
|
||||||
adapt[nadapt].bond = nullptr;
|
adapt[nadapt].bond = nullptr;
|
||||||
adapt[nadapt].bstyle = utils::strdup(arg[iarg+1]);
|
adapt[nadapt].bstyle = utils::strdup(arg[iarg+1]);
|
||||||
@ -121,12 +119,11 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
||||||
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,"Illegal fix adapt command");
|
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 5;
|
iarg += 5;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"angle") == 0) {
|
} else if (strcmp(arg[iarg],"angle") == 0) {
|
||||||
if (iarg+5 > narg) error->all(FLERR, "Illegal fix adapt command");
|
|
||||||
adapt[nadapt].which = ANGLE;
|
adapt[nadapt].which = ANGLE;
|
||||||
adapt[nadapt].angle = nullptr;
|
adapt[nadapt].angle = nullptr;
|
||||||
adapt[nadapt].astyle = utils::strdup(arg[iarg+1]);
|
adapt[nadapt].astyle = utils::strdup(arg[iarg+1]);
|
||||||
@ -135,21 +132,19 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
||||||
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,"Illegal fix adapt command");
|
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 5;
|
iarg += 5;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"kspace") == 0) {
|
} else if (strcmp(arg[iarg],"kspace") == 0) {
|
||||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command");
|
|
||||||
adapt[nadapt].which = KSPACE;
|
adapt[nadapt].which = KSPACE;
|
||||||
if (utils::strmatch(arg[iarg+1],"^v_")) {
|
if (utils::strmatch(arg[iarg+1],"^v_")) {
|
||||||
adapt[nadapt].var = utils::strdup(arg[iarg+1]+2);
|
adapt[nadapt].var = utils::strdup(arg[iarg+1]+2);
|
||||||
} else error->all(FLERR,"Illegal fix adapt command");
|
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+2, arg[iarg+1]);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"atom") == 0) {
|
} else if (strcmp(arg[iarg],"atom") == 0) {
|
||||||
if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command");
|
|
||||||
adapt[nadapt].which = ATOM;
|
adapt[nadapt].which = ATOM;
|
||||||
if (strcmp(arg[iarg+1],"diameter") == 0 ||
|
if (strcmp(arg[iarg+1],"diameter") == 0 ||
|
||||||
strcmp(arg[iarg+1],"diameter/disc") == 0) {
|
strcmp(arg[iarg+1],"diameter/disc") == 0) {
|
||||||
@ -160,10 +155,10 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
} else if (strcmp(arg[iarg+1],"charge") == 0) {
|
} else if (strcmp(arg[iarg+1],"charge") == 0) {
|
||||||
adapt[nadapt].atomparam = CHARGE;
|
adapt[nadapt].atomparam = CHARGE;
|
||||||
chgflag = 1;
|
chgflag = 1;
|
||||||
} else error->all(FLERR,"Illegal fix adapt command");
|
} else error->all(FLERR,"Unsupported per-atom property {} for fix adapt", arg[iarg+1]);
|
||||||
if (utils::strmatch(arg[iarg+2],"^v_")) {
|
if (utils::strmatch(arg[iarg+2],"^v_")) {
|
||||||
adapt[nadapt].var = utils::strdup(arg[iarg+2]+2);
|
adapt[nadapt].var = utils::strdup(arg[iarg+2]+2);
|
||||||
} else error->all(FLERR,"Illegal fix adapt command");
|
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+3, arg[iarg+2]);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 3;
|
iarg += 3;
|
||||||
} else break;
|
} else break;
|
||||||
@ -177,18 +172,18 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
while (iarg < narg) {
|
while (iarg < narg) {
|
||||||
if (strcmp(arg[iarg],"reset") == 0) {
|
if (strcmp(arg[iarg],"reset") == 0) {
|
||||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt reset", error);
|
||||||
resetflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
resetflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
} else if (strcmp(arg[iarg],"scale") == 0) {
|
} else if (strcmp(arg[iarg],"scale") == 0) {
|
||||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt scale", error);
|
||||||
scaleflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
scaleflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
} else if (strcmp(arg[iarg],"mass") == 0) {
|
} else if (strcmp(arg[iarg],"mass") == 0) {
|
||||||
if (iarg+2 > narg)error->all(FLERR,"Illegal fix adapt command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt mass", error);
|
||||||
massflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
massflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
} else error->all(FLERR,"Illegal fix adapt command");
|
} else error->all(FLERR,"Unknown fix adapt keyword {}", arg[iarg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if scaleflag set with diameter or charge adaptation,
|
// if scaleflag set with diameter or charge adaptation,
|
||||||
@ -202,22 +197,19 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
int n = atom->ntypes;
|
int n = atom->ntypes;
|
||||||
for (int m = 0; m < nadapt; m++)
|
for (int m = 0; m < nadapt; m++)
|
||||||
if (adapt[m].which == PAIR)
|
if (adapt[m].which == PAIR) memory->create(adapt[m].array_orig,n+1,n+1,"adapt:array_orig");
|
||||||
memory->create(adapt[m].array_orig,n+1,n+1,"adapt:array_orig");
|
|
||||||
|
|
||||||
// allocate bond style arrays:
|
// allocate bond style arrays:
|
||||||
|
|
||||||
n = atom->nbondtypes;
|
n = atom->nbondtypes;
|
||||||
for (int m = 0; m < nadapt; ++m)
|
for (int m = 0; m < nadapt; ++m)
|
||||||
if (adapt[m].which == BOND)
|
if (adapt[m].which == BOND) memory->create(adapt[m].vector_orig,n+1,"adapt:vector_orig");
|
||||||
memory->create(adapt[m].vector_orig,n+1,"adapt:vector_orig");
|
|
||||||
|
|
||||||
// allocate angle style arrays:
|
// allocate angle style arrays:
|
||||||
|
|
||||||
n = atom->nbondtypes;
|
n = atom->nbondtypes;
|
||||||
for (int m = 0; m < nadapt; ++m)
|
for (int m = 0; m < nadapt; ++m)
|
||||||
if (adapt[m].which == ANGLE)
|
if (adapt[m].which == ANGLE) memory->create(adapt[m].vector_orig,n+1,"adapt:vector_orig");
|
||||||
memory->create(adapt[m].vector_orig,n+1,"adapt:vector_orig");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -324,7 +316,7 @@ void FixAdapt::init()
|
|||||||
if (group->dynamic[igroup])
|
if (group->dynamic[igroup])
|
||||||
for (i = 0; i < nadapt; i++)
|
for (i = 0; i < nadapt; i++)
|
||||||
if (adapt[i].which == ATOM)
|
if (adapt[i].which == ATOM)
|
||||||
error->all(FLERR,"Cannot use dynamic group with fix adapt atom");
|
error->all(FLERR,"Cannot use dynamic group {} with fix adapt atom", group->names[igroup]);
|
||||||
|
|
||||||
// setup and error checks
|
// setup and error checks
|
||||||
|
|
||||||
@ -337,9 +329,9 @@ void FixAdapt::init()
|
|||||||
|
|
||||||
ad->ivar = input->variable->find(ad->var);
|
ad->ivar = input->variable->find(ad->var);
|
||||||
if (ad->ivar < 0)
|
if (ad->ivar < 0)
|
||||||
error->all(FLERR,"Variable name for fix adapt does not exist");
|
error->all(FLERR,"Variable name {} for fix adapt does not exist", ad->var);
|
||||||
if (!input->variable->equalstyle(ad->ivar))
|
if (!input->variable->equalstyle(ad->ivar))
|
||||||
error->all(FLERR,"Variable for fix adapt is invalid style");
|
error->all(FLERR,"Variable {} for fix adapt is invalid style", ad->var);
|
||||||
|
|
||||||
if (ad->which == PAIR) {
|
if (ad->which == PAIR) {
|
||||||
anypair = 1;
|
anypair = 1;
|
||||||
@ -374,7 +366,7 @@ void FixAdapt::init()
|
|||||||
// scalars are supported
|
// scalars are supported
|
||||||
|
|
||||||
if (ad->pdim != 2 && ad->pdim != 0)
|
if (ad->pdim != 2 && ad->pdim != 0)
|
||||||
error->all(FLERR,"Fix adapt pair style param is not compatible");
|
error->all(FLERR,"Pair style parameter {} is not compatible with fix adapt", ad->pparam);
|
||||||
|
|
||||||
if (ad->pdim == 2) ad->array = (double **) ptr;
|
if (ad->pdim == 2) ad->array = (double **) ptr;
|
||||||
if (ad->pdim == 0) ad->scalar = (double *) ptr;
|
if (ad->pdim == 0) ad->scalar = (double *) ptr;
|
||||||
@ -402,12 +394,12 @@ void FixAdapt::init()
|
|||||||
|
|
||||||
if (ad->bond == nullptr) ad->bond = force->bond_match(bstyle);
|
if (ad->bond == nullptr) ad->bond = force->bond_match(bstyle);
|
||||||
if (ad->bond == nullptr )
|
if (ad->bond == nullptr )
|
||||||
error->all(FLERR,"Fix adapt bond style does not exist");
|
error->all(FLERR,"Fix adapt bond style {} does not exist", bstyle);
|
||||||
|
|
||||||
void *ptr = ad->bond->extract(ad->bparam,ad->bdim);
|
void *ptr = ad->bond->extract(ad->bparam,ad->bdim);
|
||||||
|
|
||||||
if (ptr == nullptr)
|
if (ptr == nullptr)
|
||||||
error->all(FLERR,"Fix adapt bond style param not supported");
|
error->all(FLERR,"Fix adapt bond style parameter {} not supported", ad->bparam);
|
||||||
|
|
||||||
// for bond styles, use a vector
|
// for bond styles, use a vector
|
||||||
|
|
||||||
@ -428,12 +420,12 @@ void FixAdapt::init()
|
|||||||
|
|
||||||
if (ad->angle == nullptr) ad->angle = force->angle_match(astyle);
|
if (ad->angle == nullptr) ad->angle = force->angle_match(astyle);
|
||||||
if (ad->angle == nullptr )
|
if (ad->angle == nullptr )
|
||||||
error->all(FLERR,"Fix adapt angle style does not exist");
|
error->all(FLERR,"Fix adapt angle style {} does not exist", astyle);
|
||||||
|
|
||||||
void *ptr = ad->angle->extract(ad->aparam,ad->adim);
|
void *ptr = ad->angle->extract(ad->aparam,ad->adim);
|
||||||
|
|
||||||
if (ptr == nullptr)
|
if (ptr == nullptr)
|
||||||
error->all(FLERR,"Fix adapt angle style param not supported");
|
error->all(FLERR,"Fix adapt angle style parameter {} not supported", ad->aparam);
|
||||||
|
|
||||||
// for angle styles, use a vector
|
// for angle styles, use a vector
|
||||||
|
|
||||||
@ -446,7 +438,7 @@ void FixAdapt::init()
|
|||||||
|
|
||||||
} else if (ad->which == KSPACE) {
|
} else if (ad->which == KSPACE) {
|
||||||
if (force->kspace == nullptr)
|
if (force->kspace == nullptr)
|
||||||
error->all(FLERR,"Fix adapt kspace style does not exist");
|
error->all(FLERR,"Fix adapt expected a kspace style but none was defined");
|
||||||
kspace_scale = (double *) force->kspace->extract("scale");
|
kspace_scale = (double *) force->kspace->extract("scale");
|
||||||
|
|
||||||
} else if (ad->which == ATOM) {
|
} else if (ad->which == ATOM) {
|
||||||
|
|||||||
Reference in New Issue
Block a user