From 7699fb37080d55ac041611983ef3889905afc4e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Mar 2021 15:55:31 -0400 Subject: [PATCH] generalize some checks in fix rigid and rigid/small --- src/RIGID/fix_rigid.cpp | 15 ++++++--------- src/RIGID/fix_rigid_nh_small.cpp | 24 +++++++++++++----------- src/RIGID/fix_rigid_small.cpp | 14 ++++++-------- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index a8a0e1409f..985554f738 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -720,17 +720,14 @@ void FixRigid::init() } } - // error if npt,nph fix comes before rigid fix - - for (i = 0; i < modify->nfix; i++) { - if (strcmp(modify->fix[i]->style,"npt") == 0) break; - if (strcmp(modify->fix[i]->style,"nph") == 0) break; - } + // error if a fix changing the box comes before rigid fix + for (i = 0; i < modify->nfix; i++) + if (modify->fix[i]->box_change) break; if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) - if (strcmp(modify->fix[j]->style,"rigid") == 0) - error->all(FLERR,"Rigid fix must come before NPT/NPH fix"); + if (utils::strmatch(modify->fix[j]->style,"^rigid")) + error->all(FLERR,"Rigid fixes must come before any box changing fix"); } // add gravity forces based on gravity vector from fix @@ -738,7 +735,7 @@ void FixRigid::init() if (id_gravity) { int ifix = modify->find_fix(id_gravity); if (ifix < 0) error->all(FLERR,"Fix rigid cannot find fix gravity ID"); - if (strcmp(modify->fix[ifix]->style,"gravity") != 0) + if (!utils::strmatch(modify->fix[ifix]->style,"^gravity")) error->all(FLERR,"Fix rigid gravity fix is invalid"); int tmp; gvec = (double *) modify->fix[ifix]->extract("gvec",tmp); diff --git a/src/RIGID/fix_rigid_nh_small.cpp b/src/RIGID/fix_rigid_nh_small.cpp index 3956fcf35d..454f240bb4 100644 --- a/src/RIGID/fix_rigid_nh_small.cpp +++ b/src/RIGID/fix_rigid_nh_small.cpp @@ -19,22 +19,24 @@ #include "fix_rigid_nh_small.h" -#include -#include -#include "math_extra.h" #include "atom.h" +#include "comm.h" #include "compute.h" #include "domain.h" -#include "update.h" -#include "modify.h" -#include "fix_deform.h" -#include "group.h" -#include "comm.h" -#include "force.h" -#include "kspace.h" -#include "memory.h" #include "error.h" +#include "fix_deform.h" +#include "force.h" +#include "group.h" +#include "kspace.h" +#include "math_extra.h" +#include "memory.h" +#include "modify.h" +#include "molecule.h" #include "rigid_const.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index b7e0a1b2ac..d9a0b82ae8 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -571,16 +571,14 @@ void FixRigidSmall::init() } } - // error if npt,nph fix comes before rigid fix + // error if a fix changing the box comes before rigid fix - for (i = 0; i < modify->nfix; i++) { - if (strcmp(modify->fix[i]->style,"npt") == 0) break; - if (strcmp(modify->fix[i]->style,"nph") == 0) break; - } + for (i = 0; i < modify->nfix; i++) + if (modify->fix[i]->box_change) break; if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) - if (strcmp(modify->fix[j]->style,"rigid") == 0) - error->all(FLERR,"Rigid fix must come before NPT/NPH fix"); + if (utils::strmatch(modify->fix[j]->style,"^rigid")) + error->all(FLERR,"Rigid fixes must come before any box changing fix"); } // add gravity forces based on gravity vector from fix @@ -588,7 +586,7 @@ void FixRigidSmall::init() if (id_gravity) { int ifix = modify->find_fix(id_gravity); if (ifix < 0) error->all(FLERR,"Fix rigid/small cannot find fix gravity ID"); - if (strcmp(modify->fix[ifix]->style,"gravity") != 0) + if (!utils::strmatch(modify->fix[ifix]->style,"^gravity")) error->all(FLERR,"Fix rigid/small gravity fix is invalid"); int tmp; gvec = (double *) modify->fix[ifix]->extract("gvec",tmp);