From 7d2d64e65775695a5cc043c5650dd60a61e2d861 Mon Sep 17 00:00:00 2001
From: carlocamilloni <carlo.camilloni@gmail.com>
Date: Wed, 6 Dec 2017 22:41:19 +0100
Subject: [PATCH] gmx2016: this should make ENERGY always work

---
 patches/gromacs-2016.4.diff/src/programs/mdrun/md.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/patches/gromacs-2016.4.diff/src/programs/mdrun/md.cpp b/patches/gromacs-2016.4.diff/src/programs/mdrun/md.cpp
index 47ad1849e..b6e0fd4d4 100644
--- a/patches/gromacs-2016.4.diff/src/programs/mdrun/md.cpp
+++ b/patches/gromacs-2016.4.diff/src/programs/mdrun/md.cpp
@@ -731,8 +731,7 @@ double gmx::do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
       plumed_cmd(plumedmain,"setNatoms",&top_global->natoms);
       plumed_cmd(plumedmain,"setMDEngine","gromacs");
       plumed_cmd(plumedmain,"setLog",fplog);
-      real real_delta_t;
-      real_delta_t=ir->delta_t;
+      real real_delta_t=ir->delta_t;
       plumed_cmd(plumedmain,"setTimestep",&real_delta_t);
       plumed_cmd(plumedmain,"init",NULL);
 
@@ -1268,6 +1267,7 @@ double gmx::do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
               if(pversion>3) plumed_cmd(plumedmain,"doCheckPoint",&checkp);
               plumed_cmd(plumedmain,"setForces",&f[0][0]);
               plumed_cmd(plumedmain,"isEnergyNeeded",&plumedNeedsEnergy);
+              if(plumedNeedsEnergy) force_flags |= GMX_FORCE_ENERGY | GMX_FORCE_VIRIAL;
               clear_mat(plumed_vir);
               plumed_cmd(plumedmain,"setVirial",&plumed_vir[0][0]);
             }
@@ -1289,11 +1289,9 @@ double gmx::do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                 msmul(plumed_vir,0.5,plumed_vir);
                 m_add(force_vir,plumed_vir,force_vir);
               }
-              if ((repl_ex_nst > 0) && (step > 0) && !bLastStep &&
-                 do_per_step(step,repl_ex_nst)) plumed_cmd(plumedmain,"GREX savePositions",NULL);
+              if(bDoReplEx) plumed_cmd(plumedmain,"GREX savePositions",NULL);
               if(plumedWantsToStop) ir->nsteps=step_rel+1;
-              if(bHREX)
-                 plumed_cmd(plumedmain,"GREX cacheLocalUNow",&enerd->term[F_EPOT]);
+              if(bHREX) plumed_cmd(plumedmain,"GREX cacheLocalUNow",&enerd->term[F_EPOT]);
             }
             /* END PLUMED */
         }
-- 
GitLab