diff --git a/CHANGES/v2.2.txt b/CHANGES/v2.2.txt index 8133601a2377a433d174762313cd8322591a8cb9..b8ff918f5893ae1fc39708ee6ad31ea994a71cac 100644 --- a/CHANGES/v2.2.txt +++ b/CHANGES/v2.2.txt @@ -116,6 +116,8 @@ For users: asks for too many atoms, see \issue{185}. - Optimisations (activation of the dependencies, secondary structures, DRMSD) - Fixed a performance regression with RMSD=OPTIMAL-FAST +- Fixed a bug in the normalization of kernel functions (relevant for \ref HISTOGRAM). +- Updated patch for gromacs 5.1 For developers: - Fixed a bug in the interpretation of cmd strings. Namely, an erroneous string was not triggering an error. diff --git a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt index 3ff4b77ec68178f49e84e6b9a60dea750d784c94..2af9fdf862dea3a884a4aaf07865bb85b43cc9ba 100644 --- a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt +++ b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt @@ -73,7 +73,7 @@ if(GMX_USE_TNG) "TNG >= 1.6.0 not found. " "You can set GMX_EXTERNAL_TNG=OFF to compile TNG.") endif() - include_directories(${TNG_IO_INCLUDE_DIRS}) + include_directories(SYSTEM ${TNG_IO_INCLUDE_DIRS}) endif() if(NOT GMX_EXTERNAL_TNG) include(${CMAKE_SOURCE_DIR}/src/external/tng_io/BuildTNG.cmake) @@ -83,7 +83,7 @@ if(GMX_USE_TNG) if (HAVE_ZLIB) list(APPEND GMX_EXTRA_LIBRARIES ${ZLIB_LIBRARIES}) - include_directories(${ZLIB_INCLUDE_DIRS}) + include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS}) endif() endif() else() @@ -199,13 +199,17 @@ else() endif() set_source_files_properties(selection/scanner.cpp PROPERTIES COMPILE_FLAGS "${_scanner_cpp_compiler_flags}") +target_link_libraries(libgromacs ${PLUMED_LOAD}) + target_link_libraries(libgromacs ${EXTRAE_LIBRARIES} ${GMX_EXTRA_LIBRARIES} ${TNG_IO_LIBRARIES} ${FFT_LIBRARIES} ${LINEAR_ALGEBRA_LIBRARIES} ${XML_LIBRARIES} - ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS} ${OPENCL_LIBRARIES} ${PLUMED_LOAD}) + ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS} ${OPENCL_LIBRARIES}) + + set_target_properties(libgromacs PROPERTIES OUTPUT_NAME "gromacs${GMX_LIBS_SUFFIX}" SOVERSION ${LIBRARY_SOVERSION_MAJOR} diff --git a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed index 26d7111383d96c659540fb93926fc9026e74ec4f..467b0be4c1abb18c0a53a96ed052353a608d4a0f 100644 --- a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed +++ b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed @@ -71,7 +71,7 @@ if(GMX_USE_TNG) "TNG >= 1.6.0 not found. " "You can set GMX_EXTERNAL_TNG=OFF to compile TNG.") endif() - include_directories(${TNG_IO_INCLUDE_DIRS}) + include_directories(SYSTEM ${TNG_IO_INCLUDE_DIRS}) endif() if(NOT GMX_EXTERNAL_TNG) include(${CMAKE_SOURCE_DIR}/src/external/tng_io/BuildTNG.cmake) @@ -81,7 +81,7 @@ if(GMX_USE_TNG) if (HAVE_ZLIB) list(APPEND GMX_EXTRA_LIBRARIES ${ZLIB_LIBRARIES}) - include_directories(${ZLIB_INCLUDE_DIRS}) + include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS}) endif() endif() else() diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp index 4c552329584542397e34e6645e136882d4925374..dade566c5e3836dc572000709101488bf1cc4ffa 100644 --- a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp +++ b/patches/gromacs-5.1.2.diff/src/programs/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, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015,2016, 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. @@ -184,7 +184,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_int64_t step, step_rel; double elapsed_time; double t, t0, lam0[efptNR]; - gmx_bool bGStatEveryStep, bGStat, bCalcVir, bCalcEner; + gmx_bool bGStatEveryStep, bGStat, bCalcVir, bCalcEnerStep, bCalcEner; gmx_bool bNS, bNStList, bSimAnn, bStopCM, bRerunMD, bNotLastFrame = FALSE, bFirstStep, bStateFromCP, bStateFromTPX, bInitStep, bLastStep, bBornRadii, bStartingFromCpt; @@ -354,11 +354,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n"); } - if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && usingGpu(fr->nbv)) - { - gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto"); - } - if (DEFORM(*ir)) { tMPI_Thread_mutex_lock(&deform_init_box_mutex); @@ -551,6 +546,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], { gmx_fatal(FARGS, "nstexpanded should be divisible by nstcalclr"); } + nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep); } if (repl_ex_nst > 0) { @@ -976,7 +972,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], bBornRadii = TRUE; } - do_log = do_per_step(step, ir->nstlog) || bFirstStep || bLastStep; + /* do_log triggers energy and virial calculation. Because this leads + * to different code paths, forces can be different. Thus for exact + * continuation we should avoid extra log output. + * Note that the || bLastStep can result in non-exact continuation + * beyond the last step. But we don't consider that to be an issue. + */ + do_log = do_per_step(step, ir->nstlog) || (bFirstStep && !bStateFromCP) || bLastStep; do_verbose = bVerbose && (step % stepout == 0 || bFirstStep || bLastStep); @@ -1147,21 +1149,18 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], but the virial needs to be calculated on both the current step and the 'next' step. Future reorganization may be able to get rid of one of the bCalcVir=TRUE steps. */ - bCalcEner = do_per_step(step-1, ir->nstcalcenergy); - bCalcVir = bCalcEner || + /* TODO: This is probably not what we want, we will write to energy file one step after nstcalcenergy steps. */ + bCalcEnerStep = do_per_step(step - 1, ir->nstcalcenergy); + bCalcVir = bCalcEnerStep || (ir->epc != epcNO && (do_per_step(step, ir->nstpcouple) || do_per_step(step-1, ir->nstpcouple))); } else { - bCalcEner = do_per_step(step, ir->nstcalcenergy); - bCalcVir = bCalcEner || + bCalcEnerStep = do_per_step(step, ir->nstcalcenergy); + bCalcVir = bCalcEnerStep || (ir->epc != epcNO && do_per_step(step, ir->nstpcouple)); } - - /* Do we need global communication ? */ - bGStat = (bCalcVir || bCalcEner || bStopCM || - do_per_step(step, nstglobalcomm) || - (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm))); + bCalcEner = bCalcEnerStep; do_ene = (do_per_step(step, ir->nstenergy) || bLastStep); @@ -1169,9 +1168,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], { bCalcVir = TRUE; bCalcEner = TRUE; - bGStat = TRUE; } + /* Do we need global communication ? */ + bGStat = (bCalcVir || bCalcEner || bStopCM || + do_per_step(step, nstglobalcomm) || + (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm))); + /* these CGLO_ options remain the same throughout the iteration */ cglo_flags = ((bRerunMD ? CGLO_RERUNMD : 0) | (bGStat ? CGLO_GSTAT : 0) @@ -1353,6 +1356,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], | (bTemp ? CGLO_TEMPERATURE : 0) | (bPres ? CGLO_PRESSURE : 0) | (bPres ? CGLO_CONSTRAINT : 0) + | (bStopCM ? CGLO_STOPCM : 0) | CGLO_SCALEEKIN ); /* explanation of above: @@ -1455,8 +1459,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Check if IMD step and do IMD communication, if bIMD is TRUE. */ bIMDstep = do_IMD(ir->bIMD, step, cr, bNS, state->box, state->x, ir, t, wcycle); - /* kludge -- virial is lost with restart for NPT control. Must restart */ - if (bStartingFromCpt && bVV) + /* kludge -- virial is lost with restart for MTTK NPT control. Must reload (saved earlier). */ + if (bStartingFromCpt && bTrotter) { copy_mat(state->svir_prev, shake_vir); copy_mat(state->fvir_prev, force_vir); @@ -1531,26 +1535,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gs.sig[eglsCHKPT] = 1; } - /* at the start of step, randomize or scale the velocities (trotter done elsewhere) */ - if (EI_VV(ir->eI)) + /* at the start of step, randomize or scale the velocities ((if vv. Restriction of Andersen controlled + in preprocessing */ + + if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */ { - if (!bInitStep) - { - update_tcouple(step, ir, state, ekind, &MassQ, mdatoms); - } - if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */ + gmx_bool bIfRandomize; + bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr); + /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */ + if (constr && bIfRandomize) { - gmx_bool bIfRandomize; - bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr); - /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */ - if (constr && bIfRandomize) - { - update_constraints(fplog, step, NULL, ir, mdatoms, - state, fr->bMolPBC, graph, f, - &top->idef, tmp_vir, - cr, nrnb, wcycle, upd, constr, - TRUE, bCalcVir); - } + update_constraints(fplog, step, NULL, ir, mdatoms, + state, fr->bMolPBC, graph, f, + &top->idef, tmp_vir, + cr, nrnb, wcycle, upd, constr, + TRUE, bCalcVir); } } /* ######### START SECOND UPDATE STEP ################# */ @@ -1780,36 +1779,32 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Output stuff */ if (MASTER(cr)) { - gmx_bool do_dr, do_or; - if (fplog && do_log && bDoExpanded) { /* only needed if doing expanded ensemble */ PrintFreeEnergyInfoToFile(fplog, ir->fepvals, ir->expandedvals, ir->bSimTemp ? ir->simtempvals : NULL, &state_global->dfhist, state->fep_state, ir->nstlog, step); } - if (!(bStartingFromCpt && (EI_VV(ir->eI)))) + if (bCalcEner) { - if (bCalcEner) - { - upd_mdebin(mdebin, bDoDHDL, TRUE, - t, mdatoms->tmass, enerd, state, - ir->fepvals, ir->expandedvals, lastbox, - shake_vir, force_vir, total_vir, pres, - ekind, mu_tot, constr); - } - else - { - upd_mdebin_step(mdebin); - } + upd_mdebin(mdebin, bDoDHDL, bCalcEnerStep, + t, mdatoms->tmass, enerd, state, + ir->fepvals, ir->expandedvals, lastbox, + shake_vir, force_vir, total_vir, pres, + ekind, mu_tot, constr); + } + else + { + upd_mdebin_step(mdebin); + } - do_dr = do_per_step(step, ir->nstdisreout); - do_or = do_per_step(step, ir->nstorireout); + gmx_bool do_dr = do_per_step(step, ir->nstdisreout); + gmx_bool do_or = do_per_step(step, ir->nstorireout); + + print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL, + step, t, + eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts)); - print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL, - step, t, - eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts)); - } if (ir->bPull) { pull_print_output(ir->pull_work, step, t); @@ -1947,7 +1942,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], * until after load balancing completes, * e.g. https://gerrit.gromacs.org/#/c/4964/2 */ gmx_fatal(FARGS, "PME tuning was still active when attempting to " - "reset mdrun counters at step " GMX_PRId64 ". Try " + "reset mdrun counters at step %" GMX_PRId64 ". Try " "resetting counters later in the run, e.g. with gmx " "mdrun -resetstep.", step); } diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed index 4f33d897e950a2793d76d963e8451ed0d6c8dd96..ce25ac7e90d312d3671b4f1ccd495775caeee445 100644 --- a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed +++ b/patches/gromacs-5.1.2.diff/src/programs/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, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015,2016, 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. @@ -174,7 +174,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_int64_t step, step_rel; double elapsed_time; double t, t0, lam0[efptNR]; - gmx_bool bGStatEveryStep, bGStat, bCalcVir, bCalcEner; + gmx_bool bGStatEveryStep, bGStat, bCalcVir, bCalcEnerStep, bCalcEner; gmx_bool bNS, bNStList, bSimAnn, bStopCM, bRerunMD, bNotLastFrame = FALSE, bFirstStep, bStateFromCP, bStateFromTPX, bInitStep, bLastStep, bBornRadii, bStartingFromCpt; @@ -338,11 +338,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n"); } - if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && usingGpu(fr->nbv)) - { - gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto"); - } - if (DEFORM(*ir)) { tMPI_Thread_mutex_lock(&deform_init_box_mutex); @@ -535,6 +530,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], { gmx_fatal(FARGS, "nstexpanded should be divisible by nstcalclr"); } + nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep); } if (repl_ex_nst > 0) { @@ -914,7 +910,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], bBornRadii = TRUE; } - do_log = do_per_step(step, ir->nstlog) || bFirstStep || bLastStep; + /* do_log triggers energy and virial calculation. Because this leads + * to different code paths, forces can be different. Thus for exact + * continuation we should avoid extra log output. + * Note that the || bLastStep can result in non-exact continuation + * beyond the last step. But we don't consider that to be an issue. + */ + do_log = do_per_step(step, ir->nstlog) || (bFirstStep && !bStateFromCP) || bLastStep; do_verbose = bVerbose && (step % stepout == 0 || bFirstStep || bLastStep); @@ -1001,21 +1003,18 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], but the virial needs to be calculated on both the current step and the 'next' step. Future reorganization may be able to get rid of one of the bCalcVir=TRUE steps. */ - bCalcEner = do_per_step(step-1, ir->nstcalcenergy); - bCalcVir = bCalcEner || + /* TODO: This is probably not what we want, we will write to energy file one step after nstcalcenergy steps. */ + bCalcEnerStep = do_per_step(step - 1, ir->nstcalcenergy); + bCalcVir = bCalcEnerStep || (ir->epc != epcNO && (do_per_step(step, ir->nstpcouple) || do_per_step(step-1, ir->nstpcouple))); } else { - bCalcEner = do_per_step(step, ir->nstcalcenergy); - bCalcVir = bCalcEner || + bCalcEnerStep = do_per_step(step, ir->nstcalcenergy); + bCalcVir = bCalcEnerStep || (ir->epc != epcNO && do_per_step(step, ir->nstpcouple)); } - - /* Do we need global communication ? */ - bGStat = (bCalcVir || bCalcEner || bStopCM || - do_per_step(step, nstglobalcomm) || - (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm))); + bCalcEner = bCalcEnerStep; do_ene = (do_per_step(step, ir->nstenergy) || bLastStep); @@ -1023,9 +1022,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], { bCalcVir = TRUE; bCalcEner = TRUE; - bGStat = TRUE; } + /* Do we need global communication ? */ + bGStat = (bCalcVir || bCalcEner || bStopCM || + do_per_step(step, nstglobalcomm) || + (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm))); + /* these CGLO_ options remain the same throughout the iteration */ cglo_flags = ((bRerunMD ? CGLO_RERUNMD : 0) | (bGStat ? CGLO_GSTAT : 0) @@ -1172,6 +1175,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], | (bTemp ? CGLO_TEMPERATURE : 0) | (bPres ? CGLO_PRESSURE : 0) | (bPres ? CGLO_CONSTRAINT : 0) + | (bStopCM ? CGLO_STOPCM : 0) | CGLO_SCALEEKIN ); /* explanation of above: @@ -1274,8 +1278,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Check if IMD step and do IMD communication, if bIMD is TRUE. */ bIMDstep = do_IMD(ir->bIMD, step, cr, bNS, state->box, state->x, ir, t, wcycle); - /* kludge -- virial is lost with restart for NPT control. Must restart */ - if (bStartingFromCpt && bVV) + /* kludge -- virial is lost with restart for MTTK NPT control. Must reload (saved earlier). */ + if (bStartingFromCpt && bTrotter) { copy_mat(state->svir_prev, shake_vir); copy_mat(state->fvir_prev, force_vir); @@ -1350,26 +1354,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gs.sig[eglsCHKPT] = 1; } - /* at the start of step, randomize or scale the velocities (trotter done elsewhere) */ - if (EI_VV(ir->eI)) + /* at the start of step, randomize or scale the velocities ((if vv. Restriction of Andersen controlled + in preprocessing */ + + if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */ { - if (!bInitStep) - { - update_tcouple(step, ir, state, ekind, &MassQ, mdatoms); - } - if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */ + gmx_bool bIfRandomize; + bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr); + /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */ + if (constr && bIfRandomize) { - gmx_bool bIfRandomize; - bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr); - /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */ - if (constr && bIfRandomize) - { - update_constraints(fplog, step, NULL, ir, mdatoms, - state, fr->bMolPBC, graph, f, - &top->idef, tmp_vir, - cr, nrnb, wcycle, upd, constr, - TRUE, bCalcVir); - } + update_constraints(fplog, step, NULL, ir, mdatoms, + state, fr->bMolPBC, graph, f, + &top->idef, tmp_vir, + cr, nrnb, wcycle, upd, constr, + TRUE, bCalcVir); } } /* ######### START SECOND UPDATE STEP ################# */ @@ -1599,36 +1598,32 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Output stuff */ if (MASTER(cr)) { - gmx_bool do_dr, do_or; - if (fplog && do_log && bDoExpanded) { /* only needed if doing expanded ensemble */ PrintFreeEnergyInfoToFile(fplog, ir->fepvals, ir->expandedvals, ir->bSimTemp ? ir->simtempvals : NULL, &state_global->dfhist, state->fep_state, ir->nstlog, step); } - if (!(bStartingFromCpt && (EI_VV(ir->eI)))) + if (bCalcEner) { - if (bCalcEner) - { - upd_mdebin(mdebin, bDoDHDL, TRUE, - t, mdatoms->tmass, enerd, state, - ir->fepvals, ir->expandedvals, lastbox, - shake_vir, force_vir, total_vir, pres, - ekind, mu_tot, constr); - } - else - { - upd_mdebin_step(mdebin); - } + upd_mdebin(mdebin, bDoDHDL, bCalcEnerStep, + t, mdatoms->tmass, enerd, state, + ir->fepvals, ir->expandedvals, lastbox, + shake_vir, force_vir, total_vir, pres, + ekind, mu_tot, constr); + } + else + { + upd_mdebin_step(mdebin); + } - do_dr = do_per_step(step, ir->nstdisreout); - do_or = do_per_step(step, ir->nstorireout); + gmx_bool do_dr = do_per_step(step, ir->nstdisreout); + gmx_bool do_or = do_per_step(step, ir->nstorireout); + + print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL, + step, t, + eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts)); - print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL, - step, t, - eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts)); - } if (ir->bPull) { pull_print_output(ir->pull_work, step, t); @@ -1766,7 +1761,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], * until after load balancing completes, * e.g. https://gerrit.gromacs.org/#/c/4964/2 */ gmx_fatal(FARGS, "PME tuning was still active when attempting to " - "reset mdrun counters at step " GMX_PRId64 ". Try " + "reset mdrun counters at step %" GMX_PRId64 ". Try " "resetting counters later in the run, e.g. with gmx " "mdrun -resetstep.", step); }