faunus
Public Member Functions | List of all members
Faunus::move::LangevinVelocityVerlet Class Reference

Symmetric Langevin velocity-Verlet method (BAOAB) More...

#include <forcemove.h>

Inheritance diagram for Faunus::move::LangevinVelocityVerlet:
Inheritance graph
[legend]
Collaboration diagram for Faunus::move::LangevinVelocityVerlet:
Collaboration graph
[legend]

Public Member Functions

 LangevinVelocityVerlet (Space &spc, Energy::EnergyTerm &energy)
 
 LangevinVelocityVerlet (Space &spc, Energy::EnergyTerm &energy, double time_step, double friction_coefficient)
 
 LangevinVelocityVerlet (Space &spc, Energy::EnergyTerm &energy, const json &j)
 
void step (PointVector &velocities, PointVector &forces) override
 
void from_json (const json &j) override
 
void to_json (json &j) const override
 

Additional Inherited Members

- Protected Member Functions inherited from Faunus::move::IntegratorBase
 IntegratorBase (Space &, Energy::EnergyTerm &)
 
- Protected Attributes inherited from Faunus::move::IntegratorBase
Spacespc
 
Energy::EnergyTermenergy
 

Detailed Description

Symmetric Langevin velocity-Verlet method (BAOAB)

The integrator can conduct normal velocity-Verlet, when friction_coefficient = 0.

Member Function Documentation

◆ step()

void Faunus::move::LangevinVelocityVerlet::step ( PointVector velocities,
PointVector forces 
)
overridevirtual
Parameters
velocitiesVector of velocities
forcesVector of forces
Note
Using rangesv3, raw loops can be avoided and allow for future c++17 execution policies:
auto rng = zip(spc.p, velocities, forces);
for (auto&& [particle, velicity, force] : rng) { ... };
std::for_each(rng.begin(), rng.end(), [](auto &&tuple){
    auto&& [particle, velicity, force] = tuple;
    ...
}};
Todo:
Splitting scheme still hard-coded to 'BAOAB'

Implements Faunus::move::IntegratorBase.


The documentation for this class was generated from the following files: