protect against using multiple fix efield instances. improve error messages.
This commit is contained in:
@ -380,10 +380,19 @@ void FixQEqReaxFF::reallocate_matrix()
|
|||||||
void FixQEqReaxFF::init()
|
void FixQEqReaxFF::init()
|
||||||
{
|
{
|
||||||
if (!atom->q_flag)
|
if (!atom->q_flag)
|
||||||
error->all(FLERR,"Fix qeq/reaxff requires atom attribute q");
|
error->all(FLERR,"Fix {} requires atom attribute q", style);
|
||||||
|
|
||||||
if (group->count(igroup) == 0)
|
if (group->count(igroup) == 0)
|
||||||
error->all(FLERR,"Fix qeq/reaxff group has no atoms");
|
error->all(FLERR,"Fix {} group has no atoms", style);
|
||||||
|
|
||||||
|
// there may be only one instance of fix efield
|
||||||
|
|
||||||
|
int num_efield = 0;
|
||||||
|
for (int ifix = 0; ifix < modify->nfix; ++ifix) {
|
||||||
|
if (utils::strmatch(modify->fix[ifix]->style, "^efield")) ++num_efield;
|
||||||
|
}
|
||||||
|
if (num_efield > 1)
|
||||||
|
error->all(FLERR, "There may be only one fix efield instance used with fix {}", style);
|
||||||
|
|
||||||
efield = nullptr;
|
efield = nullptr;
|
||||||
int ifix = modify->find_fix_by_style("^efield");
|
int ifix = modify->find_fix_by_style("^efield");
|
||||||
@ -393,9 +402,9 @@ void FixQEqReaxFF::init()
|
|||||||
if (efield) {
|
if (efield) {
|
||||||
efield->init();
|
efield->init();
|
||||||
if (strcmp(update->unit_style,"real") != 0)
|
if (strcmp(update->unit_style,"real") != 0)
|
||||||
error->all(FLERR,"Must use unit_style real with fix qeq/reax and external fields");
|
error->all(FLERR,"Must use unit_style real with fix {} and external fields", style);
|
||||||
if (efield->varflag != FixEfield::CONSTANT)
|
if (efield->varflag != FixEfield::CONSTANT)
|
||||||
error->all(FLERR,"Cannot yet use fix qeq/reaxff with variable efield");
|
error->all(FLERR,"Cannot (yet) use fix {} with variable efield", style);
|
||||||
|
|
||||||
if (((fabs(efield->ex) > SMALL) && domain->xperiodic) ||
|
if (((fabs(efield->ex) > SMALL) && domain->xperiodic) ||
|
||||||
((fabs(efield->ey) > SMALL) && domain->yperiodic) ||
|
((fabs(efield->ey) > SMALL) && domain->yperiodic) ||
|
||||||
|
|||||||
Reference in New Issue
Block a user