Blume-Emery-Griffiths Model

The Blume Emergy Griffiths (BEG) Hamiltonian.

introduced in M. Blume, V. J. Emery, and R. B. Griftiths, Phys. Rev. A 4, 1071 (1971) phase diagram: L. Wang, F. Lee, and J. D. Kimel, Phys. Rev. B 36, 8945 (1987)

template<class StateVector>
class BiquadraticExchangeInteraction

Public Functions

BiquadraticExchangeInteraction(double k)
template<class StateSpace>
double diff(const int rsite, const StateVector &svold, const StateVector &svnew, const decltype(std::declval<typename StateSpace::Lattice>().nbrs(0, 0)) &nbrs, StateSpace &s)
template<class StateSpace>
double energy(const StateSpace &statespace, const typename StateSpace::Lattice &grid, int c)

Public Members

double k

Scalar Prefactor.

template<typename SpinType = int>
class BlumeEmeryGriffiths

Public Types

typedef std::array<SpinType, SymD> StateVector

Public Functions

BlumeEmeryGriffiths(double J, double D, double K)
template<class StateSpace, class Lattice, class RNG>
void initstatespace(StateSpace &statespace, Lattice &grid, RNG &rng) const

Public Members

const std::string name
Standard_Interaction<StateVector> standard_int
Onsite_Quadratic<StateVector> onsite_int
BiquadraticExchangeInteraction<StateVector> biquadratic_exchange_int
std::array<Standard_Interaction<StateVector>*, 1> interactions = {&standard_int}
std::array<Onsite_Quadratic<StateVector>*, 1> onsite = {&onsite_int}
std::array<decltype(biquadratic_exchange_int)*, 1> multisite = {&biquadratic_exchange_int}
Magnetization obs_m
std::tuple<Magnetization> observables

Public Static Attributes

constexpr int SymD = 1
template<typename SpinType>
class Initializer<BlumeEmeryGriffiths<SpinType>> : public Spin1_Initializer<BlumeEmeryGriffiths<SpinType>::StateVector>
namespace MARQOV

The MARQOV namespace.

This namespace collects all things that are related to MARQOV.

template<class SpinType, class Lattice>
class Embedder<BlumeEmeryGriffiths<SpinType>, Lattice>
#include <BlumeEmeryGriffiths.h>

Specialization of the Embedding class for the Blume Capel model.

Public Functions

Embedder(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)

Constructs a BEG embedding object.

Parameters
  • ham: The corresponding Hamiltonian

  • lat: The corresponding lattice

  • statespace: The statespace of the simulation

template<class RNG>
void draw(RNG &rng, StateVector &sv)

Set new embedding variable.

Note

For this specific model this is not necessary, as the embedding is fixed

double coupling(int pos1, int pos2) const

Computes the Wolff coupling when attempting to add a spin to the cluster.

Return

The scalar Wolff coupling (a double)

Note

For this model, only clusters on the subset of +1/-1 spins are created. Spin-0 site are left untouched. The update will hence not be ergodic!

Parameters
  • pos1: The position (index) of the current state vector (which is already in the cluster)

  • pos2: The position (index) of a neighbour being checked whether it will become part of the cluster as well

void flip(StateVector &sv) const

Specifies how a spin flip is performed.

Parameters
  • sv: The statevector that is flipped.

Private Types

typedef BlumeEmeryGriffiths<SpinType> Hamiltonian
typedef Hamiltonian::StateVector StateVector
typedef MARQOV::Space<typename Hamiltonian::StateVector, Lattice> StateSpace

Private Members

const Hamiltonian &ham
const Lattice &lat
StateSpace &statespace