KdotP.jl

API

KdotP.kdotpFunction
kdotp(lgir::LGIrrep,
      αβγ=nothing;
      timereversal::Bool = true,
      degree::Union{Integer, Nothing} = nothing)  -->  Vector{MonomialHamiltonian}

Return a basis for the allowed kp Hamiltonians of a small irrep lgir up to linear degree in momentum.

Input arguments

  • lgir: a small irrep of a little group, provided as an instance of the type LGIrrep. Tables of LGIrreps are accessible from the lgirreps function of Crystalline.jl package.
  • αβγ: if the little group associated with lgir has free parameters, i.e., if the k-point is parametrized by free parameters (α, β, γ), these parameters may be set via αβγ = [α, β, γ]. If αβγ = nothing (default), lgir is implicitly evaluated at αβγ = [0, 0, 0].

Keyword arguments

  • timereversal (keyword argument): if true (default), time-reversal invariance is imposed on the kp expansion. If lgir is a corepresentation (i.e., a "glued-up" irrep), timereversal must be set to true; conversely, if lgir is a pseudoreal or complex irrep that would otherwise pair up under time-reversal, timereversal must be set to false.
  • degree: if provided, monomial terms up to degree will be considered; if degree = nothing (default), the search over monomial terms will terminate after finding the lowest-degree allowed (i.e., nonvanishing) monomial term.

Output

  • Hs: a vector of MonomialHamiltonian, with each element Hᴹ containing the allowable terms of a kp expansion of incrementing monomial degree degree(Hᴹ) consistent with the transformation properties dictated by lgir.

    Each such allowable term Hᴹ $= H^M(\mathbf{k})$ is an expansion in a set of basis elements $H_a^M(\mathbf{k})$:

    \[H^M(\mathbf{k}) = \sum_a q_a H_a^M(\mathbf{k})\]

    where $q_a$ are free coefficients and $H_a^M(\mathbf{k})$are the basis elements of the degree $M =$ degree(Hᴹ) monomial terms of the kp Hamiltonian. To evaluate Hᴹ for a specific set of expansion vectors at a particular k-point (measured relative to the k-point in lgir, and assumed referred to the basis system assumed in lgir; i.e., generally relative to a reciprocal lattice basis) and for a particular set of expansion coefficients qs $= [q_1, q_2, \ldots, q_N]$, Hᴹ can be called as a functor using the syntax Hᴹ(k, qs).

KdotP.MonomialHamiltonianType
MonomialHamiltonian{D}

Fields

  • hs :: Vector{Hermitian{ComplexF64, Matrix{ComplexF64}}}
  • bᴹ :: MonomialBasis{D}
  • cs :: Vector{Vector{Vector{Float64}}}

Description

A MonomialHamiltonian Hᴹ parameterizes the form of a kp Hamiltonian of monomial k-dependence of degree $M =$ degree(Hᴹ):

\[H^M(\mathbf{k}) = \sum_a q_a^M H_a^M(\mathbf{k})\]

where $q_a^M$ are free (expansion) coefficients and $H_a^M(\mathbf{k})$ are the basis elements of the allowed kp Hamiltonian terms of monomial degree $M$.

A MonomialHamiltonian contains the basis elements $\{H_a(\mathbf{k})\}$, allowing only monomial terms of degree $M$ in momentum. In particular, the data structure for the fixed, k-dependent matrices $H_a(\mathbrm{k})$ are of the form:

$H_a(\mathbf{k}) = \sum_n$ H.hs[n] $\sum_j$ H.cs[a][j][n] $k_j^M$

with H denoting an instance of the type MonomialHamiltonian and $k_j^M$ denoting a basis element of the monomials of degree M (see also KdotP.Monomial and KdotP.MonomialBasis).

KdotP.MonomialType
Monomial{D}(ps::NTuple{D, Int})
Monomial(p1, p2, ..., pD)

Define the D-dimensional monomial xᴹ = x₁^ps[1] … xᵢ^ps[i] … x_D^ps[D] with non-negative integer powers ps. A Monomial xᴹ behaves as a functor and can be evaluated at a given position xs = [x₁, …, xᵢ, …, x_D] via xᴹ(xs).

Examples

julia> xᴹ¹ = Monomial(1,2,3)
x₁x₂²x₃³

julia> v¹ = xᴹ¹([1,2,3]) # = 1 * 2^2 * 3^3
108

julia> xᴹ² = Monomial(3,1,0,2)
x₁³x₂x₄²

julia> v² = xᴹ²([1,2,3,5]) # = 1^3 * 2^1 * 3^0 * 5^2
50
KdotP.MonomialBasisType
MonomialBasis{D} <: AbstractVector{Monomial}

A wrapper around psv :: Monomial{D}, which jointly form a basis for monomials of degree M.