From 6cc60ffcd3d2af71a6a3ce5a5acbd69c4c3d67f0 Mon Sep 17 00:00:00 2001 From: Artem Zhmurov Date: Fri, 29 Jan 2021 18:37:07 +0000 Subject: [PATCH] Rmove dependency on Constraints object from compute_globals(...) Compute globals only uses RMSD data from constraints. This replaces the Constraints object by the optional argument with RMSD data in compute_globals(...) function signature. Refs. #3754 --- src/gromacs/mdlib/md_support.cpp | 4 +- src/gromacs/mdlib/md_support.h | 2 +- src/gromacs/mdlib/stat.cpp | 44 ++++++------- src/gromacs/mdlib/stat.h | 34 +++++----- src/gromacs/mdlib/update_vv.cpp | 6 +- src/gromacs/mdrun/md.cpp | 64 ++++++++++--------- src/gromacs/mdrun/mimic.cpp | 4 +- src/gromacs/mdrun/minimize.cpp | 2 +- src/gromacs/mdrun/rerun.cpp | 4 +- .../computeglobalselement.cpp | 6 +- 10 files changed, 85 insertions(+), 85 deletions(-) diff --git a/src/gromacs/mdlib/md_support.cpp b/src/gromacs/mdlib/md_support.cpp index 1f88c871db..1455e0eeb5 100644 --- a/src/gromacs/mdlib/md_support.cpp +++ b/src/gromacs/mdlib/md_support.cpp @@ -297,7 +297,7 @@ void compute_globals(gmx_global_stat* gstat, tensor shake_vir, tensor total_vir, tensor pres, - gmx::Constraints* constr, + gmx::ArrayRef constraintsRmsdData, gmx::SimulationSignaller* signalCoordinator, const matrix lastbox, int* totalNumberOfBondedInteractions, @@ -366,7 +366,7 @@ void compute_globals(gmx_global_stat* gstat, shake_vir, ir, ekind, - constr, + constraintsRmsdData, bStopCM ? vcm : nullptr, signalBuffer.size(), signalBuffer.data(), diff --git a/src/gromacs/mdlib/md_support.h b/src/gromacs/mdlib/md_support.h index b6c794b8e6..aad947007e 100644 --- a/src/gromacs/mdlib/md_support.h +++ b/src/gromacs/mdlib/md_support.h @@ -129,7 +129,7 @@ void compute_globals(gmx_global_stat* gstat, tensor shake_vir, tensor total_vir, tensor pres, - gmx::Constraints* constr, + gmx::ArrayRef constraintsRmsdData, gmx::SimulationSignaller* signalCoordinator, const matrix lastbox, int* totalNumberOfBondedInteractions, diff --git a/src/gromacs/mdlib/stat.cpp b/src/gromacs/mdlib/stat.cpp index 26d2fe5b02..1ec865802a 100644 --- a/src/gromacs/mdlib/stat.cpp +++ b/src/gromacs/mdlib/stat.cpp @@ -4,7 +4,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. - * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by + * Copyright (c) 2018,2019,2020,2021, 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. @@ -49,7 +49,6 @@ #include "gromacs/gmxlib/network.h" #include "gromacs/math/utilities.h" #include "gromacs/math/vec.h" -#include "gromacs/mdlib/constr.h" #include "gromacs/mdlib/md_support.h" #include "gromacs/mdlib/rbin.h" #include "gromacs/mdlib/tgroup.h" @@ -136,20 +135,20 @@ static int filter_enerdterm(const real* afrom, gmx_bool bToBuffer, real* ato, gm return to; } -void global_stat(const gmx_global_stat* gs, - const t_commrec* cr, - gmx_enerdata_t* enerd, - tensor fvir, - tensor svir, - const t_inputrec* inputrec, - gmx_ekindata_t* ekind, - const gmx::Constraints* constr, - t_vcm* vcm, - int nsig, - real* sig, - int* totalNumberOfBondedInteractions, - bool bSumEkinhOld, - int flags) +void global_stat(const gmx_global_stat* gs, + const t_commrec* cr, + gmx_enerdata_t* enerd, + tensor fvir, + tensor svir, + const t_inputrec* inputrec, + gmx_ekindata_t* ekind, + gmx::ArrayRef constraintsRmsdData, + t_vcm* vcm, + int nsig, + real* sig, + int* totalNumberOfBondedInteractions, + bool bSumEkinhOld, + int flags) /* instead of current system, gmx_booleans for summing virial, kinetic energy, and other terms */ { t_bin* rb; @@ -235,17 +234,12 @@ void global_stat(const gmx_global_stat* gs, ifv = add_binr(rb, DIM * DIM, fvir[0]); } - gmx::ArrayRef rmsdData; if (bEner) { ie = add_binr(rb, nener, copyenerd); - if (constr) + if (!constraintsRmsdData.empty()) { - rmsdData = constr->rmsdData(); - if (!rmsdData.empty()) - { - irmsd = add_binr(rb, 2, rmsdData.data()); - } + irmsd = add_binr(rb, 2, constraintsRmsdData.data()); } for (j = 0; (j < egNR); j++) @@ -340,9 +334,9 @@ void global_stat(const gmx_global_stat* gs, if (bEner) { extract_binr(rb, ie, nener, copyenerd); - if (!rmsdData.empty()) + if (!constraintsRmsdData.empty()) { - extract_binr(rb, irmsd, rmsdData); + extract_binr(rb, irmsd, constraintsRmsdData); } for (j = 0; (j < egNR); j++) diff --git a/src/gromacs/mdlib/stat.h b/src/gromacs/mdlib/stat.h index d69d5ceaef..d3cf97713a 100644 --- a/src/gromacs/mdlib/stat.h +++ b/src/gromacs/mdlib/stat.h @@ -4,7 +4,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. - * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by + * Copyright (c) 2018,2019,2020,2021, 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. @@ -49,8 +49,10 @@ struct t_commrec; namespace gmx { +template +class ArrayRef; class Constraints; -} +} // namespace gmx typedef struct gmx_global_stat* gmx_global_stat_t; @@ -59,20 +61,20 @@ gmx_global_stat_t global_stat_init(const t_inputrec* ir); void global_stat_destroy(gmx_global_stat_t gs); /*! \brief All-reduce energy-like quantities over cr->mpi_comm_mysim */ -void global_stat(const gmx_global_stat* gs, - const t_commrec* cr, - gmx_enerdata_t* enerd, - tensor fvir, - tensor svir, - const t_inputrec* inputrec, - gmx_ekindata_t* ekind, - const gmx::Constraints* constr, - t_vcm* vcm, - int nsig, - real* sig, - int* totalNumberOfBondedInteractions, - bool bSumEkinhOld, - int flags); +void global_stat(const gmx_global_stat* gs, + const t_commrec* cr, + gmx_enerdata_t* enerd, + tensor fvir, + tensor svir, + const t_inputrec* inputrec, + gmx_ekindata_t* ekind, + gmx::ArrayRef constraintsRmsdData, + t_vcm* vcm, + int nsig, + real* sig, + int* totalNumberOfBondedInteractions, + bool bSumEkinhOld, + int flags); /*! \brief Returns TRUE if io should be done */ inline bool do_per_step(int64_t step, int64_t nstep) diff --git a/src/gromacs/mdlib/update_vv.cpp b/src/gromacs/mdlib/update_vv.cpp index bd40e9b426..febfcc29a6 100644 --- a/src/gromacs/mdlib/update_vv.cpp +++ b/src/gromacs/mdlib/update_vv.cpp @@ -182,7 +182,7 @@ void integrateVVFirstStep(int64_t step, shake_vir, total_vir, pres, - constr, + (bCalcEner && constr != nullptr) ? constr->rmsdData() : gmx::ArrayRef{}, nullSignaller, state->box, &totalNumberOfBondedInteractions, @@ -263,7 +263,7 @@ void integrateVVFirstStep(int64_t step, nullptr, nullptr, nullptr, - constr, + gmx::ArrayRef{}, nullSignaller, state->box, nullptr, @@ -386,7 +386,7 @@ void integrateVVSecondStep(int64_t step, shake_vir, total_vir, pres, - constr, + gmx::ArrayRef{}, nullSignaller, lastbox, nullptr, diff --git a/src/gromacs/mdrun/md.cpp b/src/gromacs/mdrun/md.cpp index 94568b39dd..04cc254287 100644 --- a/src/gromacs/mdrun/md.cpp +++ b/src/gromacs/mdrun/md.cpp @@ -672,7 +672,7 @@ void gmx::LegacySimulator::do_md() shake_vir, total_vir, pres, - constr, + gmx::ArrayRef{}, &nullSignaller, state->box, &totalNumberOfBondedInteractions, @@ -724,7 +724,7 @@ void gmx::LegacySimulator::do_md() shake_vir, total_vir, pres, - constr, + gmx::ArrayRef{}, &nullSignaller, state->box, nullptr, @@ -1046,7 +1046,7 @@ void gmx::LegacySimulator::do_md() nullptr, nullptr, nullptr, - constr, + gmx::ArrayRef{}, &nullSignaller, state->box, &totalNumberOfBondedInteractions, @@ -1597,34 +1597,36 @@ void gmx::LegacySimulator::do_md() bool doIntraSimSignal = true; SimulationSignaller signaller(&signals, cr, ms, doInterSimSignal, doIntraSimSignal); - compute_globals(gstat, - cr, - ir, - fr, - ekind, - makeConstArrayRef(state->x), - makeConstArrayRef(state->v), - state->box, - mdatoms, - nrnb, - &vcm, - wcycle, - enerd, - force_vir, - shake_vir, - total_vir, - pres, - constr, - &signaller, - lastbox, - &totalNumberOfBondedInteractions, - &bSumEkinhOld, - (bGStat ? CGLO_GSTAT : 0) | (!EI_VV(ir->eI) && bCalcEner ? CGLO_ENERGY : 0) - | (!EI_VV(ir->eI) && bStopCM ? CGLO_STOPCM : 0) - | (!EI_VV(ir->eI) ? CGLO_TEMPERATURE : 0) - | (!EI_VV(ir->eI) ? CGLO_PRESSURE : 0) | CGLO_CONSTRAINT - | (shouldCheckNumberOfBondedInteractions ? CGLO_CHECK_NUMBER_OF_BONDED_INTERACTIONS - : 0)); + compute_globals( + gstat, + cr, + ir, + fr, + ekind, + makeConstArrayRef(state->x), + makeConstArrayRef(state->v), + state->box, + mdatoms, + nrnb, + &vcm, + wcycle, + enerd, + force_vir, + shake_vir, + total_vir, + pres, + (!EI_VV(ir->eI) && bCalcEner && constr != nullptr) ? constr->rmsdData() + : gmx::ArrayRef{}, + &signaller, + lastbox, + &totalNumberOfBondedInteractions, + &bSumEkinhOld, + (bGStat ? CGLO_GSTAT : 0) | (!EI_VV(ir->eI) && bCalcEner ? CGLO_ENERGY : 0) + | (!EI_VV(ir->eI) && bStopCM ? CGLO_STOPCM : 0) + | (!EI_VV(ir->eI) ? CGLO_TEMPERATURE : 0) + | (!EI_VV(ir->eI) ? CGLO_PRESSURE : 0) | CGLO_CONSTRAINT + | (shouldCheckNumberOfBondedInteractions ? CGLO_CHECK_NUMBER_OF_BONDED_INTERACTIONS + : 0)); checkNumberOfBondedInteractions(mdlog, cr, totalNumberOfBondedInteractions, diff --git a/src/gromacs/mdrun/mimic.cpp b/src/gromacs/mdrun/mimic.cpp index 38d0d6ef33..970bb40afe 100644 --- a/src/gromacs/mdrun/mimic.cpp +++ b/src/gromacs/mdrun/mimic.cpp @@ -364,7 +364,7 @@ void gmx::LegacySimulator::do_mimic() shake_vir, total_vir, pres, - constr, + gmx::ArrayRef{}, &nullSignaller, state->box, &totalNumberOfBondedInteractions, @@ -652,7 +652,7 @@ void gmx::LegacySimulator::do_mimic() nullptr, nullptr, nullptr, - constr, + constr != nullptr ? constr->rmsdData() : gmx::ArrayRef{}, &signaller, state->box, &totalNumberOfBondedInteractions, diff --git a/src/gromacs/mdrun/minimize.cpp b/src/gromacs/mdrun/minimize.cpp index 988723c0c7..b64d523687 100644 --- a/src/gromacs/mdrun/minimize.cpp +++ b/src/gromacs/mdrun/minimize.cpp @@ -971,7 +971,7 @@ void EnergyEvaluator::run(em_state_t* ems, rvec mu_tot, tensor vir, tensor pres, shake_vir, inputrec, nullptr, - nullptr, + gmx::ArrayRef{}, nullptr, 1, &terminate, diff --git a/src/gromacs/mdrun/rerun.cpp b/src/gromacs/mdrun/rerun.cpp index 7d97dbe99e..0857b5b795 100644 --- a/src/gromacs/mdrun/rerun.cpp +++ b/src/gromacs/mdrun/rerun.cpp @@ -410,7 +410,7 @@ void gmx::LegacySimulator::do_rerun() shake_vir, total_vir, pres, - constr, + gmx::ArrayRef{}, &nullSignaller, state->box, &totalNumberOfBondedInteractions, @@ -770,7 +770,7 @@ void gmx::LegacySimulator::do_rerun() shake_vir, total_vir, pres, - constr, + constr != nullptr ? constr->rmsdData() : gmx::ArrayRef{}, &signaller, state->box, &totalNumberOfBondedInteractions, diff --git a/src/gromacs/modularsimulator/computeglobalselement.cpp b/src/gromacs/modularsimulator/computeglobalselement.cpp index 0507afad2e..3bca8ed4a0 100644 --- a/src/gromacs/modularsimulator/computeglobalselement.cpp +++ b/src/gromacs/modularsimulator/computeglobalselement.cpp @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2019,2020, by the GROMACS development team, led by + * Copyright (c) 2019,2020,2021, 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. @@ -47,6 +47,7 @@ #include "gromacs/gmxlib/network.h" #include "gromacs/gmxlib/nrnb.h" #include "gromacs/math/vec.h" +#include "gromacs/mdlib/constr.h" #include "gromacs/mdlib/md_support.h" #include "gromacs/mdlib/mdatoms.h" #include "gromacs/mdlib/stat.h" @@ -299,7 +300,8 @@ void ComputeGlobalsElement::compute(gmx::Step step, energyData_->constraintVirial(step), energyData_->totalVirial(step), energyData_->pressure(step), - constr_, + (((flags & CGLO_ENERGY) != 0) && constr_ != nullptr) ? constr_->rmsdData() + : gmx::ArrayRef{}, signaller, lastbox, &totalNumberOfBondedInteractions_, -- 2.22.0