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.TopologyTrait — Type
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.
LatticeCore.topology — Function
Default topology trait: TopologyTrait{:unknown}().
Periodicity
LatticeCore.Periodic — Type
Periodicity trait marker for Bravais-lattice-like structures.
LatticeCore.Aperiodic — Type
Periodicity trait marker for aperiodic structures (e.g. quasicrystals).
LatticeCore.periodicity — Function
Default periodicity: Aperiodic().
LatticeCore.is_bipartite — Function
Default bipartite flag: false.
Reciprocal-space support
LatticeCore.AbstractReciprocalSupport — Type
AbstractReciprocalSupportTrait indicating what kind of k-space representation a lattice admits.
Subtypes:
HasReciprocal: standard Bravais reciprocal lattice.HasFourierModule: dense Fourier module arising from a cut-and-project quasicrystal.NoReciprocal: neither of the above (e.g. generic graph).
LatticeCore.HasReciprocal — Type
Trait: the lattice has a standard Bravais reciprocal lattice.
LatticeCore.HasFourierModule — Type
Trait: the lattice has a Fourier module (quasicrystal).
LatticeCore.NoReciprocal — Type
Trait: the lattice has no k-space representation.
LatticeCore.reciprocal_support — Function
Default reciprocal support: NoReciprocal().
Size
LatticeCore.AbstractSizeTrait — Type
AbstractSizeTraitTrait 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).
LatticeCore.FiniteSize — Type
FiniteSize{D}(dims::NTuple{D, Int})Size trait for an ordinary finite lattice with the given per-axis cell counts.
LatticeCore.InfiniteSize — Type
InfiniteSize()Size trait for a true infinite lattice. MC cannot run on such a lattice; spectral / analytic calculations only.
LatticeCore.QuasiInfiniteSize — Type
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.