Spin package
Spin degrees of freedom
SID, Spin and SIndex
SOperator
Spin terms
SpinCoupling
STerm
Manual
QuantumLattices.Essentials.SpinPackage.soptdefaultlatex
— Constantsdefaultlatex
The default LaTeX format for a spin oid.
Base.Matrix
— MethodMatrix(sid::SID{S}, dtype::Type{<:Number}=Complex{Float}) where S -> Matrix{dtype}
Get the matrix representation of a sid.
QuantumLattices.Essentials.SpinPackage.SCID
— TypeSCID{T<:Tuple{Vararg{Char}}, A<:Tuple} <: SimpleID
The id of the atoms and tags part of a spin coupling.
QuantumLattices.Essentials.SpinPackage.SID
— TypeSID{S} <: IID
The spin id.
QuantumLattices.Essentials.SpinPackage.SID
— MethodSID{S}(tag::Char; orbital::Int=1) where S
Create a spin id.
QuantumLattices.Essentials.SpinPackage.SIndex
— TypeSIndex{S, P} <: Index{PID{P}, SID{S}}
The spin index.
QuantumLattices.Essentials.SpinPackage.SIndex
— MethodSIndex(pid::PID, sid::SID) -> SIndex
Construct a spin index by a pid and an sid.
QuantumLattices.Essentials.SpinPackage.SOperator
— TypeSOperator{V<:Number, I<:ID{OID{<:SIndex}}} <: Operator{V, I}
Spin operator.
QuantumLattices.Essentials.SpinPackage.Spin
— TypeSpin{S} <: Internal{SID{S}}
The spin interanl degrees of freedom.
QuantumLattices.Essentials.SpinPackage.Spin
— MethodSpin{S}(; atom::Int=1, norbital::Int=1) where S
Construct a spin degrees of freedom.
QuantumLattices.Essentials.SpinPackage.SpinCoupling
— TypeSpinCoupling{V, T<:Tuple, A<:Tuple, O<:Subscripts, I<:Tuple{SCID, SubID}} <: Coupling{V, I}
Spin coupling.
QuantumLattices.Essentials.SpinPackage.SpinCoupling
— MethodSpinCoupling(value::Number,
tags::NTuple{N, Char};
atoms::Union{NTuple{N, Int}, Nothing}=nothing,
orbitals::Union{NTuple{N, Int}, Subscripts, Nothing}=nothing
) where N
Spin coupling.
QuantumLattices.Essentials.SpinPackage.SpinTerm
— TypeSpinTerm{R}(id::Symbol, value::Any, bondkind::Any;
couplings::Union{Function, Coupling, Couplings},
amplitude::Union{Function, Nothing}=nothing,
modulate::Union{Function, Bool}=false,
) where R
Spin term.
Type alias for Term{:SpinTerm, R, id, V, <:Any, <:TermCouplings, <:TermAmplitude, <:TermModulate}
.
QuantumLattices.Essentials.SpinPackage.@dm_str
— Macrodm"x sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
dm"y sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
dm"z sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
The DM couplings.
QuantumLattices.Essentials.SpinPackage.@gamma_str
— Macrogamma"x sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
gamma"y sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
gamma"z sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
The Gamma couplings.
QuantumLattices.Essentials.SpinPackage.@heisenberg_str
— Macroheisenberg"sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
heisenberg"xyz sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
heisenberg"+-z sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
The Heisenberg couplings.
QuantumLattices.Essentials.SpinPackage.@ising_str
— Macroising"x sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
ising"y sl[a₁ a₂] ⊗ ob[o₁ o₂])" -> Couplings
ising"z sl[a₁ a₂] ⊗ ob[o₁ o₂]" -> Couplings
The Ising couplings.
QuantumLattices.Essentials.SpinPackage.@sc_str
— Macrosc"..." -> SpinCoupling
Construct a SpinCoupling from a literal string.
QuantumLattices.Essentials.SpinPackage.@sˣ_str
— Macrosˣ"sl[a]⊗ob[o]" -> Couplings
sʸ"sl[a]⊗ob[o]" -> Couplings
sᶻ"sl[a]⊗ob[o]" -> Couplings
The single Sˣ/Sʸ/Sᶻ coupling.
Base.:*
— Method*(sc₁::SpinCoupling, sc₂::SpinCoupling) -> SpinCoupling
Get the multiplication between two spin couplings.
Base.repr
— Methodrepr(sc::SpinCoupling) -> String
Get the repr representation of a spin coupling.
Base.show
— Methodshow(io::IO, sc::SpinCoupling)
Show a spin coupling.
QuantumLattices.Essentials.DegreesOfFreedom.script
— Methodscript(::Val{:site}, index::SIndex; kwargs...) -> Int
script(::Val{:orbital}, index::SIndex; kwargs...) -> Int
script(::Val{:tag}, index::SIndex; kwargs...) -> Char
Get the required script of a spin oid.
QuantumLattices.Essentials.SpinPackage.DM
— MethodDM(tag::Char; atoms::Union{NTuple{2, Int}, Nothing}=nothing, orbitals::Union{Int, NTuple{2, Int}, Subscripts}=2) -> Couplings
The DM couplings.
QuantumLattices.Essentials.SpinPackage.Gamma
— MethodGamma(tag::Char; atoms::Union{NTuple{2, Int}, Nothing}=nothing, orbitals::Union{Int, NTuple{2, Int}, Subscripts}=2) -> Couplings
The Gamma couplings.
QuantumLattices.Essentials.SpinPackage.Heisenberg
— FunctionHeisenberg(mode::String="+-z"; atoms::Union{NTuple{2, Int}, Nothing}=nothing, orbitals::Union{Int, NTuple{2, Int}, Subscripts}=2) -> Couplings
The Heisenberg couplings.
QuantumLattices.Essentials.SpinPackage.Ising
— MethodIsing(tag::Char; atoms::Union{NTuple{2, Int}, Nothing}=nothing, orbitals::Union{Int, NTuple{2, Int}, Subscripts}=2) -> Couplings
The Ising couplings.
QuantumLattices.Essentials.SpinPackage.Sʸ
— MethodSʸ(; atom::Union{Int, Nothing}=nothing, orbital::Union{Int, Nothing}=nothing) -> Couplings
The single Sʸ coupling.
QuantumLattices.Essentials.SpinPackage.Sˣ
— MethodSˣ(; atom::Union{Int, Nothing}=nothing, orbital::Union{Int, Nothing}=nothing) -> Couplings
The single Sˣ coupling.
QuantumLattices.Essentials.SpinPackage.Sᶻ
— MethodSᶻ(; atom::Union{Int, Nothing}=nothing, orbital::Union{Int, Nothing}=nothing) -> Couplings
The single Sᶻ coupling.
QuantumLattices.Essentials.SpinPackage.usualspinindextotuple
— Functionusualspinindextotuple
Indicate that the choosed fields are (:scope, :site, :orbital)
when converting a spin index to tuple.
QuantumLattices.Essentials.Terms.otype
— Methodotype(T::Type{<:Term}, C::Type{<:Config{<:Spin}}, B::Type{<:AbstractBond})
Get the operator type of a spin term.
QuantumLattices.Interfaces.expand
— Methodexpand(sc::SpinCoupling, points::NTuple{R, Point}, spins::NTuple{R, Spin}, ::Val) where R -> Union{SCExpand, Tuple{}}
Expand a spin coupling with the given set of points and spin degrees of freedom.
QuantumLattices.Interfaces.permute
— Methodpermute(::Type{<:SOperator}, id₁::OID{<:SIndex}, id₂::OID{<:SIndex}) -> Tuple{Vararg{SOperator}}
Permute two fermionic oid and get the result.