Metropolis

This is the basic single spin flip Metropolis rule.

template<class Hamiltonian, class Lattice>
struct Metropolis

A class to encapsulate the Metropolis update.

Using the power of partial template class specializations it is possible to define moves peculiar to your model.

Template Parameters:
  • Hamiltonian – The Hamiltonian used to generate a Metropolis move

  • Lattice – The lattice used for the neighbourhood relations.

Public Static Functions

template<class StateSpace, class RNGType>
static int move(const Hamiltonian &ham, const Lattice &grid, StateSpace &statespace, RNGCache<RNGType> &rng, double beta, int rsite)

The actual Metropolis move attempt.

The behaviour of the basic local MARQOV step, how to generate a new state vector from an old one, can be set by the initializers,

See also

initializers.h

Template Parameters:
  • Hamiltonian – the type of the Hamiltonian

  • Lattice – the type of the lattice

  • StateSpace – the type of the state space

  • M – the type of the initializer

  • RNG – the type of the random number generator

Parameters:
  • ham – the Hamiltonian

  • grid – the lattice

  • statespace – the statespace

  • rng – the random number generator

  • beta – inverse temperature

  • rsite – site to be considered for an update

Returns:

integer, encoding whether the update was accepted or rejected