Ashkin-Teller Model¶
Three-Color Ashkin-Teller Hamiltonian.
Numerically, this model is treated as embedded Ising models
The Wolff algorithm can only be used for K=<0.5!
Compare Zhu et. al, PRB 91, 224201 (2015) for more details
Note: This Hamiltonian presents an “extreme” use case of MARQOV, where the generic term structure is not used at all! Therefore the general Metropolis and Wolff update algorithms can not be used! Instead the interactions of the model are explicitely coded in the specialized update algorithms below
-
class
AshkinTellerThreeColorMag
¶ - #include <AshkinTellerThreeColor.h>
Magnetization of the Three-Color Ashkin-Teller model.
Public Functions
-
template<class
StateSpace
, classGrid
>
doublemeasure
(const StateSpace &statespace, const Grid &grid)¶ Perform a measurement of the Magnetization.
- Return
A scalar value, the magnetization per site
- Template Parameters
StateSpace
: the type of the state spaceGrid
: the type of the lattice
- Parameters
statespace
: the statespacegrid
: the lattice
-
template<class
-
template<class
StateVector
, classRNG
>
classAshkinTeller_Initializer
¶ - #include <AshkinTellerThreeColor.h>
Dummy function which prints an error if one attempts to use the general Metropolis algorithm.
- Todo:
Find a way that this function is not needed in the first place
- Template Parameters
StateVector
: the type of the state vectorRNG
: the type of the random number generator
Public Functions
-
StateVector
newsv
(const StateVector &svold)¶ Usually specifies how a random new state vector is generated.
In this model it is just a place holder and will not be needed!
-
class
AshkinTellerThreeColor
¶ - #include <AshkinTellerThreeColor.h>
Three-Color Ashkin-Teller Hamiltonian.
Public Functions
-
AshkinTellerThreeColor
(double J, double K)¶ Constructor.
- Parameters
J
: the Ising interactionK
: the Four-spin interaction
-
template<class
StateSpace
, classLattice
, classRNG
>
voidinitstatespace
(StateSpace &statespace, Lattice &grid, RNG &rng) const¶ Specifies how the state space is initialized.
- Template Parameters
StateSpace
: the type of the state spaceLattice
: the type of the latticieRNG
: the type of the random number generator
- Parameters
statespace
: the state spacegrid
: the latticerng
: the random number generator
Public Members
-
double
K
¶ Four-spin interaction strength.
-
const std::string
name
¶
-
std::array<Standard_Interaction<StateVector>*, 1>
interactions
= {new Standard_Interaction<StateVector>(J)}¶
Public Static Attributes
-
constexpr int
SymD
= 3¶ use SymD to encode the three colors of the model
-
-
template<>
classInitializer
<AshkinTellerThreeColor>¶ Private Types
-
typedef AshkinTellerThreeColor::StateVector
StateVector
¶
Private Static Functions
-
template<class
RNGCache
>
StateVectornewsv
(const StateVector&, RNGCache&)¶
-
typedef AshkinTellerThreeColor::StateVector
-
namespace
MARQOV
¶ The MARQOV namespace.
This namespace collects all things that are related to MARQOV.
-
template<class
Lattice
>
classEmbedder
<AshkinTellerThreeColor, Lattice>¶ Public Functions
-
Embedder
(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)¶
-
template<class
RNG
>
voiddraw
(RNG &rng, StateVector &sv)¶
-
double
coupling
(int pos1, int pos2) const¶
-
void
flip
(StateVector &sv)¶
Private Types
-
typedef AshkinTellerThreeColor
Hamiltonian
¶
-
typedef Hamiltonian::StateVector
StateVector
¶
-
typedef Space<StateVector, Lattice>
StateSpace
¶
Private Static Attributes
-
constexpr int
SymD
= Hamiltonian::SymD¶
-
-
template<class
Lattice
>
structMetropolis
<AshkinTellerThreeColor, Lattice>¶ - #include <AshkinTellerThreeColor.h>
Specialized Metropolis algorithm for the Ashkin-Teller Hamiltonian.
- Template Parameters
Lattice
: type of the lattice
Public Types
-
typedef AshkinTellerThreeColor::StateVector
StateVector
¶
-
typedef int
ReducedStateVector
¶
Public Static Functions
-
double
metro_coupling
(StateVector &sv1, StateVector &sv2, int color, const AshkinTellerThreeColor &ham)¶
-
ReducedStateVector
metro_newconf
(ReducedStateVector &rsv)¶
-
void
metro_flip
(StateVector &sv, const int color)¶
-
template<class
StateSpace
, classRNG
>
intmove
(const AshkinTellerThreeColor &ham, const Lattice &grid, StateSpace &statespace, RNG &rng, double beta, int rsite)¶
-
template<class