faunus
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Faunus::move::ForceMove Class Reference

Base class for force moves, e.g., molecular dynamics or Langevin dynamics. More...

#include <forcemove.h>

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

Public Member Functions

double bias (Change &, double, double) override
 Extra energy not captured by the Hamiltonian. More...
 
const PointVectorgetForces () const
 
const PointVectorgetVelocities () const
 
- Public Member Functions inherited from Faunus::move::Move
void from_json (const json &j)
 
void to_json (json &j) const
 JSON report w. statistics, output etc.
 
void move (Change &change)
 Perform move and modify given change object.
 
void accept (Change &change)
 
void reject (Change &change)
 
void setRepeat (int repeat)
 
 Move (Space &spc, std::string_view name, std::string_view cite)
 
bool isStochastic () const
 True if move should be called stochastically.
 
const std::string & getName () const
 

Protected Member Functions

size_t resizeForcesAndVelocities ()
 Resize velocities and forces to match number of active particles. More...
 
void generateVelocities ()
 Generate initial velocities and zero forces. More...
 
void _to_json (json &j) const override
 Extra info for report if needed.
 
void _from_json (const json &j) override
 Extra info for report if needed.
 
void _move (Change &change) override
 Perform move and modify change object.
 
 ForceMove (Space &spc, const std::string &name, const std::string &cite, std::shared_ptr< IntegratorBase > integrator, unsigned int nsteps)
 

Protected Attributes

std::shared_ptr< IntegratorBaseintegrator
 
unsigned int number_of_steps
 number of integration steps to perform during a single MC move
 
PointVector velocities
 Vector of velocities matching each active particle in Space.
 
PointVector forces
 Vector of forces matching each active particle in Space.
 
- Protected Attributes inherited from Faunus::move::Move
const std::string name
 Name of move.
 
Spacespc
 Space to operate on.
 
int repeat = 1
 
unsigned long number_of_attempted_moves = 0
 Counter for total number of move attempts.
 

Additional Inherited Members

- Static Public Attributes inherited from Faunus::move::Move
static Random slump
 Shared for all moves.
 

Detailed Description

Base class for force moves, e.g., molecular dynamics or Langevin dynamics.

Orchestrate execution of integrators, thermostats, etc. Store vectors for velocities and forces, which are not part of the particle vector in the space.

Member Function Documentation

◆ bias()

double Faunus::move::ForceMove::bias ( Change change,
double  old_energy,
double  new_energy 
)
overridevirtual

Extra energy not captured by the Hamiltonian.

This can be used to introduce an extra energy change that will be added to the total trial energy in the Metropolis acceptance criterion.

Typically used to include bias not contained in Energy::Hamiltonian.

Parameters
changeChange made to the system
old_energyEnergy from hamiltonian before the change (kT)
new_energyEnergy from hamiltonian after the change (kT)
Returns
Energy due to custom bias from the particular move (kT)

Reimplemented from Faunus::move::Move.

◆ generateVelocities()

void Faunus::move::ForceMove::generateVelocities ( )
protected

Generate initial velocities and zero forces.

Note
: omitting explicit return type in the std::transform lambda below can in some compiler settings lead to a dangling Point& reference being returned. Observed with Clang10/RelWithDebInfo, but not in Debug, or with GCC.

◆ resizeForcesAndVelocities()

size_t Faunus::move::ForceMove::resizeForcesAndVelocities ( )
protected

Resize velocities and forces to match number of active particles.

Returns
Number of activate particles

Upon resizing, new elements in forces and velocities are zeroed.


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