diff --git a/src/fix.h b/src/fix.h index 19cb95a10e..2cad07328d 100644 --- a/src/fix.h +++ b/src/fix.h @@ -91,6 +91,7 @@ class Fix : protected Pointers { virtual void init() {} virtual void init_list(int, class NeighList *) {} virtual void setup(int) {} + virtual void setup_pre_force(int) {} virtual void min_setup(int) {} virtual void initial_integrate(int) {} virtual void post_integrate() {} diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 9f63f0172b..caeef8bfb6 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -169,12 +169,13 @@ void FixAdapt::init() if (!input->variable->equalstyle(ivar[m])) error->all("Variable for fix adapt is not equal style"); } +} - // set params to values for initial force calculation - // needs to happen here in init() instead of setup() - // because modify->setup() is called after pre-Verlet forces are computed +/* ---------------------------------------------------------------------- */ - pre_force(0); +void FixAdapt::setup_pre_force(int vflag) +{ + pre_force(vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_adapt.h b/src/fix_adapt.h index 1411708e71..1cc8cf9ca9 100644 --- a/src/fix_adapt.h +++ b/src/fix_adapt.h @@ -30,6 +30,7 @@ class FixAdapt : public Fix { ~FixAdapt(); int setmask(); void init(); + void setup_pre_force(int); void pre_force(int); private: diff --git a/src/modify.cpp b/src/modify.cpp index 265547319d..427172bf5c 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -248,6 +248,16 @@ void Modify::setup(int vflag) for (int i = 0; i < nfix; i++) fix[i]->min_setup(vflag); } +/* ---------------------------------------------------------------------- + setup pre_force call, only for relevant fixes +------------------------------------------------------------------------- */ + +void Modify::setup_pre_force(int vflag) +{ + for (int i = 0; i < n_pre_force; i++) + fix[list_pre_force[i]]->setup_pre_force(vflag); +} + /* ---------------------------------------------------------------------- 1st half of integrate call, only for relevant fixes ------------------------------------------------------------------------- */ diff --git a/src/modify.h b/src/modify.h index 904d8d41a1..56988e2df0 100644 --- a/src/modify.h +++ b/src/modify.h @@ -42,6 +42,7 @@ class Modify : protected Pointers { ~Modify(); void init(); void setup(int); + void setup_pre_force(int); void initial_integrate(int); void post_integrate(); void pre_decide(); diff --git a/src/verlet.cpp b/src/verlet.cpp index 0f6d358d65..c05e3a66b6 100644 --- a/src/verlet.cpp +++ b/src/verlet.cpp @@ -102,6 +102,7 @@ void Verlet::setup() ev_set(update->ntimestep); force_clear(); + modify->setup_pre_force(vflag); if (force->pair) force->pair->compute(eflag,vflag); @@ -152,6 +153,7 @@ void Verlet::setup_minimal(int flag) ev_set(update->ntimestep); force_clear(); + modify->setup_pre_force(vflag); if (force->pair) force->pair->compute(eflag,vflag);