\(\phi^4\) Model
-
template<class StateVector>
class Phi4_Initializer_Radial Public Static Functions
-
template<class RNGCache>
static inline StateVector newsv(const StateVector &osv, RNGCache &rng)
-
template<class RNGCache>
-
template<class StateVector>
class Phi4_Initializer_Cartesian Public Static Functions
-
template<class RNGCache>
static inline StateVector newsv(const StateVector &osv, RNGCache &rng)
Public Static Attributes
-
static constexpr int SymD = std::tuple_size<StateVector>::value
-
template<class RNGCache>
-
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
-
inline Onsite_Fourth_Minus_One(double constant)
-
inline virtual 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 Functions
-
inline Phi4(double beta, double lambda, double mass)
-
inline std::string paramname(int i)
Allows to give the Hamiltonian parameter names.
- Parameters:
i – index of the parameter
- Returns:
the parameter name (string)
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
Public Static Attributes
-
static 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
-
inline 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>
inline 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
-
inline double coupling(int pos1, int pos2) const
Computes the Wolff coupling when attempting to add a spin to the cluster.
- 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)
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 Static Attributes
-
static constexpr int SymD = Hamiltonian::SymD
-
template<class SpinType, class CouplingType, class Lattice>