From d51fa13b0d99e6d2ba0c7e05e80af72205ba12c7 Mon Sep 17 00:00:00 2001 From: carlocamilloni <carlo.camilloni@gmail.com> Date: Wed, 2 Oct 2019 10:33:02 +0200 Subject: [PATCH] gromacs 2019.4 --- ...acs-2019.2.config => gromacs-2019.4.config} | 0 .../src/gromacs/CMakeLists.txt | 0 .../src/gromacs/CMakeLists.txt.preplumed | 0 .../src/gromacs/mdlib/force.cpp | 0 .../src/gromacs/mdlib/force.cpp.preplumed | 0 .../src/gromacs/mdrun/legacymdrunoptions.cpp | 0 .../mdrun/legacymdrunoptions.cpp.preplumed | 0 .../src/gromacs/mdrun/legacymdrunoptions.h | 0 .../mdrun/legacymdrunoptions.h.preplumed | 0 .../src/gromacs/mdrun/md.cpp | 18 +++++++++++++++--- .../src/gromacs/mdrun/md.cpp.preplumed | 18 +++++++++++++++--- .../src/gromacs/mdrun/minimize.cpp | 11 +++++++++-- .../src/gromacs/mdrun/minimize.cpp.preplumed | 11 +++++++++-- .../src/gromacs/mdrun/replicaexchange.cpp | 0 .../mdrun/replicaexchange.cpp.preplumed | 0 .../src/gromacs/mdrun/replicaexchange.h | 0 .../gromacs/mdrun/replicaexchange.h.preplumed | 0 .../src/gromacs/mdrun/runner.cpp | 0 .../src/gromacs/mdrun/runner.cpp.preplumed | 0 19 files changed, 48 insertions(+), 10 deletions(-) rename patches/{gromacs-2019.2.config => gromacs-2019.4.config} (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/CMakeLists.txt (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/CMakeLists.txt.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdlib/force.cpp (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdlib/force.cpp.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/legacymdrunoptions.cpp (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/legacymdrunoptions.h (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/legacymdrunoptions.h.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/md.cpp (98%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/md.cpp.preplumed (98%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/minimize.cpp (99%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/minimize.cpp.preplumed (99%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/replicaexchange.cpp (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/replicaexchange.cpp.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/replicaexchange.h (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/replicaexchange.h.preplumed (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/runner.cpp (100%) rename patches/{gromacs-2019.2.diff => gromacs-2019.4.diff}/src/gromacs/mdrun/runner.cpp.preplumed (100%) diff --git a/patches/gromacs-2019.2.config b/patches/gromacs-2019.4.config similarity index 100% rename from patches/gromacs-2019.2.config rename to patches/gromacs-2019.4.config diff --git a/patches/gromacs-2019.2.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-2019.4.diff/src/gromacs/CMakeLists.txt similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/CMakeLists.txt rename to patches/gromacs-2019.4.diff/src/gromacs/CMakeLists.txt diff --git a/patches/gromacs-2019.2.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/CMakeLists.txt.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/CMakeLists.txt.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/CMakeLists.txt.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdlib/force.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdlib/force.cpp similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdlib/force.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdlib/force.cpp diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdlib/force.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdlib/force.cpp.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdlib/force.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdlib/force.cpp.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.cpp similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.cpp diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.h b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.h similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.h rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.h diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp similarity index 98% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp index 887526a8d..0c649e918 100644 --- a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp +++ b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014,2015,2016,2017,2018, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015,2016,2017,2018,2019, 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. @@ -792,6 +792,11 @@ void gmx::Integrator::do_md() /* Determine whether or not to do Neighbour Searching */ bNS = (bFirstStep || bNStList || bExchanged || bNeedRepartition); + /* Note that the stopHandler will cause termination at nstglobalcomm + * steps. Since this concides with nstcalcenergy, nsttcouple and/or + * nstpcouple steps, we have computed the half-step kinetic energy + * of the previous step and can always output energies at the last step. + */ bLastStep = bLastStep || stopHandler->stoppingAfterCurrentStep(bNS); /* do_log triggers energy and virial calculation. Because this leads @@ -1442,9 +1447,16 @@ void gmx::Integrator::do_md() { // Organize to do inter-simulation signalling on steps if // and when algorithms require it. - bool doInterSimSignal = (simulationsShareState && do_per_step(step, nstSignalComm)); + const bool doInterSimSignal = (simulationsShareState && do_per_step(step, nstSignalComm)); + + // With leap-frog we also need to compute the half-step + // kinetic energy at the step before we need to write + // the full-step kinetic energy + const bool needEkinAtNextStep = + (!EI_VV(ir->eI) && (do_per_step(step + 1, nstglobalcomm) || + step_rel + 1 == ir->nsteps)); - if (bGStat || (!EI_VV(ir->eI) && do_per_step(step+1, nstglobalcomm)) || doInterSimSignal) + if (bGStat || needEkinAtNextStep || doInterSimSignal) { // Since we're already communicating at this step, we // can propagate intra-simulation signals. Note that diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp.preplumed similarity index 98% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp.preplumed index a49a15df5..f0a634fc6 100644 --- a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/md.cpp.preplumed +++ b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/md.cpp.preplumed @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014,2015,2016,2017,2018, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015,2016,2017,2018,2019, 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,6 +729,11 @@ void gmx::Integrator::do_md() /* Determine whether or not to do Neighbour Searching */ bNS = (bFirstStep || bNStList || bExchanged || bNeedRepartition); + /* Note that the stopHandler will cause termination at nstglobalcomm + * steps. Since this concides with nstcalcenergy, nsttcouple and/or + * nstpcouple steps, we have computed the half-step kinetic energy + * of the previous step and can always output energies at the last step. + */ bLastStep = bLastStep || stopHandler->stoppingAfterCurrentStep(bNS); /* do_log triggers energy and virial calculation. Because this leads @@ -1245,9 +1250,16 @@ void gmx::Integrator::do_md() { // Organize to do inter-simulation signalling on steps if // and when algorithms require it. - bool doInterSimSignal = (simulationsShareState && do_per_step(step, nstSignalComm)); + const bool doInterSimSignal = (simulationsShareState && do_per_step(step, nstSignalComm)); + + // With leap-frog we also need to compute the half-step + // kinetic energy at the step before we need to write + // the full-step kinetic energy + const bool needEkinAtNextStep = + (!EI_VV(ir->eI) && (do_per_step(step + 1, nstglobalcomm) || + step_rel + 1 == ir->nsteps)); - if (bGStat || (!EI_VV(ir->eI) && do_per_step(step+1, nstglobalcomm)) || doInterSimSignal) + if (bGStat || needEkinAtNextStep || doInterSimSignal) { // Since we're already communicating at this step, we // can propagate intra-simulation signals. Note that diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp similarity index 99% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp index 6fb913acd..f4d0d562f 100644 --- a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp +++ b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp @@ -2688,8 +2688,15 @@ Integrator::do_steep() } } - /* Determine new step */ - stepsize = ustep/s_min->fmax; + // If the force is very small after finishing minimization, + // we risk dividing by zero when calculating the step size. + // So we check first if the minimization has stopped before + // trying to obtain a new step size. + if (!bDone) + { + /* Determine new step */ + stepsize = ustep/s_min->fmax; + } /* Check if stepsize is too small, with 1 nm as a characteristic length */ #if GMX_DOUBLE diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp.preplumed similarity index 99% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp.preplumed index 77421a32a..427ec5444 100644 --- a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/minimize.cpp.preplumed +++ b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/minimize.cpp.preplumed @@ -2613,8 +2613,15 @@ Integrator::do_steep() } } - /* Determine new step */ - stepsize = ustep/s_min->fmax; + // If the force is very small after finishing minimization, + // we risk dividing by zero when calculating the step size. + // So we check first if the minimization has stopped before + // trying to obtain a new step size. + if (!bDone) + { + /* Determine new step */ + stepsize = ustep/s_min->fmax; + } /* Check if stepsize is too small, with 1 nm as a characteristic length */ #if GMX_DOUBLE diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.cpp similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.cpp diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.h b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.h similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.h rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.h diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.h.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.h.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/replicaexchange.h.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/replicaexchange.h.preplumed diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/runner.cpp b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/runner.cpp similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/runner.cpp rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/runner.cpp diff --git a/patches/gromacs-2019.2.diff/src/gromacs/mdrun/runner.cpp.preplumed b/patches/gromacs-2019.4.diff/src/gromacs/mdrun/runner.cpp.preplumed similarity index 100% rename from patches/gromacs-2019.2.diff/src/gromacs/mdrun/runner.cpp.preplumed rename to patches/gromacs-2019.4.diff/src/gromacs/mdrun/runner.cpp.preplumed -- GitLab