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 Types

typedef std::array<SpinType, SymD> StateVector

Public Functions

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

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

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>
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.

Private Types

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

Private Members

const Hamiltonian &ham
const Lattice &lat
StateSpace &statespace