\(\phi^4\) Model

template<class StateVector>
class Phi4_Initializer_Radial

Public Static Functions

template<class RNGCache>
StateVector newsv(const StateVector &osv, RNGCache &rng)
template<class StateVector>
class Phi4_Initializer_Cartesian

Public Static Functions

template<class RNGCache>
StateVector newsv(const StateVector &osv, RNGCache &rng)

Public Static Attributes

static constexpr int SymD = std::tuple_size<StateVector>::value
template<class StateVector>
class Onsite_Fourth_Minus_One : public OnSite<StateVector, double>
#include <Phi4.h>

A possible implementation of a fourth-power on-site term.

This is specific to the Phi4 model

Template Parameters
  • StateVector: the type of the state vector

Public Functions

Onsite_Fourth_Minus_One(double constant)
double get(const StateVector &phi)
template<typename SpinType, typename CouplingType = double>
class Phi4
#include <Phi4.h>

Phi4 Hamiltonian.

This defines a O(N) Hamiltonian with additional mass and fourth-order term

Template Parameters
  • SpinType: the type in which to store the magnetization values.

  • CouplingType: the type in which to store the coupling constants of the on-site terms

Public Types

typedef std::array<SpinType, SymD> StateVector

Public Functions

Phi4(double beta, double lambda, double mass)
std::string paramname(int i)

Allows to give the Hamiltonian parameter names.

Return

the parameter name (string)

Parameters
  • i: index of the parameter

Public Members

double beta
double lambda
double mass
const double J = -1
const std::string name = "Phi4"
Standard_Interaction<StateVector> phi4interaction
Onsite_Quadratic<StateVector> onsite_standard
Onsite_Fourth_Minus_One<StateVector> onsite_fourth_minus_one
std::array<Standard_Interaction<StateVector>*, 1> interactions = {new Standard_Interaction<StateVector>(J)}
std::vector<OnSite<StateVector, CouplingType>*> onsite
Magnetization obs_m
MagFTComp obs_fx
MagFTComp obs_fy
MagFTComp obs_fz
decltype(std::make_tuple(obs_m, obs_fx, obs_fy, obs_fz)) observables = {std::make_tuple(obs_m, obs_fx, obs_fy, obs_fz)}

Public Static Attributes

constexpr int SymD = 3
template<>
class Initializer<Phi4<double, double>> : public Phi4_Initializer_Radial<Phi4<double, double>::StateVector>
namespace MARQOV

The MARQOV namespace.

This namespace collects all things that are related to MARQOV.

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

Specialization of the Embedding class for the Phi4 model.

Template Parameters
  • SpinType: the type in which to store the magnetization values.

  • CouplingType: the type of the coupling of the on-site term (in case there is one)

Public Functions

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

Constructs a Heisenberg 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) noexcept

Set new embedding variable.

Typically, this function is executed once before every cluster update. The variable can be drawn randomly (for which case an RNG is provided), but of course can also follow some sequential scheme.

Template Parameters
  • RNG: the type of the random number generator

Parameters
  • rng: reference to the random number generator

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)

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)

Specifies how a spin flip in the embedded (reduced) model is performed.

Parameters
  • sv: the spin to flipped

Private Types

typedef Phi4<SpinType, CouplingType> Hamiltonian
typedef Hamiltonian::StateVector StateVector
typedef Space<typename Hamiltonian::StateVector, Lattice> StateSpace

Private Members

const Hamiltonian &ham
const Lattice &lat
const StateSpace &statespace
std::array<SpinType, SymD> rdir

Private Static Attributes

constexpr int SymD = Hamiltonian::SymD