update fix adapt/fep from fix adapt. only supports 2-d parameters for pair styles
This commit is contained in:
@ -48,9 +48,9 @@ enum{DIAMETER, CHARGE};
|
|||||||
FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Fix(lmp, narg, arg)
|
Fix(lmp, narg, arg)
|
||||||
{
|
{
|
||||||
if (narg < 5) error->all(FLERR,"Illegal fix adapt/fep command");
|
if (narg < 5) utils::missing_cmd_args(FLERR,"fix adapt/fep", 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/fep command");
|
if (nevery < 0) error->all(FLERR,"Illegal fix adapt/fep every value {}", nevery);
|
||||||
|
|
||||||
dynamic_group_allow = 1;
|
dynamic_group_allow = 1;
|
||||||
create_attribute = 1;
|
create_attribute = 1;
|
||||||
@ -62,21 +62,21 @@ FixAdaptFEP::FixAdaptFEP(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/fep command");
|
if (iarg+6 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep 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/fep command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep kspace", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
} else if (strcmp(arg[iarg],"atom") == 0) {
|
} else if (strcmp(arg[iarg],"atom") == 0) {
|
||||||
if (iarg+4 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep atom", error);
|
||||||
nadapt++;
|
nadapt++;
|
||||||
iarg += 4;
|
iarg += 4;
|
||||||
} else break;
|
} else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nadapt == 0) error->all(FLERR,"Illegal fix adapt/fep command");
|
if (nadapt == 0) error->all(FLERR,"Nothing to adapt in fix adapt/fep command");
|
||||||
adapt = new Adapt[nadapt];
|
adapt = new Adapt[nadapt];
|
||||||
|
|
||||||
// parse keywords
|
// parse keywords
|
||||||
@ -136,11 +136,11 @@ FixAdaptFEP::FixAdaptFEP(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/fep command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep 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/fep command");
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep 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],"after") == 0) {
|
} else if (strcmp(arg[iarg],"after") == 0) {
|
||||||
@ -208,7 +208,7 @@ void FixAdaptFEP::post_constructor()
|
|||||||
id_fix_diam = nullptr;
|
id_fix_diam = nullptr;
|
||||||
id_fix_chg = nullptr;
|
id_fix_chg = nullptr;
|
||||||
|
|
||||||
if (diam_flag) {
|
if (diam_flag && atom->radius_flag) {
|
||||||
id_fix_diam = utils::strdup(id + std::string("_FIX_STORE_DIAM"));
|
id_fix_diam = utils::strdup(id + std::string("_FIX_STORE_DIAM"));
|
||||||
fix_diam = dynamic_cast<FixStoreAtom *>(
|
fix_diam = dynamic_cast<FixStoreAtom *>(
|
||||||
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam,group->names[igroup])));
|
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam,group->names[igroup])));
|
||||||
@ -226,7 +226,7 @@ void FixAdaptFEP::post_constructor()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chgflag) {
|
if (chgflag && atom->q_flag) {
|
||||||
id_fix_chg = utils::strdup(id + std::string("_FIX_STORE_CHG"));
|
id_fix_chg = utils::strdup(id + std::string("_FIX_STORE_CHG"));
|
||||||
fix_chg = dynamic_cast<FixStoreAtom *>(
|
fix_chg = dynamic_cast<FixStoreAtom *>(
|
||||||
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1",id_fix_chg,group->names[igroup])));
|
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1",id_fix_chg,group->names[igroup])));
|
||||||
@ -267,9 +267,9 @@ void FixAdaptFEP::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/fep does not exist");
|
error->all(FLERR,"Variable name {} for fix adapt/fep does not exist", ad->var);
|
||||||
if (!input->variable->equalstyle(ad->ivar))
|
if (!input->variable->equalstyle(ad->ivar))
|
||||||
error->all(FLERR,"Variable for fix adapt/fep is invalid style");
|
error->all(FLERR,"Variable {} for fix adapt/fep is invalid style", ad->var);
|
||||||
|
|
||||||
if (ad->which == PAIR) {
|
if (ad->which == PAIR) {
|
||||||
anypair = 1;
|
anypair = 1;
|
||||||
@ -285,8 +285,9 @@ void FixAdaptFEP::init()
|
|||||||
if (ptr == nullptr)
|
if (ptr == nullptr)
|
||||||
error->all(FLERR,"Fix adapt/fep pair style param not supported");
|
error->all(FLERR,"Fix adapt/fep pair style param not supported");
|
||||||
|
|
||||||
ad->pdim = 2;
|
if (ad->pdim != 2)
|
||||||
if (ad->pdim == 0) ad->scalar = (double *) ptr;
|
error->all(FLERR,"Pair style parameter {} is not compatible with fix adapt/fep", ad->pparam);
|
||||||
|
|
||||||
if (ad->pdim == 2) ad->array = (double **) ptr;
|
if (ad->pdim == 2) ad->array = (double **) ptr;
|
||||||
|
|
||||||
// if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style
|
// if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style
|
||||||
|
|||||||
Reference in New Issue
Block a user