Traits

LatticeCore uses small value types (Holy traits) to express optional capabilities and invariants without inflating the concrete lattice's type parameters. See Lattice interface for where each trait is consumed.

Topology

LatticeCore.TopologyTraitType
TopologyTrait{Name}

Singleton trait carrying the topology name as a type parameter (e.g. TopologyTrait{:Square}, TopologyTrait{:Honeycomb}, TopologyTrait{:Penrose}). Used for dispatch in topology-specific helpers such as high-symmetry-point tables.

source

Periodicity

Reciprocal-space support

Size

LatticeCore.AbstractSizeTraitType
AbstractSizeTrait

Trait describing whether a lattice has a finite, infinite, or finitely-materializable-but-conceptually-infinite extent.

Subtypes:

  • FiniteSize: ordinary finite lattice.
  • InfiniteSize: true infinite lattice (used for analytic/spectral work; MC is not applicable).
  • QuasiInfiniteSize: conceptually infinite but materialized up to a cutoff (e.g. Penrose radius, Fibonacci depth).
source
LatticeCore.FiniteSizeType
FiniteSize{D}(dims::NTuple{D, Int})

Size trait for an ordinary finite lattice with the given per-axis cell counts.

source
LatticeCore.InfiniteSizeType
InfiniteSize()

Size trait for a true infinite lattice. MC cannot run on such a lattice; spectral / analytic calculations only.

source
LatticeCore.QuasiInfiniteSizeType
QuasiInfiniteSize{T}(cutoff::T)

Size trait for a conceptually infinite lattice that has been (or will be) materialized up to a finite cutoff. The cutoff may represent a radius, a substitution depth, or any other scale parameter native to the lattice family.

source