From 17967ef521ab9df97b59e6e71997f8cc69916e79 Mon Sep 17 00:00:00 2001 From: Berk Hess Date: Thu, 23 May 2019 10:27:03 +0200 Subject: [PATCH] Fix SHAKE dH/dlambda contributions The constraint contributions to dH/dlambda would be incorrect with more than one SHAKE block. Refs #2434 abd #2879 Change-Id: I0cb30a9f61893ce57d76bac34e7352fe307efe4e --- src/gromacs/mdlib/shakef.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gromacs/mdlib/shakef.cpp b/src/gromacs/mdlib/shakef.cpp index 7a50eeb411..e24fc7974d 100644 --- a/src/gromacs/mdlib/shakef.cpp +++ b/src/gromacs/mdlib/shakef.cpp @@ -393,7 +393,7 @@ static void check_cons(FILE *log, int nc, rvec x[], rvec prime[], rvec v[], gmx_bool bshakef(FILE *log, gmx_shakedata_t shaked, real invmass[], int nblocks, int sblock[], t_idef *idef, t_inputrec *ir, rvec x_s[], rvec prime[], - t_nrnb *nrnb, real *scaled_lagrange_multiplier, real lambda, real *dvdlambda, + t_nrnb *nrnb, real * const scaled_lagrange_multiplier, real lambda, real *dvdlambda, real invdt, rvec *v, gmx_bool bCalcVir, tensor vir_r_m_dr, gmx_bool bDumpOnError, int econq) { @@ -420,7 +420,9 @@ gmx_bool bshakef(FILE *log, gmx_shakedata_t shaked, blen /= 3; n0 = vec_shakef(log, shaked, invmass, blen, idef->iparams, iatoms, ir->shake_tol, x_s, prime, shaked->omega, - ir->efep != efepNO, lambda, scaled_lagrange_multiplier, invdt, v, bCalcVir, vir_r_m_dr, + ir->efep != efepNO, lambda, + scaled_lagrange_multiplier + sblock[i]/3, + invdt, v, bCalcVir, vir_r_m_dr, econq); #ifdef DEBUGSHAKE @@ -440,7 +442,6 @@ gmx_bool bshakef(FILE *log, gmx_shakedata_t shaked, tnit += n0*blen; trij += blen; iatoms += 3*blen; /* Increment pointer! */ - scaled_lagrange_multiplier += blen; i++; } /* only for position part? */ -- 2.11.4.GIT