diff --git a/patches/gromacs-2018.3.config b/patches/gromacs-2018.4.config similarity index 100% rename from patches/gromacs-2018.3.config rename to patches/gromacs-2018.4.config diff --git a/patches/gromacs-2018.3.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-2018.4.diff/src/gromacs/CMakeLists.txt similarity index 100% rename from patches/gromacs-2018.3.diff/src/gromacs/CMakeLists.txt rename to patches/gromacs-2018.4.diff/src/gromacs/CMakeLists.txt diff --git a/patches/gromacs-2018.3.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-2018.4.diff/src/gromacs/CMakeLists.txt.preplumed similarity index 100% rename from patches/gromacs-2018.3.diff/src/gromacs/CMakeLists.txt.preplumed rename to patches/gromacs-2018.4.diff/src/gromacs/CMakeLists.txt.preplumed diff --git a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.cpp similarity index 96% rename from patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp rename to patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.cpp index bc1e961f1c77387a4dd7f103c1fc51acbbca9119..07e1337af3e096184aa387b5d6caf66748fca510 100644 --- a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp +++ b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.cpp @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015,2016,2017,2018, 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. @@ -738,7 +738,6 @@ void sum_epot(gmx_grppairener_t *grpp, real *epot) void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda *fepvals) { int index; - double dlam; enerd->dvdl_lin[efptVDW] += enerd->term[F_DVDL_VDW]; /* include dispersion correction */ enerd->term[F_DVDL] = 0.0; @@ -786,13 +785,6 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda } } - /* Notes on the foreign lambda free energy difference evaluation: - * Adding the potential and ekin terms that depend linearly on lambda - * as delta lam * dvdl to the energy differences is exact. - * For the constraints this is not exact, but we have no other option - * without literally changing the lengths and reevaluating the energies at each step. - * (try to remedy this post 4.6 - MRS) - */ if (fepvals->separate_dvdl[efptBONDED]) { enerd->term[F_DVDL_BONDED] += enerd->term[F_DVDL_CONSTR]; @@ -801,7 +793,6 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda { enerd->term[F_DVDL] += enerd->term[F_DVDL_CONSTR]; } - enerd->term[F_DVDL_CONSTR] = 0; for (int i = 0; i < fepvals->n_lambda; i++) { @@ -814,20 +805,42 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda current lambda, because the contributions to the current lambda are automatically zeroed */ + double &enerpart_lambda = enerd->enerpart_lambda[i + 1]; + for (size_t j = 0; j < lambda.size(); j++) { /* Note that this loop is over all dhdl components, not just the separated ones */ - dlam = (fepvals->all_lambda[j][i] - lambda[j]); - enerd->enerpart_lambda[i+1] += dlam*enerd->dvdl_lin[j]; + const double dlam = fepvals->all_lambda[j][i] - lambda[j]; + + enerpart_lambda += dlam*enerd->dvdl_lin[j]; + + /* Constraints can not be evaluated at foreign lambdas, so we add + * a linear extrapolation. This is an approximation, but usually + * quite accurate since constraints change little between lambdas. + */ + if ((j == efptBONDED && fepvals->separate_dvdl[efptBONDED]) || + (j == efptFEP && !fepvals->separate_dvdl[efptBONDED])) + { + enerpart_lambda += dlam*enerd->term[F_DVDL_CONSTR]; + } + + if (j == efptMASS) + { + enerpart_lambda += dlam*enerd->term[F_DKDL]; + } + if (debug) { fprintf(debug, "enerdiff lam %g: (%15s), non-linear %f linear %f*%f\n", fepvals->all_lambda[j][i], efpt_names[j], - (enerd->enerpart_lambda[i+1] - enerd->enerpart_lambda[0]), + enerpart_lambda - enerd->enerpart_lambda[0], dlam, enerd->dvdl_lin[j]); } } } + + /* The constrain contribution is now included in other terms, so clear it */ + enerd->term[F_DVDL_CONSTR] = 0; } diff --git a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp.preplumed b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.cpp.preplumed similarity index 96% rename from patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.cpp.preplumed index f01ea4d333a52e51e9f192758e13b44295114843..c939c4e8a7f13553ec52fde621a8812dc35727b7 100644 --- a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/force.cpp.preplumed +++ b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/force.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) 2013,2014,2015,2016,2017, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015,2016,2017,2018, 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. @@ -724,7 +724,6 @@ void sum_epot(gmx_grppairener_t *grpp, real *epot) void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda *fepvals) { int index; - double dlam; enerd->dvdl_lin[efptVDW] += enerd->term[F_DVDL_VDW]; /* include dispersion correction */ enerd->term[F_DVDL] = 0.0; @@ -772,13 +771,6 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda } } - /* Notes on the foreign lambda free energy difference evaluation: - * Adding the potential and ekin terms that depend linearly on lambda - * as delta lam * dvdl to the energy differences is exact. - * For the constraints this is not exact, but we have no other option - * without literally changing the lengths and reevaluating the energies at each step. - * (try to remedy this post 4.6 - MRS) - */ if (fepvals->separate_dvdl[efptBONDED]) { enerd->term[F_DVDL_BONDED] += enerd->term[F_DVDL_CONSTR]; @@ -787,7 +779,6 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda { enerd->term[F_DVDL] += enerd->term[F_DVDL_CONSTR]; } - enerd->term[F_DVDL_CONSTR] = 0; for (int i = 0; i < fepvals->n_lambda; i++) { @@ -800,20 +791,42 @@ void sum_dhdl(gmx_enerdata_t *enerd, gmx::ArrayRef<const real> lambda, t_lambda current lambda, because the contributions to the current lambda are automatically zeroed */ + double &enerpart_lambda = enerd->enerpart_lambda[i + 1]; + for (size_t j = 0; j < lambda.size(); j++) { /* Note that this loop is over all dhdl components, not just the separated ones */ - dlam = (fepvals->all_lambda[j][i] - lambda[j]); - enerd->enerpart_lambda[i+1] += dlam*enerd->dvdl_lin[j]; + const double dlam = fepvals->all_lambda[j][i] - lambda[j]; + + enerpart_lambda += dlam*enerd->dvdl_lin[j]; + + /* Constraints can not be evaluated at foreign lambdas, so we add + * a linear extrapolation. This is an approximation, but usually + * quite accurate since constraints change little between lambdas. + */ + if ((j == efptBONDED && fepvals->separate_dvdl[efptBONDED]) || + (j == efptFEP && !fepvals->separate_dvdl[efptBONDED])) + { + enerpart_lambda += dlam*enerd->term[F_DVDL_CONSTR]; + } + + if (j == efptMASS) + { + enerpart_lambda += dlam*enerd->term[F_DKDL]; + } + if (debug) { fprintf(debug, "enerdiff lam %g: (%15s), non-linear %f linear %f*%f\n", fepvals->all_lambda[j][i], efpt_names[j], - (enerd->enerpart_lambda[i+1] - enerd->enerpart_lambda[0]), + enerpart_lambda - enerd->enerpart_lambda[0], dlam, enerd->dvdl_lin[j]); } } } + + /* The constrain contribution is now included in other terms, so clear it */ + enerd->term[F_DVDL_CONSTR] = 0; } diff --git a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp similarity index 99% rename from patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp rename to patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp index a268949cbb431f2cf68f8215456809c51adfe48a..05cd383814ae44eda5d9cba7de468684c207ccd5 100644 --- a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp +++ b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp @@ -2983,7 +2983,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, top_global, &state_work, top, inputrec, nrnb, wcycle, gstat, vsite, constr, fcd, graph, mdAtoms, fr, - mu_tot, enerd, vir, pres, atom*2+dx, FALSE); + mu_tot, enerd, vir, pres, aid*2+dx, FALSE); } cr->nnodes = nnodes; @@ -3019,7 +3019,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, } else { - for (node = 0; (node < nnodes && atom+node < atom_index.size()); node++) + for (node = 0; (node < nnodes && aid+node < atom_index.size()); node++) { if (node > 0) { @@ -3031,7 +3031,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, #endif } - row = (atom + node)*DIM + d; + row = (aid + node)*DIM + d; for (size_t j = 0; j < atom_index.size(); j++) { diff --git a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp.preplumed b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp.preplumed similarity index 99% rename from patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp.preplumed index d06da48c44742dfcca9f46349a0d2480914bca2f..2c385df11ce31a2f1790093540ff1793f2a02f68 100644 --- a/patches/gromacs-2018.3.diff/src/gromacs/mdlib/minimize.cpp.preplumed +++ b/patches/gromacs-2018.4.diff/src/gromacs/mdlib/minimize.cpp.preplumed @@ -2909,7 +2909,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, top_global, &state_work, top, inputrec, nrnb, wcycle, gstat, vsite, constr, fcd, graph, mdAtoms, fr, - mu_tot, enerd, vir, pres, atom*2+dx, FALSE); + mu_tot, enerd, vir, pres, aid*2+dx, FALSE); } cr->nnodes = nnodes; @@ -2945,7 +2945,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, } else { - for (node = 0; (node < nnodes && atom+node < atom_index.size()); node++) + for (node = 0; (node < nnodes && aid+node < atom_index.size()); node++) { if (node > 0) { @@ -2957,7 +2957,7 @@ double do_nm(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, #endif } - row = (atom + node)*DIM + d; + row = (aid + node)*DIM + d; for (size_t j = 0; j < atom_index.size(); j++) { diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp b/patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp similarity index 99% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp rename to patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp index 132d93d0dc1fed0bd8406176da9b8dc31eb9dbea..31f271a63de7822c7e4931635ef4361c8bbef70c 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp @@ -126,6 +126,7 @@ #include "gromacs/utility/logger.h" #include "gromacs/utility/real.h" #include "gromacs/utility/smalloc.h" +#include "gromacs/utility/stringutil.h" #include "deform.h" #include "membed.h" @@ -326,6 +327,19 @@ double gmx::do_md(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting) { + /* Workaround for 2 bugs in release-2018. + * NOTE: Proper fix is in release-2019, do not merge this change there. + */ + if (ir->bExpanded && (EI_VV(ir->eI) || + ir->expandedvals->nstexpanded % ir->nstcalcenergy != 0)) + { + ir->nstcalcenergy = 1; + std::string note = + gmx::formatString("NOTE: There are issues with expanded ensemble and certain combination of nstexpanded and nstcalcenergy, setting nstcalcenergy to %d", + ir->nstcalcenergy); + GMX_LOG(mdlog.warning).asParagraph().appendText(note); + } + gmx_mdoutf_t outf = nullptr; gmx_int64_t step, step_rel; double elapsed_time; diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp.preplumed similarity index 99% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp.preplumed index 1695e0b72d53729f4ece973596131895d9a122b8..de5a7031ff1093334ca547c574fdf64d5596c6ac 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/md.cpp.preplumed +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/md.cpp.preplumed @@ -125,6 +125,7 @@ #include "gromacs/utility/logger.h" #include "gromacs/utility/real.h" #include "gromacs/utility/smalloc.h" +#include "gromacs/utility/stringutil.h" #include "deform.h" #include "membed.h" @@ -315,6 +316,19 @@ double gmx::do_md(FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting) { + /* Workaround for 2 bugs in release-2018. + * NOTE: Proper fix is in release-2019, do not merge this change there. + */ + if (ir->bExpanded && (EI_VV(ir->eI) || + ir->expandedvals->nstexpanded % ir->nstcalcenergy != 0)) + { + ir->nstcalcenergy = 1; + std::string note = + gmx::formatString("NOTE: There are issues with expanded ensemble and certain combination of nstexpanded and nstcalcenergy, setting nstcalcenergy to %d", + ir->nstcalcenergy); + GMX_LOG(mdlog.warning).asParagraph().appendText(note); + } + gmx_mdoutf_t outf = nullptr; gmx_int64_t step, step_rel; double elapsed_time; diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp b/patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp similarity index 97% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp rename to patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp index 31ce2bc9c914be0f812a121b538c5ae74137d95c..2fa4b51dfbca01b83f35e26a1e930f879a2354a5 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp @@ -512,6 +512,22 @@ int Mdrunner::mainFunction(int argc, char *argv[]) handleRestart(cr, bTryToAppendFiles, nfile, fnm, &continuationOptions.appendFiles, &continuationOptions.startedFromCheckpoint); mdrunOptions.rerun = opt2bSet("-rerun", nfile, fnm); + + if (mdrunOptions.rerun) + { + /* Rerun can't work if an output file name is the same as the input file name. + * If this is the case, the user will get an error telling them what the issue is. + */ + if (strcmp(opt2fn("-rerun", nfile, fnm), opt2fn("-o", nfile, fnm)) == 0 || + strcmp(opt2fn("-rerun", nfile, fnm), opt2fn("-x", nfile, fnm)) == 0) + { + gmx_fatal(FARGS, "When using mdrun -rerun, the name of the input trajectory file " + "%s cannot be identical to the name of an output file (whether " + "given explicitly with -o or -x, or by default)", + opt2fn("-rerun", nfile, fnm)); + } + } + mdrunOptions.ntompOptionIsSet = opt2parg_bSet("-ntomp", asize(pa), pa); /* We postpone opening the log file if we are appending, so we can diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp.preplumed similarity index 97% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp.preplumed index 772aabda3833f87e24f6b67a76891308ec3c7ac9..a3ec5ac437710f1b2ebd8b629a0368969d668756 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/mdrun.cpp.preplumed +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/mdrun.cpp.preplumed @@ -499,6 +499,22 @@ int Mdrunner::mainFunction(int argc, char *argv[]) handleRestart(cr, bTryToAppendFiles, nfile, fnm, &continuationOptions.appendFiles, &continuationOptions.startedFromCheckpoint); mdrunOptions.rerun = opt2bSet("-rerun", nfile, fnm); + + if (mdrunOptions.rerun) + { + /* Rerun can't work if an output file name is the same as the input file name. + * If this is the case, the user will get an error telling them what the issue is. + */ + if (strcmp(opt2fn("-rerun", nfile, fnm), opt2fn("-o", nfile, fnm)) == 0 || + strcmp(opt2fn("-rerun", nfile, fnm), opt2fn("-x", nfile, fnm)) == 0) + { + gmx_fatal(FARGS, "When using mdrun -rerun, the name of the input trajectory file " + "%s cannot be identical to the name of an output file (whether " + "given explicitly with -o or -x, or by default)", + opt2fn("-rerun", nfile, fnm)); + } + } + mdrunOptions.ntompOptionIsSet = opt2parg_bSet("-ntomp", asize(pa), pa); /* We postpone opening the log file if we are appending, so we can diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.cpp b/patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.cpp similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.cpp rename to patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.cpp diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.cpp.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.cpp.preplumed similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.cpp.preplumed diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.h b/patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.h similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.h rename to patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.h diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.h.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.h.preplumed similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/repl_ex.h.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/repl_ex.h.preplumed diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp similarity index 99% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp rename to patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp index 4dfff857a4a909a452711244ebd64c30a617deea..16653a0ca85223a99770e0349c21ab35c4ddfd52 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp @@ -958,13 +958,17 @@ int Mdrunner::mdrunner() !thisRankHasDuty(cr, DUTY_PP), inputrec->cutoff_scheme == ecutsVERLET); -#ifndef NDEBUG - if (EI_TPI(inputrec->eI) && + // Disabled for the rest of the lifetime of release-2018 branch + // to prevent false positives. + /* + #ifndef NDEBUG + if (EI_TPI(inputrec->eI) && inputrec->cutoff_scheme == ecutsVERLET) - { + { gmx_feenableexcept(); - } -#endif + } + #endif + */ // Build a data structure that expresses which kinds of non-bonded // task are handled by this rank. diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp.preplumed similarity index 99% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp.preplumed index 917ada5687fa1e0c3a0f62fdf3df240ba1f7b113..813be6f3ead3deb828530c431430cfdf34d8364b 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp.preplumed +++ b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.cpp.preplumed @@ -952,13 +952,17 @@ int Mdrunner::mdrunner() !thisRankHasDuty(cr, DUTY_PP), inputrec->cutoff_scheme == ecutsVERLET); -#ifndef NDEBUG - if (EI_TPI(inputrec->eI) && + // Disabled for the rest of the lifetime of release-2018 branch + // to prevent false positives. + /* + #ifndef NDEBUG + if (EI_TPI(inputrec->eI) && inputrec->cutoff_scheme == ecutsVERLET) - { + { gmx_feenableexcept(); - } -#endif + } + #endif + */ // Build a data structure that expresses which kinds of non-bonded // task are handled by this rank. diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.h b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.h similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/runner.h rename to patches/gromacs-2018.4.diff/src/programs/mdrun/runner.h diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.h.preplumed b/patches/gromacs-2018.4.diff/src/programs/mdrun/runner.h.preplumed similarity index 100% rename from patches/gromacs-2018.3.diff/src/programs/mdrun/runner.h.preplumed rename to patches/gromacs-2018.4.diff/src/programs/mdrun/runner.h.preplumed