From 53db68362ec18d4e91d53a21c722d352161b9c91 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Wed, 7 May 2014 14:30:27 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11935 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/ASPHERE/compute_temp_asphere.cpp | 7 +++---- src/USER-EFF/compute_temp_eff.cpp | 7 ++----- src/USER-MISC/compute_temp_rotate.cpp | 7 ++----- src/atom.cpp | 2 +- src/compute.cpp | 13 +++++++++++++ src/compute.h | 2 ++ src/compute_temp.cpp | 5 ++--- src/compute_temp.h | 1 - src/compute_temp_com.cpp | 7 ++----- src/compute_temp_deform.cpp | 5 ++--- src/compute_temp_partial.cpp | 7 ++----- src/compute_temp_profile.cpp | 9 +++------ src/compute_temp_ramp.cpp | 5 ++--- src/compute_temp_region.cpp | 1 - src/compute_temp_sphere.cpp | 7 +++---- src/modify.cpp | 2 +- 16 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/ASPHERE/compute_temp_asphere.cpp b/src/ASPHERE/compute_temp_asphere.cpp index 05b2819a97..12bc17852f 100755 --- a/src/ASPHERE/compute_temp_asphere.cpp +++ b/src/ASPHERE/compute_temp_asphere.cpp @@ -25,7 +25,6 @@ #include "force.h" #include "domain.h" #include "modify.h" -#include "fix.h" #include "group.h" #include "memory.h" #include "error.h" @@ -128,9 +127,7 @@ void ComputeTempAsphere::init() void ComputeTempAsphere::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -138,6 +135,8 @@ void ComputeTempAsphere::setup() void ComputeTempAsphere::dof_compute() { + if (fix_dof) adjust_dof_fix(); + // 6 dof for 3d, 3 dof for 2d // which dof are included also depends on mode // assume full rotation of extended particles diff --git a/src/USER-EFF/compute_temp_eff.cpp b/src/USER-EFF/compute_temp_eff.cpp index 035f6aa90d..9b06f05a24 100644 --- a/src/USER-EFF/compute_temp_eff.cpp +++ b/src/USER-EFF/compute_temp_eff.cpp @@ -23,8 +23,6 @@ #include "update.h" #include "force.h" #include "domain.h" -#include "modify.h" -#include "fix.h" #include "group.h" #include "error.h" @@ -58,9 +56,7 @@ ComputeTempEff::~ComputeTempEff() void ComputeTempEff::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -68,6 +64,7 @@ void ComputeTempEff::setup() void ComputeTempEff::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); dof = domain->dimension * natoms; dof -= extra_dof + fix_dof; diff --git a/src/USER-MISC/compute_temp_rotate.cpp b/src/USER-MISC/compute_temp_rotate.cpp index fa0567ac84..b34255be53 100644 --- a/src/USER-MISC/compute_temp_rotate.cpp +++ b/src/USER-MISC/compute_temp_rotate.cpp @@ -23,8 +23,6 @@ #include "update.h" #include "force.h" #include "group.h" -#include "modify.h" -#include "fix.h" #include "domain.h" #include "lattice.h" #include "error.h" @@ -70,9 +68,7 @@ void ComputeTempRotate::init() void ComputeTempRotate::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -80,6 +76,7 @@ void ComputeTempRotate::setup() void ComputeTempRotate::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); int nper = domain->dimension; dof = nper * natoms; diff --git a/src/atom.cpp b/src/atom.cpp index 723fedc736..dc6d2e2fa1 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -330,7 +330,7 @@ void Atom::create_avec(const char *style, int narg, char **arg, char *suffix) // create instance of AtomVec // use grow() to initialize atom-based arrays to length 1 // so that x[0][0] can always be referenced even if proc has no atoms - // but reset nmax = 0 + // but reset nmax = 0 in both Atom and AtomVec // so 2d arrays like bond_type will later be allocated correctly // since currently, 2nd dimension bond_per_atom = 0 diff --git a/src/compute.cpp b/src/compute.cpp index 9367983656..fde11f6c7f 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -21,6 +21,8 @@ #include "domain.h" #include "comm.h" #include "group.h" +#include "modify.h" +#include "fix.h" #include "atom_masks.h" #include "memory.h" #include "error.h" @@ -131,6 +133,17 @@ void Compute::modify_params(int narg, char **arg) } } +/* ---------------------------------------------------------------------- + calculate adjustment in DOF due to fixes +------------------------------------------------------------------------- */ + +void Compute::adjust_dof_fix() +{ + fix_dof = 0; + for (int i = 0; i < modify->nfix; i++) + fix_dof += modify->fix[i]->dof(igroup); +} + /* ---------------------------------------------------------------------- reset extra_dof to its default value ------------------------------------------------------------------------- */ diff --git a/src/compute.h b/src/compute.h index ee0b9e36a6..4a678eef65 100644 --- a/src/compute.h +++ b/src/compute.h @@ -86,6 +86,7 @@ class Compute : protected Pointers { Compute(class LAMMPS *, int, char **); virtual ~Compute(); void modify_params(int, char **); + void adjust_dof_fix(); void reset_extra_dof(); virtual void init() = 0; @@ -122,6 +123,7 @@ class Compute : protected Pointers { protected: int extra_dof; // extra DOF for temperature computes + int fix_dof; // DOF due to fixes int dynamic; // recount atoms for temperature computes int thermoflag; // 1 if include fix PE for PE computes diff --git a/src/compute_temp.cpp b/src/compute_temp.cpp index f58c2fadf0..e2d93e357b 100644 --- a/src/compute_temp.cpp +++ b/src/compute_temp.cpp @@ -52,9 +52,7 @@ ComputeTemp::~ComputeTemp() void ComputeTemp::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -62,6 +60,7 @@ void ComputeTemp::setup() void ComputeTemp::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); dof = domain->dimension * natoms; dof -= extra_dof + fix_dof; diff --git a/src/compute_temp.h b/src/compute_temp.h index ccd35f119a..055c4929fc 100644 --- a/src/compute_temp.h +++ b/src/compute_temp.h @@ -34,7 +34,6 @@ class ComputeTemp : public Compute { void compute_vector(); protected: - int fix_dof; double tfactor; virtual void dof_compute(); diff --git a/src/compute_temp_com.cpp b/src/compute_temp_com.cpp index 2d2537f11e..0c94d2a416 100644 --- a/src/compute_temp_com.cpp +++ b/src/compute_temp_com.cpp @@ -19,8 +19,6 @@ #include "update.h" #include "force.h" #include "group.h" -#include "modify.h" -#include "fix.h" #include "domain.h" #include "lattice.h" #include "error.h" @@ -62,9 +60,7 @@ void ComputeTempCOM::init() void ComputeTempCOM::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -72,6 +68,7 @@ void ComputeTempCOM::setup() void ComputeTempCOM::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); int nper = domain->dimension; dof = nper * natoms; diff --git a/src/compute_temp_deform.cpp b/src/compute_temp_deform.cpp index 536bdfbb9a..7c72e08f3b 100644 --- a/src/compute_temp_deform.cpp +++ b/src/compute_temp_deform.cpp @@ -86,9 +86,7 @@ void ComputeTempDeform::init() void ComputeTempDeform::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -96,6 +94,7 @@ void ComputeTempDeform::setup() void ComputeTempDeform::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); dof = domain->dimension * natoms; dof -= extra_dof + fix_dof; diff --git a/src/compute_temp_partial.cpp b/src/compute_temp_partial.cpp index 99181a56b1..baa316e847 100644 --- a/src/compute_temp_partial.cpp +++ b/src/compute_temp_partial.cpp @@ -18,8 +18,6 @@ #include "update.h" #include "force.h" #include "domain.h" -#include "modify.h" -#include "fix.h" #include "group.h" #include "memory.h" #include "error.h" @@ -63,9 +61,7 @@ ComputeTempPartial::~ComputeTempPartial() void ComputeTempPartial::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -76,6 +72,7 @@ void ComputeTempPartial::setup() void ComputeTempPartial::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); int nper = xflag+yflag+zflag; dof = nper * natoms; diff --git a/src/compute_temp_profile.cpp b/src/compute_temp_profile.cpp index fd759ed773..268162a463 100644 --- a/src/compute_temp_profile.cpp +++ b/src/compute_temp_profile.cpp @@ -161,9 +161,7 @@ ComputeTempProfile::~ComputeTempProfile() void ComputeTempProfile::init() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); // ptrs to domain data @@ -189,9 +187,7 @@ void ComputeTempProfile::init() void ComputeTempProfile::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -199,6 +195,7 @@ void ComputeTempProfile::setup() void ComputeTempProfile::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); int nper = domain->dimension; dof = nper * natoms; diff --git a/src/compute_temp_ramp.cpp b/src/compute_temp_ramp.cpp index f2636b1adc..288bc30abe 100644 --- a/src/compute_temp_ramp.cpp +++ b/src/compute_temp_ramp.cpp @@ -117,9 +117,7 @@ ComputeTempRamp::~ComputeTempRamp() void ComputeTempRamp::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -127,6 +125,7 @@ void ComputeTempRamp::setup() void ComputeTempRamp::dof_compute() { + if (fix_dof) adjust_dof_fix(); double natoms = group->count(igroup); int nper = domain->dimension; dof = nper * natoms; diff --git a/src/compute_temp_region.cpp b/src/compute_temp_region.cpp index 833ed0d5c3..bcd5864783 100644 --- a/src/compute_temp_region.cpp +++ b/src/compute_temp_region.cpp @@ -17,7 +17,6 @@ #include "atom.h" #include "update.h" #include "force.h" -#include "modify.h" #include "domain.h" #include "region.h" #include "memory.h" diff --git a/src/compute_temp_sphere.cpp b/src/compute_temp_sphere.cpp index 1c967f2a21..8ba73f3c54 100644 --- a/src/compute_temp_sphere.cpp +++ b/src/compute_temp_sphere.cpp @@ -20,7 +20,6 @@ #include "force.h" #include "domain.h" #include "modify.h" -#include "fix.h" #include "group.h" #include "error.h" @@ -109,9 +108,7 @@ void ComputeTempSphere::init() void ComputeTempSphere::setup() { - fix_dof = 0; - for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof = -1; dof_compute(); } @@ -121,6 +118,8 @@ void ComputeTempSphere::dof_compute() { int count,count_all; + if (fix_dof) adjust_dof_fix(); + // 6 or 3 dof for extended/point particles for 3d // 3 or 2 dof for extended/point particles for 2d // which dof are included also depends on mode diff --git a/src/modify.cpp b/src/modify.cpp index c454ff928c..8a193253f2 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -271,7 +271,7 @@ void Modify::init() void Modify::setup(int vflag) { // compute setup needs to come before fix setup - // b/c NH fixes need use DOF of temperature computes + // b/c NH fixes need DOF of temperature computes for (int i = 0; i < ncompute; i++) compute[i]->setup();