diff --git a/src/compute_temp.cpp b/src/compute_temp.cpp index f58c2fadf0..d1d0d0b0d6 100644 --- a/src/compute_temp.cpp +++ b/src/compute_temp.cpp @@ -50,6 +50,14 @@ ComputeTemp::~ComputeTemp() /* ---------------------------------------------------------------------- */ +void ComputeTemp::init() +{ + fix_dof = 0; + for (int i = 0; i < modify->nfix; i++) + fix_dof += modify->fix[i]->dof(igroup); + dof_compute(); +} + void ComputeTemp::setup() { fix_dof = 0; diff --git a/src/compute_temp.h b/src/compute_temp.h index ccd35f119a..9a9ea9359c 100644 --- a/src/compute_temp.h +++ b/src/compute_temp.h @@ -28,7 +28,7 @@ class ComputeTemp : public Compute { public: ComputeTemp(class LAMMPS *, int, char **); virtual ~ComputeTemp(); - void init() {} + void init(); void setup(); double compute_scalar(); void compute_vector(); diff --git a/src/modify.cpp b/src/modify.cpp index 3e778ba46d..8bea090df0 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -228,15 +228,15 @@ void Modify::init() void Modify::setup(int vflag) { + // invoke computes before fixes + // this is b/c NH fixes need temperature compute DOF + + for (int i = 0; i < ncompute; i++) compute[i]->setup(); + if (update->whichflag == 1) for (int i = 0; i < nfix; i++) fix[i]->setup(vflag); else if (update->whichflag == 2) for (int i = 0; i < nfix; i++) fix[i]->min_setup(vflag); - - // call computes after fixes - // fix rigid dof() can't be called by temperature computes at init - - for (int i = 0; i < ncompute; i++) compute[i]->setup(); } /* ----------------------------------------------------------------------