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>
classBiquadraticExchangeInteraction¶ Public Functions
-
BiquadraticExchangeInteraction(double k)¶
-
template<class
StateSpace>
doublediff(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>
doubleenergy(const StateSpace &statespace, const typename StateSpace::Lattice &grid, int c)¶
Public Members
-
double
k¶ Scalar Prefactor.
-
-
template<typename
SpinType= int>
classBlumeEmeryGriffiths¶ -
Public Functions
-
BlumeEmeryGriffiths(double J, double D, double K)¶
-
template<class
StateSpace, classLattice, classRNG>
voidinitstatespace(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>
classInitializer<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, classLattice>
classEmbedder<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 Hamiltonianlat: The corresponding latticestatespace: The statespace of the simulation
-
template<class
RNG>
voiddraw(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¶
-
-
template<class