tensor shake_vir,
tensor total_vir,
tensor pres,
- gmx::Constraints* constr,
+ gmx::ArrayRef<real> constraintsRmsdData,
gmx::SimulationSignaller* signalCoordinator,
const matrix lastbox,
int* totalNumberOfBondedInteractions,
shake_vir,
ir,
ekind,
- constr,
+ constraintsRmsdData,
bStopCM ? vcm : nullptr,
signalBuffer.size(),
signalBuffer.data(),
tensor shake_vir,
tensor total_vir,
tensor pres,
- gmx::Constraints* constr,
+ gmx::ArrayRef<real> constraintsRmsdData,
gmx::SimulationSignaller* signalCoordinator,
const matrix lastbox,
int* totalNumberOfBondedInteractions,
* 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.
#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"
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<real> 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;
ifv = add_binr(rb, DIM * DIM, fvir[0]);
}
- gmx::ArrayRef<real> 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++)
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++)
* 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.
namespace gmx
{
+template<typename T>
+class ArrayRef;
class Constraints;
-}
+} // namespace gmx
typedef struct gmx_global_stat* gmx_global_stat_t;
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<real> 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)
shake_vir,
total_vir,
pres,
- constr,
+ (bCalcEner && constr != nullptr) ? constr->rmsdData() : gmx::ArrayRef<real>{},
nullSignaller,
state->box,
&totalNumberOfBondedInteractions,
nullptr,
nullptr,
nullptr,
- constr,
+ gmx::ArrayRef<real>{},
nullSignaller,
state->box,
nullptr,
shake_vir,
total_vir,
pres,
- constr,
+ gmx::ArrayRef<real>{},
nullSignaller,
lastbox,
nullptr,
shake_vir,
total_vir,
pres,
- constr,
+ gmx::ArrayRef<real>{},
&nullSignaller,
state->box,
&totalNumberOfBondedInteractions,
shake_vir,
total_vir,
pres,
- constr,
+ gmx::ArrayRef<real>{},
&nullSignaller,
state->box,
nullptr,
nullptr,
nullptr,
nullptr,
- constr,
+ gmx::ArrayRef<real>{},
&nullSignaller,
state->box,
&totalNumberOfBondedInteractions,
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<real>{},
+ &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,
shake_vir,
total_vir,
pres,
- constr,
+ gmx::ArrayRef<real>{},
&nullSignaller,
state->box,
&totalNumberOfBondedInteractions,
nullptr,
nullptr,
nullptr,
- constr,
+ constr != nullptr ? constr->rmsdData() : gmx::ArrayRef<real>{},
&signaller,
state->box,
&totalNumberOfBondedInteractions,
shake_vir,
inputrec,
nullptr,
- nullptr,
+ gmx::ArrayRef<real>{},
nullptr,
1,
&terminate,
shake_vir,
total_vir,
pres,
- constr,
+ gmx::ArrayRef<real>{},
&nullSignaller,
state->box,
&totalNumberOfBondedInteractions,
shake_vir,
total_vir,
pres,
- constr,
+ constr != nullptr ? constr->rmsdData() : gmx::ArrayRef<real>{},
&signaller,
state->box,
&totalNumberOfBondedInteractions,
/*
* 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.
#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"
energyData_->constraintVirial(step),
energyData_->totalVirial(step),
energyData_->pressure(step),
- constr_,
+ (((flags & CGLO_ENERGY) != 0) && constr_ != nullptr) ? constr_->rmsdData()
+ : gmx::ArrayRef<real>{},
signaller,
lastbox,
&totalNumberOfBondedInteractions_,