KdotP.jl
API
KdotP.kdotp
— Functionkdotp(lgir::LGIrrep,
αβγ=nothing;
timereversal::Bool = true,
degree::Union{Integer, Nothing} = nothing) --> Vector{MonomialHamiltonian}
Return a basis for the allowed k⋅p 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 typeLGIrrep
. Tables ofLGIrrep
s are accessible from thelgirreps
function of Crystalline.jl package.αβγ
: if the little group associated withlgir
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): iftrue
(default), time-reversal invariance is imposed on the k⋅p expansion. Iflgir
is a corepresentation (i.e., a "glued-up" irrep),timereversal
must be set totrue
; conversely, iflgir
is a pseudoreal or complex irrep that would otherwise pair up under time-reversal,timereversal
must be set tofalse
.degree
: if provided, monomial terms up todegree
will be considered; ifdegree = nothing
(default), the search over monomial terms will terminate after finding the lowest-degree allowed (i.e., nonvanishing) monomial term.
Output
Hs
: a vector ofMonomialHamiltonian
, with each elementHᴹ
containing the allowable terms of a k⋅p expansion of incrementing monomial degreedegree(Hᴹ)
consistent with the transformation properties dictated bylgir
.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 k⋅p Hamiltonian. To evaluateHᴹ
for a specific set of expansion vectors at a particular k-point (measured relative to the k-point inlgir
, and assumed referred to the basis system assumed inlgir
; i.e., generally relative to a reciprocal lattice basis) and for a particular set of expansion coefficientsqs
$= [q_1, q_2, \ldots, q_N]$,Hᴹ
can be called as a functor using the syntaxHᴹ(k, qs)
.
KdotP.MonomialHamiltonian
— TypeMonomialHamiltonian{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 k⋅p 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 k⋅p 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.Monomial
— TypeMonomial{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.MonomialBasis
— TypeMonomialBasis{D} <: AbstractVector{Monomial}
A wrapper around psv :: Monomial{D}
, which jointly form a basis for monomials of degree M
.