Function reference
The following symbols are exported by AutoBZCore.jl
Brillouin-zone kinds
AutoBZCore.load_bz
— Functionload_bz(bz::AbstractBZ, [T::Type=Float64])
load_bz(bz::AbstractBZ, A::AbstractMatrix, [B::AbstractMatrix])
Interface to loading Brillouin zones.
Arguments
bz::AbstractBZ
: a kind of Brillouin zone to construct, e.g.FBZ
orIBZ
T::Type
: a numeric type to set the precision of the domain (default:Float64
)A::AbstractMatrix
: a $d \times d$ matrix whose columns are the real-space lattice vectors of a $d$-dimensional crystalB::AbstractMatrix
: a $d \times d$ matrix whose columns are the reciprocal-space lattice vectors of a $d$-dimensional Brillouin zone (default:A' \ 2πI
)
AutoBZCore
assumes that all calculations occur in the reciprocal lattice basis, since that is the basis in which Wannier interpolants are most efficiently described. See SymmetricBZ
for details. We also assume that the integrands are cheap to evaluate, which is why we provide adaptive methods in the first place, so that return types can be determined at runtime (and mechanisms are in place for compile time as well)
AutoBZCore.load_bz
— Methodload_bz(::IBZ, A, B, species::AbstractVector, positions::AbstractMatrix; kws...)
species
must have distinct labels for each atom type (e.g. can be any string or integer) and positions
must be a matrix whose columns give the coordinates of the atom of the corresponding species.
AutoBZCore.AbstractBZ
— TypeAbstractBZ{d}
Abstract supertype for all Brillouin zone data types parametrized by dimension.
AutoBZCore.FBZ
— TypeFBZ{N} <: AbstractBZ
Singleton type representing first/full Brillouin zones of N
dimensions. By default, N
is nothing and the dimension is obtained from input files.
AutoBZCore.IBZ
— TypeIBZ <: AbstractBZ
Singleton type representing irreducible Brillouin zones. Load SymmetryReduceBZ.jl to use this.
AutoBZCore.InversionSymIBZ
— TypeInversionSymIBZ{N} <: AbstractBZ
Singleton type representing Brillouin zones with full inversion symmetry
Only expect this to work for systems with orthogonal lattice vectors
AutoBZCore.CubicSymIBZ
— TypeCubicSymIBZ{N} <: AbstractBZ
Singleton type representing Brillouin zones with full cubic symmetry
Only expect this to work for systems with orthogonal lattice vectors
Symmetry representations
AutoBZCore.AbstractSymRep
— TypeAbstractSymRep
Abstract supertype of symmetry representation traits.
AutoBZCore.TrivialRep
— TypeTrivialRep()
Symmetry representation of objects with trivial transformation under the group.
AutoBZCore.UnknownRep
— TypeUnknownRep()
Fallback symmetry representation for array types without a user-defined SymRep
. Will perform FBZ integration regardless of available BZ symmetries.
AutoBZCore.symmetrize
— Functionsymmetrize(rep::AbstractSymRep, ::SymmetricBZ, x)
Transform x
by the representation of the symmetries of the point group used to reduce the domain, thus mapping the value of x
on to the full Brillouin zone.
Internal
The following docstrings belong to internal types and functions that may change between versions of AutoBZCore.
AutoBZCore.PuncturedInterval
— TypePuncturedInterval(s)
Represent an interval (a, b)
with interior points deleted by s = (a, c1, ..., cN, b)
, so that the integration algorithm can avoid the points c1, ..., cN
for e.g. discontinuities. s
must be a tuple or vector.
AutoBZCore.HyperCube
— TypeHyperCube(a, b)
Represents a hypercube spanned by the vertices a, b
, which must be iterables of the same length.
AutoBZCore.SymmetricBZ
— TypeSymmetricBZ(A, B, lims::AbstractIteratedLimits, syms; atol=sqrt(eps()))
Data type representing a Brillouin zone reduced by a set of symmetries, syms
with iterated integration limits lims
, both of which are assumed to be in the lattice basis (since the Fourier series is). A
and B
should be identically-sized square matrices containing the real and reciprocal basis vectors in their columns.
This type assumes all integration limit data is in the reciprocal lattice basis with fractional coordinates, where the FBZ is just the hypercube spanned by the vertices (0,…,0) & (1,…,1). If necessary, use A
or B
to rotate these quantities into the convention.
lims
should be limits compatible with IteratedIntegration.jl. syms
should be an iterable collection of point group symmetries compatible with AutoSymPTR.jl.
AutoBZCore.trapz
— Functiontrapz(n::Integer)
Return the weights and nodes on the standard interval [-1,1] of the trapezoidal rule.
AutoBZCore.cube_automorphisms
— Functioncube_automorphisms(::Val{d}) where d
return a generator of the symmetries of the cube in d
dimensions including the identity.