From 17120022dd6cbca0750553b1490b82bf1a8cfed1 Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Mon, 15 Dec 2014 10:12:20 +0100
Subject: [PATCH] Fix for amber14 and MPI groups

It should now work properly

(cherry picked from commit 6f96353a8a7975f7429426bce3777fb555deed65)
---
 .../AmberTools/src/sander/runmd.F90             | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/patches/amber14.diff/AmberTools/src/sander/runmd.F90 b/patches/amber14.diff/AmberTools/src/sander/runmd.F90
index 2a3721300..af3bc6f6f 100644
--- a/patches/amber14.diff/AmberTools/src/sander/runmd.F90
+++ b/patches/amber14.diff/AmberTools/src/sander/runmd.F90
@@ -327,7 +327,7 @@ subroutine runmd(xx,ix,ih,ipairs,x,winv,amass,f, &
 
 ! variables for plumed
    _REAL_ :: plumed_box(3,3),plumed_virial(3,3), plumed_kbt
-   integer :: plumed_version,plumed_stopflag
+   integer :: plumed_version,plumed_stopflag,plumed_ms
    _REAL_ :: plumed_energyUnits,plumed_timeUnits,plumed_lengthUnits
 
    !==========================================================================
@@ -761,10 +761,21 @@ subroutine runmd(xx,ix,ih,ipairs,x,winv,amass,f, &
      call plumed_f_gcmd("setMDTimeUnits"//char(0),plumed_timeUnits)
      call plumed_f_gcmd("setPlumedDat"//char(0),trim(adjustl(plumedfile))//char(0))
      call plumed_f_gcmd("setNatoms"//char(0),nr)
-     call plumed_f_gcmd("setMDEngine"//char(0),"amber");
-     call plumed_f_gcmd("setTimestep"//char(0),dt);
+     call plumed_f_gcmd("setMDEngine"//char(0),"amber")
+     call plumed_f_gcmd("setTimestep"//char(0),dt)
 #  ifdef MPI
      call plumed_f_gcmd("setMPIFComm"//char(0),commsander)
+     if(master)then
+       call mpi_comm_size(commmaster,plumed_ms,ierr)
+     endif
+     call mpi_bcast(plumed_ms,1,MPI_INTEGER,0,commsander,ierr)
+     if(plumed_ms>1)then
+       call plumed_f_gcmd("GREX setMPIFIntracomm"//char(0),commsander)
+       if(master) then
+         call plumed_f_gcmd("GREX setMPIFIntercomm"//char(0),commmaster)
+       endif
+       call plumed_f_gcmd("GREX init"//char(0),0)
+     endif
 #  endif
 
      call plumed_f_gcmd("init"//char(0),0);
-- 
GitLab