From 349a6db53043ebcdeb512112a3d34b7dbe6afea3 Mon Sep 17 00:00:00 2001
From: Gareth Tribello <gareth.tribello@gmail.com>
Date: Fri, 23 Nov 2012 12:32:40 +0100
Subject: [PATCH] Moved request for system energy from plumed main to prepare
 routine of ColvarEnergy

---
 src/ColvarEnergy.cpp | 5 +++++
 src/PlumedMain.cpp   | 6 ------
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/ColvarEnergy.cpp b/src/ColvarEnergy.cpp
index 848603ebc..2b0b295e5 100644
--- a/src/ColvarEnergy.cpp
+++ b/src/ColvarEnergy.cpp
@@ -22,6 +22,7 @@
 #include "Colvar.h"
 #include "ActionRegister.h"
 #include "PlumedMain.h"
+#include "Atoms.h"
 
 #include <string>
 #include <cmath>
@@ -53,6 +54,7 @@ class ColvarEnergy : public Colvar {
 public:
   ColvarEnergy(const ActionOptions&);
 // active methods:
+  void prepare();
   virtual void calculate();
   static void registerKeywords( Keywords& keys );
 };
@@ -80,6 +82,9 @@ void ColvarEnergy::registerKeywords( Keywords& keys ){
   keys.remove("NUMERICAL_DERIVATIVES"); 
 }
 
+void ColvarEnergy::prepare(){
+  plumed.getAtoms().setCollectEnergy(true);
+}
 
 // calculator
 void ColvarEnergy::calculate(){
diff --git a/src/PlumedMain.cpp b/src/PlumedMain.cpp
index 63b9b3120..82f96058e 100644
--- a/src/PlumedMain.cpp
+++ b/src/PlumedMain.cpp
@@ -29,7 +29,6 @@
 #include "Atoms.h"
 #include <set>
 #include "PlumedConfig.h"
-#include "Colvar.h"
 #include <cstdlib>
 #include "ActionRegister.h"
 #include "GREX.h"
@@ -455,16 +454,11 @@ void PlumedMain::prepareDependencies(){
   };
 
 // also, if one of them is the total energy, tell to atoms that energy should be collected
-  bool collectEnergy=false;
   for(ActionSet::iterator p=actionSet.begin();p!=actionSet.end();++p){
     if((*p)->isActive()){
-      if(Colvar *c=dynamic_cast<Colvar*>(*p)) {
-        if(c->checkIsEnergy()) collectEnergy=true;
-      }
       if((*p)->checkNeedsGradients()) (*p)->setOption("GRADIENTS");
     }
   }
-  atoms.setCollectEnergy(collectEnergy);
 
   stopwatch.stop("1 Prepare dependencies");
 
-- 
GitLab