From dd801b38ce79bcd58a70474a9d9bc97ba9c65d16 Mon Sep 17 00:00:00 2001 From: Berk Hess Date: Mon, 9 Nov 2020 21:37:31 +0100 Subject: [PATCH] Fix dHdl and foreign energy clearing at checkpointing The code copying dH/dl and foreign lambda energies to the checkpoint data structures copied the wrong way around leading to zero values being written to energy file for steps in between the last energy frame and the checkpoint. Fixes #3763 --- docs/release-notes/2020/2020.5.rst | 11 +++++++++++ src/gromacs/mdlib/mdebin_bar.cpp | 5 +++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/2020/2020.5.rst b/docs/release-notes/2020/2020.5.rst index 76caa756f7..5b4ac5b5af 100644 --- a/docs/release-notes/2020/2020.5.rst +++ b/docs/release-notes/2020/2020.5.rst @@ -16,6 +16,17 @@ in the :ref:`release-notes`. Fixes where mdrun could behave incorrectly ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Fix mdrun writing zero dH/dlambda and foreign lambda energies before checkpointing +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +With free-energy runs with separate-dhdl-file=no and nstdhdl not a multiple of +nstenergy, mdrun would write zeros for dH/dlambda and foreign energies to +the energy file for steps between the last energy frame and the checkpoint. +This would lead to errors in free-energy estimates which could go unnoticed +as values only deviate for a few steps. + +:issue:`3763` + Fixed bugs with COM pulling and domain decompostion with weight or >32 ranks """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/src/gromacs/mdlib/mdebin_bar.cpp b/src/gromacs/mdlib/mdebin_bar.cpp index a0db609099..4589a85683 100644 --- a/src/gromacs/mdlib/mdebin_bar.cpp +++ b/src/gromacs/mdlib/mdebin_bar.cpp @@ -3,7 +3,8 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -729,7 +730,7 @@ void mde_delta_h_coll_update_energyhistory(const t_mde_delta_h_coll* dhc, energy { std::vector& dh = deltaH->dh[i]; dh.resize(dhc->dh[i].ndh); - std::copy(dh.begin(), dh.end(), dhc->dh[i].dh); + std::copy(dhc->dh[i].dh, dhc->dh[i].dh + dhc->dh[i].ndh, dh.begin()); } deltaH->start_time = dhc->start_time; deltaH->start_lambda = dhc->start_lambda; -- 2.22.0