Graph types
All graphs which can be used with the sampling algorithms belong to a type hierarchy. At the top of the hierarchy, there is AbstractGraph
:
RRRMC.Interface.AbstractGraph
— TypeAbstractGraph{ET<:Real}
An abstract type representing an Ising spin model. The ET
parameter is the type returned by the energy
and delta_energy
functions.
See also SimpleGraph
, DiscrGraph
, SingleGraph
and DoubleGraph
.
There are currently three abstract subclasses and an alias, which determine how the sampling algorithms can be used:
RRRMC.Interface.SimpleGraph
— TypeSimpleGraph{ET} <: AbstractGraph{ET}
An abstract type representing a generic graph.
The ET
parameter is the type returned by energy
and delta_energy
.
RRRMC.Interface.DiscrGraph
— TypeDiscrGraph{ET} <: AbstractGraph{ET}
An abstract type representing a graph in which the delta_energy
values produced when flipping a spin belong to a finite discrete set, and thus can be sampled more efficiently with rrrMC
or bklMC
if the set is small.
The ET
parameter is the type returned by energy
and delta_energy
.
See also allΔE
.
RRRMC.Interface.SingleGraph
— ConstantSingleGraph{ET}
A type alias representing either a SimpleGraph
or a DiscrGraph{ET}
. See also DoubleGraph
.
RRRMC.Interface.DoubleGraph
— TypeDoubleGraph{GT<:SingleGraph,ET} <: AbstractGraph{ET}
An abstract type representing a graph in which the energy is the sum of two contributions, one of which is encoded in a graph of type GT
(see SingleGraph
). This allows rrrMC
to sample values more efficiently.
The ET
parameter is the type returned by the energy
and delta_energy
functions. Note that it can be different from the energy type of the internal GT
object (e.g., one can have a DoubleGraph{DiscrGraph{Int},Float64}
object).
Note: When you declare a type as subtype of this, GT
should not be the concrete type of the inner graph, but either SimpleGraph{T}
or DiscrGraph{T}
for some T
.
See also inner_graph
, delta_energy_residual
and update_cache_residual!
.