Predictor-corrector integrator with Langevin noise

class mdk::LangPredictorCorrector : public mdk::Integrator

Langevin predictor-corrector fifth-order integrator, combined with a Langevin noise. Apparently these two are combined because in the Fortran code, the velocities are set in lang or lang_mass. Now, this looks like a bug, but we replicate it nonetheless.

Public Functions

inline explicit LangPredictorCorrector(double dt)
virtual void bind(Simulation &simulation) override

Bind an object to a simulation.

Parameters

simulationSimulation to bind the object to.

virtual void init() override

Initialize the state of the integrator.

virtual void integrate() override

Public Members

double gamma = 2.0 * f77mass / tau

Value of gamma for the Langevin noise.

Private Functions

void generateNoise()

Private Members

double dt
Masses m
Vectors y0
Vectors y1
Vectors y2
Vectors y3
Vectors y4
Vectors y5
Random *random = nullptr
std::vector<Random> rngs
Vectors gaussianNoise
bool initialized = false
double temperature = 0.35 * eps_kB