← Works

LatticeCore.jl

量子多体シミュレーション向けの抽象格子インターフェース

FoundationLattice SuiteJuliaJulia ≥ 1.10

LatticeCore is the interface layer for a family of Julia packages that simulate physical systems on geometric lattices. It defines the types and trait vocabulary that every lattice — periodic or aperiodic, finite or conceptually infinite — must implement, then ships a pair of reference implementations (LineLattice, SimpleSquareLattice) and a momentum-space layer so the interface is verifiable end-to-end without any other dependency.

Highlights

  • AbstractLattice{D, T} with trait-based extension (TopologyTrait, Periodic / Aperiodic, is_bipartite, reciprocal_support, size_trait).
  • Per-axis boundary conditions (PeriodicAxis, OpenAxis, TwistedAxis) composed into a LatticeBoundary. Mixed BCs (cylinders) are first-class.
  • Coordinate system and indexing split: RealSpace, LatticeCoord, HigherDimCoord, plus RowMajor / ColMajor / Snake strategies decoupled from coordinates.
  • Site types (IsingSite, PottsSite{Q}, XYSite, HeisenbergSite, EmptySite) through three layouts (UniformLayout, SublatticeLayout, ExplicitLayout) so mixed-spin and disordered models compose cleanly.
  • Element centering trait (VertexCenter default, BondCenter / PlaquetteCenter / CellCenter as extension points) for dimer, gauge-link, and flux variables.
  • Momentum-space layer: AbstractMomentumLattice, PeriodicMomentumLattice, monkhorst_pack / gamma_centered meshes, and structure_factor with trait-dispatched fast paths (LatticeCoreFFTWExt for Bravais; LatticeCoreNFFTExt reserved for the quasicrystal case).