Built-in models

Diagonal quantum numbers on fuzzy sphere

The following diagonal quantum numbers (symmetry charges) on fuzzy sphere are built in in FuzzifiED.

FuzzifiED.GetNeQNDiagMethod
GetNeQNDiag(no :: Int64) :: QNDiag

Return the QNDiag of the number of electrons, implemented as

QNDiag("Ne", fill(1, no))
source
FuzzifiED.GetLz2QNDiagMethod
GetLz2QNDiag(nm :: Int64, nf :: Int64) :: QNDiag

Return the QNDiag of the number of twice the angular momentum $2L_z$, implemented as

QNDiag("Lz", collect(0 : nm * nf - 1) .÷ nf .* 2 .- (nm - 1))
source
FuzzifiED.GetFlavQNDiagFunction
GetFlavQNDiag(nm :: Int64, nf :: Int64, qf :: Dict{Int64, Int64}[, id :: Int64 = 1, modul :: Int64 = 1]) :: QNDiag 
GetFlavQNDiag(nm :: Int64, nf :: Int64, qf :: Vector{Int64}[, id :: Int64 = 1, modul :: Int64 = 1]) :: QNDiag

Return the QNDiag of linear combination of number of electrons in each flavour,

\[ Q = ∑_{f}q_fn_f\]

the factor $q_f$ can either be given by a length-$N_f$ vector or a dictionary containing non-zero terms. E.g., for $Q=n_{f=1}-n_{f=3}$ in a 4-flavour system, qf = [1, 0, -1, 0] or qf = Dict(1 => 1, 3 => -3). id is an index to be put in the name to distinguish. For qf given as vector, the function is implemented as

QNDiag("Sz$id", qf[collect(0 : nm * nf - 1) .% nf .+ 1], modul)
source
FuzzifiED.GetZnfChargeQNDiagMethod
GetZnfChargeQNDiag(nm :: Int64, nf :: Int64) :: QNDiag

Return the QNDiag of a $ℤ_{N_f}$-charge,

\[ Q = ∑_{f=0}^{N_f-1}fn_f\ \mathrm{mod}\ N_f\]

implemented as

QNDiag("Q_Z$nf", collect(0 : nm * nf - 1) .% nf, nf)
source
FuzzifiED.GetPinOrbQNDiagFunction
GetPinOrbQNDiag(no :: Int64, pin_o :: Vector{Int64}[, id :: Int64 = 1]) :: QNDiag

Return the QNDiag of the number of electrons in the subset pin_o, implemented as

QNDiag("Npin$i", [ o in pin_o ? 1 : 0 for o = 1 : no])

This QNDiag is useful in pinning defects, where certain subset of sites need to be set empty or filled. To empty the sites, set this QNDiag to 0 ; to fill the sites, set this QNDiag to length(pin_o). id is an index to be put in the name to distinguish.

source

Off-diagonal quantum numbers on fuzzy sphere

The following off-diagonal quantum numbers (transformations) on fuzzy sphere are built in in FuzzifiED.

FuzzifiED.GetParityQNOffdFunction
GetParityQNOffd(nm :: Int64, nf :: Int64[, permf, fac])

Return the particle-hole transformation

\[ 𝒫: c^†_{mf}↦α_fc_{mπ_f}\]

Arguments

  • nm :: Int64 and nf :: Int64 are the number of orbitals and the flavours.
  • permf :: Dict{Int64, Int64}, permf :: Vector{Vector{Int64}} or Vector{Int64} gives the flavour permutation $π_f$. It is either a vector of the cycles, a vector of the target flavours, or a dictionary of the changed elements. E.g., a permutation $1↦4,2↦5,3↦3,4↦1,5↦6,6↦2$ can be expressed as [4,5,3,1,6,2], [[1,4],[2,5,6]] or Dict(1=>4,2=>5,4=>1,5=>6,6=>2). Facultative, identity by default.
  • fac :: Dict{Int64, <: Number} or Vector{<: Number} gives the factor $α_f$. It is either a vector of all vectors, or a dictionary of all non-unity elements. Facultative, all unity by default.
