inputrec->delta_t, statePropagatorDataPtr, mdAtoms, wcycle);
addToCallListAndMove(std::move(forceElement), elementCallList, elementsOwnershipList);
- auto stateElement = compat::make_not_null(statePropagatorDataPtr->element(
- fplog, cr, inputrec->nstxout, inputrec->nstvout, inputrec->nstfout,
- inputrec->nstxout_compressed, freeEnergyPerturbationDataPtr, fr->bMolPBC,
- mdrunOptions.writeConfout, opt2fn("-c", nfile, fnm), inputrec, top_global));
+ auto stateElement = compat::make_not_null(statePropagatorDataPtr->element());
trajectoryElementBuilder->registerWriterClient(stateElement);
trajectorySignallerBuilder->registerSignallerClient(stateElement);
lastStepSignallerBuilder->registerSignallerClient(stateElement);
addToCallListAndMove(std::move(constraintElement), elementCallList, elementsOwnershipList);
}
addToCallList(compat::make_not_null(computeGlobalsElement.get()), elementCallList);
- auto stateElement = compat::make_not_null(statePropagatorDataPtr->element(
- fplog, cr, inputrec->nstxout, inputrec->nstvout, inputrec->nstfout,
- inputrec->nstxout_compressed, freeEnergyPerturbationDataPtr, fr->bMolPBC,
- mdrunOptions.writeConfout, opt2fn("-c", nfile, fnm), inputrec, top_global));
+ auto stateElement = compat::make_not_null(statePropagatorDataPtr->element());
trajectoryElementBuilder->registerWriterClient(stateElement);
trajectorySignallerBuilder->registerSignallerClient(stateElement);
lastStepSignallerBuilder->registerSignallerClient(stateElement);
algorithm.freeEnergyPerturbationData_.get();
algorithm.statePropagatorData_ = std::make_unique<StatePropagatorData>(
- top_global->natoms, cr, state_global, fr->nbv->useGpu(), inputrec, mdAtoms->mdatoms());
+ top_global->natoms, fplog, cr, state_global, fr->nbv->useGpu(),
+ freeEnergyPerturbationDataPtr, fr->bMolPBC, mdrunOptions.writeConfout,
+ opt2fn("-c", nfile, fnm), inputrec, mdAtoms->mdatoms(), top_global);
auto statePropagatorDataPtr = compat::make_not_null(algorithm.statePropagatorData_.get());
algorithm.energyData_ = std::make_unique<EnergyData>(
namespace gmx
{
-StatePropagatorData::StatePropagatorData(int numAtoms,
- const t_commrec* cr,
- t_state* globalState,
- bool useGPU,
- const t_inputrec* inputrec,
- const t_mdatoms* mdatoms) :
+StatePropagatorData::StatePropagatorData(int numAtoms,
+ FILE* fplog,
+ const t_commrec* cr,
+ t_state* globalState,
+ bool useGPU,
+ FreeEnergyPerturbationData* freeEnergyPerturbationData,
+ bool canMoleculesBeDistributedOverPBC,
+ bool writeFinalConfiguration,
+ const std::string& finalConfigurationFilename,
+ const t_inputrec* inputrec,
+ const t_mdatoms* mdatoms,
+ const gmx_mtop_t* globalTop) :
totalNumAtoms_(numAtoms),
localNAtoms_(0),
+ box_{ { 0 } },
+ previousBox_{ { 0 } },
ddpCount_(0),
+ element_(std::make_unique<Element>(this,
+ fplog,
+ cr,
+ inputrec->nstxout,
+ inputrec->nstvout,
+ inputrec->nstfout,
+ inputrec->nstxout_compressed,
+ freeEnergyPerturbationData,
+ canMoleculesBeDistributedOverPBC,
+ writeFinalConfiguration,
+ finalConfigurationFilename,
+ inputrec,
+ globalTop)),
vvResetVelocities_(false),
isRegularSimulationEnd_(false),
lastStep_(-1),
globalState_(globalState)
{
- // Initialize these here, as box_{{0}} in the initialization list
- // is confusing uncrustify and doxygen
- clear_mat(box_);
- clear_mat(previousBox_);
-
bool stateHasVelocities;
// Local state only becomes valid now.
if (DOMAINDECOMP(cr))
}
}
-StatePropagatorData::Element* StatePropagatorData::element(FILE* fplog,
- const t_commrec* cr,
- int nstxout,
- int nstvout,
- int nstfout,
- int nstxout_compressed,
- FreeEnergyPerturbationData* freeEnergyPerturbationData,
- bool canMoleculesBeDistributedOverPBC,
- bool writeFinalConfiguration,
- std::string finalConfigurationFilename,
- const t_inputrec* inputrec,
- const gmx_mtop_t* globalTop)
-{
- if (!element_)
- {
- element_ = std::make_unique<Element>(
- this, fplog, cr, nstxout, nstvout, nstfout, nstxout_compressed,
- freeEnergyPerturbationData, canMoleculesBeDistributedOverPBC,
- writeFinalConfiguration, std::move(finalConfigurationFilename), inputrec, globalTop);
- }
- else
- {
- GMX_THROW(InconsistentInputError(
- "Attempted to build StatePropagatorData::Element more than once."));
- }
+StatePropagatorData::Element* StatePropagatorData::element()
+{
return element_.get();
}
{
public:
//! Constructor
- StatePropagatorData(int numAtoms,
- const t_commrec* cr,
- t_state* globalState,
- bool useGPU,
- const t_inputrec* inputrec,
- const t_mdatoms* mdatoms);
+ StatePropagatorData(int numAtoms,
+ FILE* fplog,
+ const t_commrec* cr,
+ t_state* globalState,
+ bool useGPU,
+ FreeEnergyPerturbationData* freeEnergyPerturbationData,
+ bool canMoleculesBeDistributedOverPBC,
+ bool writeFinalConfiguration,
+ const std::string& finalConfigurationFilename,
+ const t_inputrec* inputrec,
+ const t_mdatoms* mdatoms,
+ const gmx_mtop_t* globalTop);
// Allow access to state
//! Get write access to position vector
//! The element taking part in the simulator loop
class Element;
//! Get pointer to element (whose lifetime is managed by this)
- Element* element(FILE* fplog,
- const t_commrec* cr,
- int nstxout,
- int nstvout,
- int nstfout,
- int nstxout_compressed,
- FreeEnergyPerturbationData* freeEnergyPerturbationData,
- bool canMoleculesBeDistributedOverPBC,
- bool writeFinalConfiguration,
- std::string finalConfigurationFilename,
- const t_inputrec* inputrec,
- const gmx_mtop_t* globalTop);
+ Element* element();
//! Initial set up for the associated element
void setup();