fix adapt: direct type label support
make utils::bound type aware? i.e., Atom:BOND argument instead of atom->nbondtypes
This commit is contained in:
@ -99,10 +99,32 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
||||
adapt[nadapt].pair = nullptr;
|
||||
adapt[nadapt].pstyle = utils::strdup(arg[iarg+1]);
|
||||
adapt[nadapt].pparam = utils::strdup(arg[iarg+2]);
|
||||
utils::bounds(FLERR,arg[iarg+3],1,atom->ntypes,
|
||||
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
||||
utils::bounds(FLERR,arg[iarg+4],1,atom->ntypes,
|
||||
adapt[nadapt].jlo,adapt[nadapt].jhi,error);
|
||||
char *typestr = nullptr;
|
||||
typestr = utils::expand_type(FLERR, arg[iarg+3], Atom::ATOM, lmp);
|
||||
if (typestr)
|
||||
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);
|
||||
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
|
||||
|
||||
if ( (adapt[nadapt].ilo == adapt[nadapt].ihi) &&
|
||||
(adapt[nadapt].jlo == adapt[nadapt].jhi) &&
|
||||
(adapt[nadapt].ilo > adapt[nadapt].jlo) ) {
|
||||
adapt[nadapt].jlo = adapt[nadapt].ihi;
|
||||
adapt[nadapt].ilo = adapt[nadapt].jhi;
|
||||
adapt[nadapt].ihi = adapt[nadapt].ilo;
|
||||
adapt[nadapt].jhi = adapt[nadapt].jlo;
|
||||
}
|
||||
|
||||
if (utils::strmatch(arg[iarg+5],"^v_")) {
|
||||
adapt[nadapt].var = utils::strdup(arg[iarg+5]+2);
|
||||
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+6, arg[iarg+5]);
|
||||
@ -114,8 +136,13 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
||||
adapt[nadapt].bond = nullptr;
|
||||
adapt[nadapt].bstyle = utils::strdup(arg[iarg+1]);
|
||||
adapt[nadapt].bparam = utils::strdup(arg[iarg+2]);
|
||||
utils::bounds(FLERR,arg[iarg+3],1,atom->nbondtypes,
|
||||
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
||||
char *typestr = nullptr;
|
||||
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_")) {
|
||||
adapt[nadapt].var = utils::strdup(arg[iarg+4]+2);
|
||||
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);
|
||||
@ -127,8 +154,13 @@ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) :
|
||||
adapt[nadapt].angle = nullptr;
|
||||
adapt[nadapt].astyle = utils::strdup(arg[iarg+1]);
|
||||
adapt[nadapt].aparam = utils::strdup(arg[iarg+2]);
|
||||
utils::bounds(FLERR,arg[iarg+3],1,atom->nangletypes,
|
||||
adapt[nadapt].ilo,adapt[nadapt].ihi,error);
|
||||
char *typestr = nullptr;
|
||||
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_")) {
|
||||
adapt[nadapt].var = utils::strdup(arg[iarg+4]+2);
|
||||
} else error->all(FLERR,"Argument #{} must be variable not {}", iarg+5, arg[iarg+4]);
|
||||
|
||||
Reference in New Issue
Block a user