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, class Grid>
inline double measure(const StateSpace &statespace, const Grid &grid) Perform a measurement of the Magnetization.
- Template Parameters:
StateSpace – the type of the state space
Grid – the type of the lattice
- Parameters:
statespace – the statespace
grid – the lattice
- Returns:
A scalar value, the magnetization per site
-
template<class StateSpace, class Grid>
-
template<class StateVector, class RNG>
class AshkinTeller_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 vector
RNG – the type of the random number generator
Public Functions
-
inline 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
-
inline AshkinTellerThreeColor(double J, double K)
Constructor.
- Parameters:
J – the Ising interaction
K – the Four-spin interaction
-
template<class StateSpace, class Lattice, class RNG>
inline void initstatespace(StateSpace &statespace, Lattice &grid, RNG &rng) const Specifies how the state space is initialized.
- Template Parameters:
StateSpace – the type of the state space
Lattice – the type of the latticie
RNG – the type of the random number generator
- Parameters:
statespace – the state space
grid – the lattice
rng – 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
-
static constexpr int SymD = 3
use SymD to encode the three colors of the model
-
inline AshkinTellerThreeColor(double J, double K)
-
template<>
class Initializer<AshkinTellerThreeColor> Private Types
-
typedef AshkinTellerThreeColor::StateVector StateVector
Private Static Functions
-
template<class RNGCache>
static inline StateVector newsv(const StateVector&, RNGCache&)
-
typedef AshkinTellerThreeColor::StateVector StateVector
-
namespace MARQOV
The MARQOV namespace.
This namespace collects all things that are related to MARQOV.
-
template<class Lattice>
class Embedder<AshkinTellerThreeColor, Lattice> Public Functions
-
inline Embedder(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)
-
template<class RNG>
inline void draw(RNG &rng, StateVector &sv)
-
inline double coupling(int pos1, int pos2) const
-
inline void flip(StateVector &sv)
Private Types
-
typedef AshkinTellerThreeColor Hamiltonian
-
typedef Hamiltonian::StateVector StateVector
-
typedef Space<StateVector, Lattice> StateSpace
Private Static Attributes
-
static constexpr int SymD = Hamiltonian::SymD
-
inline Embedder(const Hamiltonian &ham, const Lattice &lat, StateSpace &statespace)
-
template<class Lattice>
struct Metropolis<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
-
static inline double metro_coupling(StateVector &sv1, StateVector &sv2, int color, const AshkinTellerThreeColor &ham)
-
static inline ReducedStateVector metro_newconf(ReducedStateVector &rsv)
-
static inline void metro_flip(StateVector &sv, const int color)
-
template<class StateSpace, class RNG>
static inline int move(const AshkinTellerThreeColor &ham, const Lattice &grid, StateSpace &statespace, RNG &rng, double beta, int rsite)
-
template<class Lattice>