Orrery
A GPU-accelerated N-body gravitational simulator
Loading...
Searching...
No Matches
orrery::integrators::VelocityVerlet Class Referencefinal

The second-order symplectic integrator described above. More...

#include <orrery/integrators/velocity_verlet.hpp>

Inheritance diagram for orrery::integrators::VelocityVerlet:
orrery::integrators::Integrator

Public Member Functions

void step (core::ParticleData &data, core::Real timestep, AccelerationField &field) override
 Advance the configuration by one step of timestep.
std::string_view name () const noexcept override
 The method's name, for diagnostics output and test messages.
int order () const noexcept override
 The order of the method: the power of the timestep that the error after a fixed interval of simulated time falls with.
bool is_symplectic () const noexcept override
 Whether the method preserves the phase-space volume of the flow.
core::Index force_evaluations_per_step () const noexcept override
 How many times step calls the acceleration field.

Additional Inherited Members

Protected Member Functions inherited from orrery::integrators::Integrator
 Integrator (const Integrator &)=default
 Integrator (Integrator &&)=default
Integrator & operator= (const Integrator &)=default
Integrator & operator= (Integrator &&)=default

Detailed Description

The second-order symplectic integrator described above.

Member Function Documentation

◆ step()

void orrery::integrators::VelocityVerlet::step ( core::ParticleData & data,
core::Real timestep,
AccelerationField & field )
overridevirtual

Advance the configuration by one step of timestep.

Requires the invariant above and restores it. A negative timestep is meaningful and is not an error: the symmetric methods here are exactly time-reversible, and stepping backwards is how a test asserts it.

Implements orrery::integrators::Integrator.

◆ name()

std::string_view orrery::integrators::VelocityVerlet::name ( ) const
inlinenodiscardoverridevirtualnoexcept

The method's name, for diagnostics output and test messages.

Implements orrery::integrators::Integrator.

◆ order()

int orrery::integrators::VelocityVerlet::order ( ) const
inlinenodiscardoverridevirtualnoexcept

The order of the method: the power of the timestep that the error after a fixed interval of simulated time falls with.

Implements orrery::integrators::Integrator.

◆ is_symplectic()

bool orrery::integrators::VelocityVerlet::is_symplectic ( ) const
inlinenodiscardoverridevirtualnoexcept

Whether the method preserves the phase-space volume of the flow.

The property that decides whether the energy error stays inside a bounded envelope for ever or grows without limit, which for a simulation run over millions of steps matters more than the order does. ADR-0011 sets out the argument and the validation suite demonstrates it.

Implements orrery::integrators::Integrator.

◆ force_evaluations_per_step()

core::Index orrery::integrators::VelocityVerlet::force_evaluations_per_step ( ) const
inlinenodiscardoverridevirtualnoexcept

How many times step calls the acceleration field.

The honest unit of cost for comparing methods. Two schemes compared at equal timestep are not compared at equal work, and this is the number that converts between them.

Implements orrery::integrators::Integrator.


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