source
FuzzifiED.GetFlavPermQNOffdFunction
GetFlavPermQNOffd(nm :: Int64, nf :: Int64, permf , fac][, cyc])

Return the flavour permutaiton transformation

\[ 𝒵: c^†_{mf}↦α_fc^†_{mπ_f}\]

Arguments

  • nm :: Int64 and nf :: Int64 are the number of orbitals and the flavours.
  • permf :: Dict{Int64, Int64}, permf :: Vector{Vector{Int64}} or Vector{Int64} gives the flavour permutation $π_f$. It is either a vector of the cycles, a vector of the target flavours, or a dictionary of the changed elements. E.g., a permutation $1↦4,2↦5,3↦3,4↦1,5↦6,6↦2$ can be expressed as [4,5,3,1,6,2], [[1,4],[2,5,6]] or Dict(1=>4,2=>5,4=>1,5=>6,6=>2). Facultative, identity by default.
  • fac :: Dict{Int64, <: Number} or Vector{<: Number} gives the factor $α_f$. It is either a vector of all vectors, or a dictionary of all non-unity elements. Facultative, all unity by default.
  • cyc :: Int64 is the period of the permutation.
source
FuzzifiED.GetRotyQNOffdMethod
GetRotyQNOffd(nm :: Int64, nf :: Int64)

Return the $π$-rotation along the $y$-axis.

\[ ℛ_y: c^†_{mf}↦(-)^{m+s}c^†_{-mf}\]

source

Operators on fuzzy sphere

FuzzifiED.GetIntMatrixMethod
GetIntMatrix(nm :: Int64, ps_pot :: Vector{<:Number}) :: Array{ComplexF64, 3}

Argument

  • nm :: Int64 is the number of orbitals
  • ps_pot :: Vector{<:Number} is the vector of non-zero pseudopotentials

Output

  • A nm*nm*nm array giving the interaction matrix $U_{m_1,m_2,m_3,-m_1-m_2-m_3}$
source
FuzzifiED.GetDenIntTermsFunction
GetDenIntTerms(nm :: Int64, nf :: Int64[, ps_pot :: Vector{<:Number}][, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}]][ ; m_kept :: Vector{Int64}]) :: Terms

Return the normal-ordered density-density term in the Hamiltonian

