AbstractLattice API

Auto-generated reference for the AbstractLattice interface. See Lattice interface for the narrative version and Lattices and unit cells for the physical background.

Abstract type

LatticeCore.AbstractLatticeType
AbstractLattice{D, T}

Abstract supertype for lattice types. Type parameters:

  • D: spatial dimension (integer literal)
  • T: numeric type for real-space positions (typically Float64)

Required interface (concrete subtypes must implement)

  • position(lat, i)::SVector{D, T}
  • neighbors(lat, i) — iterable of neighbor site indices
  • boundary(lat) — returns an AbstractBoundaryCondition
  • size_trait(lat)::AbstractSizeTrait
  • num_sites(lat)::Int — required for FiniteSize / QuasiInfiniteSize lattices; InfiniteSize lattices should throw DomainError.

Optional interface (defaults provided)

  • positions(lat) — defaults to an iterator built from position
  • bonds(lat) — defaults to an iterator built from neighbors
  • neighbor_bonds(lat, i) — defaults to an iterator built from neighbors
  • topology(lat)TopologyTrait{:unknown}()
  • periodicity(lat)Aperiodic()
  • is_bipartite(lat)false
  • reciprocal_support(lat)NoReciprocal()
  • is_finite(lat) — derived from size_trait

See dev/note/04_architecture/02_lattice_interface/README.md for the design rationale.

source

Required interface

LatticeCore.num_sitesFunction
num_sites(lat::AbstractLattice)::Int

Number of sites in the lattice. Must be implemented by finite concrete types. InfiniteSize lattices should throw DomainError.

source
Base.positionFunction
position(lat::AbstractLattice{D, T}, i::Int)::SVector{D, T}

Real-space position of site i. This extends Base.position so that downstream code can write position(lat, i) directly after using LatticeCore.

source
LatticeCore.neighborsFunction
neighbors(lat::AbstractLattice, i::Int)

Indices of sites adjacent to site i (nearest neighbors by default). Concrete types may additionally define neighbors(lat, i; shell) or neighbors(lat, i, shell::Int) to support higher shells.

source
LatticeCore.boundaryFunction
boundary(lat::AbstractLattice)

The lattice's boundary condition (subtype of AbstractBoundaryCondition, defined in BoundaryCondition.jl).

source
LatticeCore.size_traitFunction
size_trait(lat::AbstractLattice) → AbstractSizeTrait

Size trait describing the lattice's extent. Must be implemented by concrete types.

source
LatticeCore.site_layoutFunction
site_layout(lat::AbstractLattice) → AbstractSiteLayout

Return the lattice's site layout. Concrete lattices must either implement this method directly or hold an AbstractSiteLayout in a field of that name.

source

Derived / default helpers

LatticeCore.positionsFunction
positions(lat::AbstractLattice)

Iterator over all positions. Default implementation lazily constructs from num_sites and position; works only for finite lattices. Concrete types may override for efficiency.

source
LatticeCore.is_finiteFunction
is_finite(lat::AbstractLattice) → Bool

true if size_trait(lat) is a FiniteSize. Monte Carlo algorithms should guard against non-finite lattices with this predicate.

source
LatticeCore.num_sublatticesFunction
num_sublattices(lat::AbstractLattice) → Int

Number of geometric sublattices in the lattice. Defaults to 1 so lattices that are not sublattice-aware need not override.

source