From: Berk Hess Date: Mon, 9 Nov 2020 20:37:31 +0000 (+0100) Subject: Fix dHdl and foreign energy clearing at checkpointing X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=dd801b38ce79bcd58a70474a9d9bc97ba9c65d16;p=alexxy%2Fgromacs.git 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 --- 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;