\[∑_{\{m_i,f_i\}}U_{m_1m_2m_3m_4}M^A_{f_1f_4}M^B_{f_2f_3}c^{†}_{m_1f_1}c^{†}_{m_2f_2}c_{m_3f_3}c_{m_4f_4}\]

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • ps_pot :: Vector{<:Number} is a list of numbers specifying the pseudopotentials for the interacting matrix $U_{m_1m_2m_3m_4}$. Facultative, [1.0] by default.
  • mat_a :: Matrix{<:Number} is a nf*nf matrix specifying $M^A_{ff'}$. Facultative, $I_{N_f}$ by default.
  • mat_b :: Matrix{<:Number} is a nf*nf matrix specifying $M^B_{ff'}$. Facultative, the Hermitian conjugate of mat_a by default.
  • m_kept :: Vector{Int64} is a list of orbitals that range from 1 to nm. Facultative, if specified, only terms for which all $m_i$ are in the list are kept.
source
FuzzifiED.GetDenIntTermsFunction
GetDenIntTerms(nm :: Int64, nf :: Int64, ps_pot :: Vector{<:Number}, mat_a :: Vector{<:AbstractMatrix{<:Number}}[, mat_b :: Vector{<:AbstractMatrix{<:Number}}][ ; m_kept :: Vector{Int64}]) :: Terms

Return the sum of a series of normal-ordered density-density term in the Hamiltonian

\[∑_{\{m_i,f_i,α\}}U_{m_1m_2m_3m_4}(M^A_{α})_{f_1f_4}(M^B_{α})_{f_2f_3}c^{†}_{m_1f_1}c^{†}_{m_2f_2}c_{m_3f_3}c_{m_4f_4}\]

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • ps_pot :: Vector{<:Number} is a list of numbers specifying the pseudopotentials for the interacting matrix $U_{m_1m_2m_3m_4}$. Facultative, [1.0] by default.
  • mat_a :: Vector{<:AbstractMatrix{<:Number}} is a vector of nf*nf matrix specifying $(M^A_{α})_{ff'}$. Facultative, $I_{N_f}$ by default.
  • mat_b :: Vector{<:AbstractMatrix{<:Number}} is a vector of nf*nf matrix specifying $(M^B_{α})_{ff'}$. Facultative, the Hermitian conjugate of mat_a by default.
  • m_kept :: Vector{Int64} is a list of orbitals that range from 1 to nm. Facultative, if specified, only terms for which all $m_i$ are in the list are kept.
source
FuzzifiED.GetPairIntTermsFunction
GetPairIntTerms(nm :: Int64, nf :: Int64, ps_pot :: Vector{<:Number}, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}][ ; m_kept :: Vector{Int64}]) :: Terms

Return the normal-ordered pair-pair interaction term in the Hamiltonian

\[∑_{\{m_i,f_i\}}U_{m_1m_2m_3m_4}M^A_{f_1f_2}M^B_{f_3f_4}c^{†}_{m_1f_1}c^{†}_{m_2f_2}c_{m_3f_3}c_{m_4f_4}\]

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • ps_pot :: Vector{<:Number} is a list of numbers specifying the pseudopotentials for the interacting matrix $U_{m_1m_2m_3m_4}$.
  • mat_a :: Matrix{<:Number} is a nf*nf matrix specifying $M^A_{ff'}$. Facultative, $I_{N_f}$ by default.
  • mat_b :: Matrix{<:Number} is a nf*nf matrix specifying $M^B_{ff'}$. Facultative, the Hermitian conjugate of mat_a by default.
  • m_kept :: Vector{Int64} is a list of orbitals that range from 1 to nm. Facultative, if specified, only terms for which all $m_i$ are in the list are kept.
source
FuzzifiED.GetPolTermsMethod
GetPolTerms(nm :: Int64, nf :: Int64[, mat :: Matrix{<:Number}][ ; fld_m :: Vector{<:Number}]) :: Terms

Return the polarisation term in the Hamiltonian

\[∑_{mff'}c^{†}_{mf}M_{ff'}c_{mf'}\]

Arguments

  • nm :: Int64 is the number of orbitals ;
  • nf :: Int64 is the number of flavours ;
  • mat :: Matrix{<:Number} is a nf*nf matrix specifying $M_{ff'}$. Facultative, $I_{N_f}$ by default.
  • fld_m :: Vector{<:Number} gives an orbital dependent polarisation

\[∑_{mff'}h_mc^{†}_{mf}M_{ff'}c_{mf'}\]

Facultative.

source
FuzzifiED.GetL2TermsMethod
GetL2Terms(nm :: Int64, nf :: Int64) :: Terms

Return the terms for the total angular momentum.

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
source
FuzzifiED.GetC2TermsMethod
GetC2Terms(nm :: Int64, nf :: Int64, mat_gen :: Vector{<:AbstractMatrix{<:Number}}[, mat_tr :: Vector{<:AbstractMatrix{<:Number}}]) :: Terms

Return the terms for the quadratic Casimir of the flavour symmetry.

\[ C_2=∑_{imm'}\frac{(c^†_{mf_1}G_{i,f_1f_2}c_{mf_2})(c^†_{m'f_3}G^†_{i,f_3f_4}c_{m'f_4})}{\operatorname{tr}G_i^†G_i}-∑_{imm'}\frac{(c^†_{mf_1}T_{i,f_1f_2}c_{mf_2})(c^†_{m'f_3}T^†_{i,f_3f_4}c_{m'f_4})}{\operatorname{tr}T_i^†T_i}\]

where $G_i$ are the generator matrices, and $T_i$ are the trace matrices.

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • mat_gen :: Vector{Matrix{Number}}) is a list of the matrices that gives the generators. It will automatically be normalised such that its square traces to unity.
  • mat_tr :: Vector{Matrix{Number}}) is a list of trace matrices that will be normalised automatically and substracted. Facultative.
source

Spherical observables

FuzzifiED supports local observables on sphere that can be decomposed into angular components $\Phi(\Omega)=\sum_{lm}\Phi_{lm}Y^{(s)}_{lm}$

FuzzifiED.SphereObsType
SphereObs

The mutable type SphereObs stores the information of a local observable (or local operator) $\Phi$ that can be decomposed into angular components.

\[ \Phi(\Omega)=∑_{lm}\Phi_{lm}Y^{(s)}_{lm}\]

Fields

  • s2 :: Int64 is twice the spin $2s$ of the observable.
  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the observable.
  • get_comp :: Function is a function get_comp(l2 :: Int64, m2 :: Int64) :: Terms that sends the component specified by a tuple of integers $(2l,2m)$ where $|s|\leq l\leq l_{\max}, -l\leq m\leq l$ to a list of terms that specifies the expression of the component.
  • stored_q :: Bool is a boolean that specifies whether or not each component of the observable is stored.
  • comps :: Dict{Tuple{Int64, Int64}, Terms} stores each component of the observable in the format of a dictionary whose keys are the tuples of integers $(2l,2m)$ and values are the lists of terms that specifies the expression of the component.
source

It can be initialised with the following methods

FuzzifiED.SphereObsMethod
SphereObs(s2 :: Int64, l2m :: Int64, get_comp :: Function) :: SphereObs

initialises the observable from $2s$, $2l_{\max}$ and the function $(l,m)↦\Phi_{lm}$

Arguments

  • s2 :: Int64 is twice the spin $2s$ of the observable.
  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the observable.
  • get_comp :: Function is a function get_comp(l2 :: Int64, m2 :: Int64) :: Terms that sends the component specified by a tuple of integers $(2l,2m)$ where $|s|\leq s\leq l_{\max}, -l\leq m\leq l$ to a list of terms that specifies the expression of the component.
source
FuzzifiED.SphereObsMethod
SphereObs(s2 :: Int64, l2m :: Int64, get_comp :: Function) :: SphereObs

initialises the observable from $2s$, $2l_{\max}$ and a list of $\Phi_{lm}$ specified by a dictionary.

Arguments

  • s2 :: Int64 is twice the spin $2s$ of the observable.
  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the observable.
  • comps :: Dict{Tuple{Int64, Int64}, Terms} stores each component of the observable in the format of a dictionary whose keys are the tuples of integers $(2l,2m)$ and values are the lists of terms that specifies the expression of the component.
source

The following methods explicitly calculates and stores each component

FuzzifiED.StoreComps!Method
StoreComps!(obs :: SphereObs)

calculates and stores each component of the observable obs and replace the function in obs by the list of calculated components.

source
FuzzifiED.StoreCompsMethod
StoreComps(obs :: SphereObs) :: SphereObs

calculates and stores each component of the observable obs and return a new observable with the list of calculated components.

source

The multiplication, addition, conjugate and Laplacian operation of an observable is supported

Base.:*Method
*(fac :: Number, obs :: SphereObs) :: SphereObs
*(obs :: SphereObs, fac :: Number) :: SphereObs
/(obs :: SphereObs, fac :: Number) :: SphereObs
-(obs :: SphereObs) :: SphereObs

enables the multiplication of an observable with a number.

source
Base.:+Method
+(obs1 :: SphereObs, obs2 :: SphereObs) :: SphereObs
-(obs1 :: SphereObs, obs2 :: SphereObs) :: SphereObs

enables the addition of two observables.

source
Base.adjointMethod
adjoint(obs :: SphereObs) :: SphereObs

enables the Hermitian conjugate of a spherical observable.

\[\begin{aligned} Φ^†(Ω)&=∑_{lm}(Φ_{lm})^†\bar{Y}^{(s)}_{lm}(Ω)=∑_{lm}(Φ_{lm})^†(-1)^{s+m}Y^{(-s)}_{l,-m}(Ω)\\ (Φ^†)_{lm}&=(-1)^{s-m}(Φ_{l,-m})^† \end{aligned}\]

source
Base.:*Method
*(obs1 :: SphereObs, obs2 :: SphereObs) :: SphereObs

enables the multiplication of two observable by making use of the composition of two monopole harmonics into one.

source
FuzzifiED.LaplacianMethod
Laplacian(obs :: SphereObs) :: SphereObs

Takes the Laplacian of an observable

\[ (∇^2Φ)_{lm}=-l(l+1)Φ_{lm}\]

source

The observables can be evaluated either at an angular component or at a real-space point.

FuzzifiED.GetComponentMethod
GetComponent(obs :: SphereObs, l :: Number, m :: Number) :: Terms

returns an angular component $Φ_{lm}$ of an observable in the format of a list of terms.

source
FuzzifiED.GetPointValueMethod
GetPointValue(obs :: SphereObs, θ :: Float64, ϕ :: Float64) :: Terms

evaluates an observable at one point $Φ(θ,ϕ)$ in the format of a list of terms.

source

Three types of operators, viz. electrons and density operators, and pairing operators are built-in.

FuzzifiED.GetElectronObsMethod
GetElectronObs(nm :: Int64, nf :: Int64, f :: Int64) :: SphereObs

returns the electron annihilation operator $ψ_f$

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • f :: Int64 is the index of the flavour to be taken.
source
FuzzifiED.GetDensityObsMethod
GetDensityObs(nm :: Int64, nf :: Int64[, mat :: Matrix{<:Number}]) :: SphereObs

returns the density operator $n=∑_{ff'}ψ^†_{f}M_{ff'}ψ_{f'}$

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • mat :: Int64 is the matrix $M_{ff'}$. Facultative, identity matrix $\mathbb{I}$ by default.
source
FuzzifiED.GetPairingObsMethod
GetPairingObs(nm :: Int64, nf :: Int64, mat :: Matrix{<:Number}) :: SphereObs

returns the pair operator $Δ=∑_{ff'}ψ_{f}M_{ff'}ψ_{f'}$

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • mat :: Int64 is the matrix $M_{ff'}$.
source

Angular modes

An angular modes object is similar to spherical observables except that it superposes in the rule of Clebsch-Gordan coefficients and does not have the notion of locality.

FuzzifiED.AngModesType
AngModes

The mutable type AngModes stores angular momentum components of an operator on the sphere $Φ_{lm}$ and superposes in the rule of Clebsch-Gordan coefficients. The usage is similar to the spherical observables, except that SphereObs superposes in the rule of spherical harmonics and has the notion of locality

Fields

  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the modes object.
  • get_comp :: Function is a function get_comp(l2 :: Int64, m2 :: Int64) :: Terms that sends the component specified by a tuple of integers $(2l,2m)$ where $|s|\leq l\leq l_{\max}, -l\leq m\leq l$ to a list of terms that specifies the expression of the component.
  • stored_q :: Bool is a boolean that specifies whether or not each component of the modes object is stored.
  • comps :: Dict{Tuple{Int64, Int64}, Terms} stores each component of the modes object in the format of a dictionary whose keys are the tuples of integers $(2l,2m)$ and values are the lists of terms that specifies the expression of the component.
source

It can be initialised with the following methods

FuzzifiED.AngModesMethod
AngModes(l2m :: Int64, get_comp :: Function) :: AngModes

initialises the modes object from $2l_{\max}$ and the function $(l,m)↦\Phi_{lm}$

Arguments

  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the modes object.
  • get_comp :: Function is a function get_comp(l2 :: Int64, m2 :: Int64) :: Terms that sends the component specified by a tuple of integers $(2l,2m)$ where $|s|\leq s\leq l_{\max}, -l\leq m\leq l$ to a list of terms that specifies the expression of the component.
source
FuzzifiED.AngModesMethod
AngModes(l2m :: Int64, get_comp :: Function) :: AngModes

initialises the modes object from $2l_{\max}$ and a list of $\Phi_{lm}$ specified by a dictionary.

Arguments

  • l2m :: Int64 is twice the maximal angular momentum $2l_{\max}$ of the components of the modes object.
  • comps :: Dict{Tuple{Int64, Int64}, Terms} stores each component of the modes object in the format of a dictionary whose keys are the tuples of integers $(2l,2m)$ and values are the lists of terms that specifies the expression of the component.
source

The following methods explicitly calculates and stores each component

FuzzifiED.StoreComps!Method
StoreComps!(amd :: AngModes)

calculates and stores each component of the modes object amd and replace the function in amd by the list of calculated components.

source
FuzzifiED.StoreCompsMethod
StoreComps(amd :: AngModes) :: AngModes

calculates and stores each component of the modes object amd and return a new modes object with the list of calculated components.

source

The multiplication, addition and conjugate of an observable is supported

Base.:*Method
*(fac :: Number, amd :: AngModes) :: AngModes
*(amd :: AngModes, fac :: Number) :: AngModes
/(amd :: AngModes, fac :: Number) :: AngModes
-(amd :: AngModes) :: AngModes

enables the multiplication of a mode with a number.

source
Base.:+Method
+(obs1 :: AngModes, obs2 :: AngModes) :: AngModes
-(obs1 :: AngModes, obs2 :: AngModes) :: AngModes

enables the addition of two modes.

source
Base.adjointMethod
adjoint(amd :: AngModes) :: AngModes

enables the Hermitian conjugate of a spherical mode.

\[\begin{aligned} (Φ^†)_{lm}&=(-1)^{l+m}(Φ_{l,-m})^† \end{aligned}\]

source
Base.:*Method
*(obs1 :: AngModes, obs2 :: AngModes) :: AngModes

enables the multiplication of two modes in the rule of CG coefficients.

\[ Φ_{lm}=∑_{l_1l_2m_1m_2}δ_{m,m_1+m_2}⟨l_1m_1,l_2m_2|lm⟩Φ_{l_1m_1}Φ_{l_2m_2}\]

source

One can take out either one or a set of components

FuzzifiED.GetComponentMethod
GetComponent(amd :: AngModes, l :: Number, m :: Number) :: Terms

returns an angular component $Φ_{lm}$ of a modes object in the format of a list of terms.

source
FuzzifiED.FilterL2Method
FilterL2(amd :: AngModes, l :: Number) :: AngModes

returns an angular modes object with modes of a certain total angular momentum filtered out.

source
FuzzifiED.FilterComponentMethod
FilterComponent(amd :: AngModes, flt) :: AngModes

returns an angular modes object with certain modes filtered out.

Arguments

  • amd :: AngModes is the original angular modes
  • flt is the filter function whose input is the pair $(l,m)$ and output is a logical that indicates whether this mode is chosen. E.g., if one wants to filter out the modes with angular momentum l0, one should put (l, m) -> l == l0.
source

Three types of operators, viz. electrons and density operators, and pairing operators are built-in.

FuzzifiED.GetElectronModMethod
GetElectronMod(nm :: Int64, nf :: Int64, f :: Int64) :: AngModes

returns the modes of electron annihilation operator $c_m$, with angular momentum $s=(N_m-1)/2$

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • f :: Int64 is the index of the flavour to be taken.
source
FuzzifiED.GetPairingModMethod
GetPairingMod(nm :: Int64, nf :: Int64, mat :: Matrix{<:Number}) :: AngModes

returns the modes of two electrons superposed in the rule of CG coefficients.

\[ Δ_{lm}=∑_{m_1m_2}δ_{m,m_1+m_2}⟨sm_1,sm_2|lm⟩c_{a,m_1}M_{ab}c_{b,m_2}\]

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • mat :: Int64 is the matrix $M_{ff'}$.
source
FuzzifiED.GetDensityModMethod
GetDensityMod(nm :: Int64, nf :: Int64, mat :: Matrix{<:Number}) :: AngModes

returns the modes of electron creation and annihilation superposed in the rule of CG coefficients.

\[ n_{lm}=∑_{m_1m_2}δ_{m,-m_1+m_2}(-1)^{s+m_1}⟨s(-m_1),sm_2|lm⟩c^†_{m_1}c_{m_2}\]

Arguments

  • nf :: Int64 is the number of flavours.
  • nm :: Int64 is the number of orbitals.
  • mat :: Int64 is the matrix $M_{ff'}$. Facultative, identity matrix $\mathbb{I}$ by default.
source