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
-
inline BiquadraticExchangeInteraction(double k)
-
template<class StateSpace>
inline 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>
inline double energy(const StateSpace &statespace, const typename StateSpace::Lattice &grid, int c)
Public Members
-
double k
Scalar Prefactor.
-
inline BiquadraticExchangeInteraction(double k)
-
template<typename SpinType = int>
class BlumeEmeryGriffiths -
Public Functions
-
inline BlumeEmeryGriffiths(double J, double D, double K)
-
template<class StateSpace, class Lattice, class RNG>
inline 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
-
static constexpr int SymD = 1
-
inline BlumeEmeryGriffiths(double J, double D, double K)
-
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
-
inline 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>
inline void draw(RNG &rng, StateVector &sv) Set new embedding variable.
Note
For this specific model this is not necessary, as the embedding is fixed
-
inline double coupling(int pos1, int pos2) const
Computes the Wolff coupling when attempting to add a spin to the cluster.
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
- Returns:
The scalar Wolff coupling (a double)
-
inline 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
-
inline Embedder(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)
-
template<class SpinType, class Lattice>