Blume-Capel Model
-
template<typename SpinType = int>
class BlumeCapel - #include <BlumeCapel.h>
The Blume-Capel Hamiltonian.
- Template Parameters:
SpinType – the type of the state vector
Public Functions
-
inline BlumeCapel(double J, double D)
Constructor of the Blume-Capel model.
- Parameters:
J – standard interaction parameter
D – zero-field splitting parameter
Public Members
-
double J
-
double D
-
const std::string name
-
std::array<Standard_Interaction<StateVector>*, 1> interactions = {new Standard_Interaction<StateVector>(J)}
-
std::array<Onsite_Quadratic<StateVector>*, 1> onsite = {new Onsite_Quadratic<StateVector>(D)}
-
Magnetization obs_m
-
std::tuple<Magnetization> observables
Public Static Attributes
-
static constexpr int SymD = 1
-
template<typename SpinType>
class Initializer<BlumeCapel<SpinType>> : public Spin1_Initializer<BlumeCapel<SpinType>::StateVector>
-
namespace MARQOV
The MARQOV namespace.
This namespace collects all things that are related to MARQOV.
-
template<class SpinType, class Lattice>
class Embedder<BlumeCapel<SpinType>, Lattice> - #include <BlumeCapel.h>
Specialization of the Embedding class for the Blume Capel model.
- Template Parameters:
SpinType – the type of the spin
Lattice – the type of the lattice
Public Functions
-
inline Embedder(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)
Constructs a Blume Capel 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.
Private Types
-
typedef BlumeCapel<SpinType> Hamiltonian
-
typedef Hamiltonian::StateVector StateVector
-
typedef MARQOV::Space<StateVector, Lattice> StateSpace
-
template<class SpinType, class Lattice>