#include "andersentemperaturecoupling.h"
#include "computeglobalselement.h"
#include "constraintelement.h"
+#include "expandedensembleelement.h"
#include "firstorderpressurecoupling.h"
#include "forceelement.h"
#include "mttk.h"
#include "nosehooverchains.h"
#include "parrinellorahmanbarostat.h"
+#include "pullelement.h"
#include "simulatoralgorithm.h"
#include "statepropagatordata.h"
#include "velocityscalingtemperaturecoupling.h"
{
builder->add<ConstraintsElement<ConstraintVariable::Positions>>();
}
+
+ if (legacySimulatorData_->inputrec->bPull)
+ {
+ builder->add<PullElement>();
+ }
+
builder->add<ComputeGlobalsElement<ComputeGlobalsAlgorithm::LeapFrog>>();
if (legacySimulatorData_->inputrec->epc == PressureCoupling::ParrinelloRahman)
{
builder->add<ConstraintsElement<ConstraintVariable::Velocities>>();
}
builder->add<ComputeGlobalsElement<ComputeGlobalsAlgorithm::VelocityVerlet>>();
+ // Here, we have x / v / f at the full time step
builder->add<StatePropagatorData::Element>();
+ if (legacySimulatorData_->inputrec->bExpanded)
+ {
+ builder->add<ExpandedEnsembleElement>();
+ }
if (legacySimulatorData_->inputrec->etc == TemperatureCoupling::VRescale
|| legacySimulatorData_->inputrec->etc == TemperatureCoupling::Berendsen)
{
{
builder->add<ConstraintsElement<ConstraintVariable::Positions>>();
}
+
+ if (legacySimulatorData_->inputrec->bPull)
+ {
+ builder->add<PullElement>();
+ }
+
builder->add<ComputeGlobalsElement<ComputeGlobalsAlgorithm::VelocityVerlet>>();
if (legacySimulatorData_->inputrec->epc == PressureCoupling::ParrinelloRahman)
{
}
// We have a full state at time t here
builder->add<StatePropagatorData::Element>();
+ if (legacySimulatorData_->inputrec->bExpanded)
+ {
+ builder->add<ExpandedEnsembleElement>();
+ }
// Propagate extended system variables from t to t+dt/2
if (legacySimulatorData_->inputrec->epc == PressureCoupling::Mttk)
{
builder->add<ConstraintsElement<ConstraintVariable::Positions>>();
}
+
+ if (legacySimulatorData_->inputrec->bPull)
+ {
+ builder->add<PullElement>();
+ }
+
builder->add<ComputeGlobalsElement<ComputeGlobalsAlgorithm::VelocityVerlet>>();
// Propagate box from t to t+dt
&& conditionalAssert(!doRerun, "Rerun is not supported by the modular simulator.");
isInputCompatible =
isInputCompatible
- && conditionalAssert(inputrec->efep == FreeEnergyPerturbationType::No
- || inputrec->efep == FreeEnergyPerturbationType::Yes
- || inputrec->efep == FreeEnergyPerturbationType::SlowGrowth,
- "Expanded ensemble free energy calculation is not "
- "supported by the modular simulator.");
- isInputCompatible = isInputCompatible
- && conditionalAssert(!inputrec->bPull,
- "Pulling is not supported by the modular simulator.");
- isInputCompatible =
- isInputCompatible
- && conditionalAssert(inputrec->cos_accel == 0.0,
+ && conditionalAssert(!inputrec->useConstantAcceleration && inputrec->cos_accel == 0.0,
"Acceleration is not supported by the modular simulator.");
isInputCompatible =
isInputCompatible
isInputCompatible
&& conditionalAssert(!inputrec->bSimTemp,
"Simulated tempering is not supported by the modular simulator.");
- isInputCompatible = isInputCompatible
- && conditionalAssert(!inputrec->bExpanded,
- "Expanded ensemble simulations are not supported by "
- "the modular simulator.");
isInputCompatible =
isInputCompatible
&& conditionalAssert(!doEssentialDynamics,