From d55f7a912252f6a57b06f9cdeb505eff4dc562aa Mon Sep 17 00:00:00 2001
From: Gareth Tribello <gt@eider.phy.qub.ac.uk>
Date: Thu, 7 Apr 2016 12:42:57 +0100
Subject: [PATCH] Fixed bugs in converting histograms to free energies

---
 src/core/ActionPilot.cpp              | 2 +-
 src/gridtools/ActionWithInputGrid.cpp | 6 ++----
 src/gridtools/ConvertToFES.cpp        | 6 ++++--
 src/gridtools/GridFunction.cpp        | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/core/ActionPilot.cpp b/src/core/ActionPilot.cpp
index 539e1d7ed..4d2fdf153 100644
--- a/src/core/ActionPilot.cpp
+++ b/src/core/ActionPilot.cpp
@@ -32,7 +32,7 @@ Action(ao),
 stride(1)
 {
   parse("STRIDE",stride);
-  log.printf("  with stride %d\n",stride);
+  if( !keywords.style("STRIDE","hidden") ) log.printf("  with stride %d\n",stride);
 }
 
 bool ActionPilot::onStep()const{
diff --git a/src/gridtools/ActionWithInputGrid.cpp b/src/gridtools/ActionWithInputGrid.cpp
index 802efa9b8..a972fc44a 100644
--- a/src/gridtools/ActionWithInputGrid.cpp
+++ b/src/gridtools/ActionWithInputGrid.cpp
@@ -80,10 +80,8 @@ mygrid(NULL)
 }
 
 void ActionWithInputGrid::setAnalysisStride( const bool& use_all, const unsigned& astride ){
-  single_run=use_all;
-  if( !single_run ){
-     setStride( astride ); mves->setAnalysisStride( false, getStride() );
-  }
+  single_run=use_all; mves->setAnalysisStride( use_all, astride );
+  if( !single_run ) setStride( astride ); 
 }
 
 void ActionWithInputGrid::update(){
diff --git a/src/gridtools/ConvertToFES.cpp b/src/gridtools/ConvertToFES.cpp
index d70170a86..05511a2a9 100644
--- a/src/gridtools/ConvertToFES.cpp
+++ b/src/gridtools/ConvertToFES.cpp
@@ -73,7 +73,9 @@ ActionWithInputGrid(ao)
   Keywords keys; GridFunction::registerKeywords( keys );
   vesselbase::VesselOptions dar( da, keys );
   outgrid = new GridFunction(dar); addVessel( outgrid ); 
-  if( mygrid->noDerivatives() ) outgrid->setNoDerivatives();
+  if( mygrid->noDerivatives() ) outgrid->setNoDerivatives(); 
+  std::vector<double> fspacing;
+  outgrid->setBounds( mygrid->getMin(), mygrid->getMax(), mygrid->getNbin(), fspacing); 
   resizeFunctions();
 
   simtemp=0.; parse("TEMP",simtemp);
@@ -96,7 +98,7 @@ unsigned ConvertToFES::getNumberOfQuantities() const {
 
 void ConvertToFES::performOperationsWithGrid( const bool& from_update ){
   std::vector<double> fspacing;
-  outgrid->setBounds( mygrid->getMin(), mygrid->getMax(), mygrid->getNbin(), fspacing);
+  outgrid->setBounds( mygrid->getMin(), mygrid->getMax(), mygrid->getNbin(), fspacing); 
   outgrid->clear(); outgrid->setNorm( mygrid->getNorm() ); runAllTasks(); 
 }
 
diff --git a/src/gridtools/GridFunction.cpp b/src/gridtools/GridFunction.cpp
index 9dc4c2fb2..e8458fed0 100644
--- a/src/gridtools/GridFunction.cpp
+++ b/src/gridtools/GridFunction.cpp
@@ -46,7 +46,7 @@ GridVessel(da)
 
 void GridFunction::calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_list ) const {
   plumed_dbg_assert( myvals.getNumberOfValues()==(nper+1) );
-  for(unsigned i=0;i<myvals.getNumberOfValues();++i) buffer[bufstart + nper*current + i] += myvals.get(i+1);
+  for(unsigned i=0;i<nper;++i) buffer[bufstart + nper*current + i] += myvals.get(i+1);
   return;
 }
 
-- 
GitLab