Terms

Subscripts

Coupling and Couplings

Term

Generator

Manual

QuantumLattices.Essentials.Terms.AbstractGeneratorType
AbstractGenerator{TS<:NamedContainer{Term}, BS<:Bonds, C<:Config, T<:Table, B<:Boundary, OS<:GenOperators}

Abstract generator.

By protocol, a concrete generator should have the following predefined contents:

  • terms::TS: the terms contained in a generator
  • bonds::BS: the bonds on which the terms are defined
  • config::C: the configuration of the interanl degrees of freedom
  • half::Bool: true for generating an Hermitian half of the operators and false for generating the whole
  • table::Table: the index-sequence table
  • boundary::B: boundary twist for the generated operators, nothing for no twist
  • operators::OS: the generated operators
source
QuantumLattices.Essentials.Terms.GeneratorType
Generator(terms::Tuple{Vararg{Term}}, bonds::Bonds, config::Config, half::Bool, table::Table, boundary::Boundary=plain)

A generator of operators based on terms, configuration of internal degrees of freedom, and boundary twist.

source
QuantumLattices.Essentials.Terms.SubscriptsMethod
Subscripts(N::Int)
Subscripts(opattern::Tuple{Vararg{Union{Integer, Symbol}}})
Subscripts(opattern::Tuple{Vararg{Union{Integer, Symbol}}}, cpattern::AbstractString)

Construct a subscript set of a certain internal degree of freedom.

source
QuantumLattices.Essentials.Terms.TermType
Term{K, R, I}(value, bondkind, couplings::TermCouplings, amplitude::TermAmplitude, modulate::TermModulate, factor) where {K, R, I}
Term{K, R}(id::Symbol, value, bondkind;
    couplings::Union{Function, Coupling, Couplings, TermCouplings},
    amplitude::Union{Function, TermAmplitude, Nothing}=nothing,
    modulate::Union{Function, TermModulate, Bool}=false
    ) where {ST, K, R}

A term of a quantum lattice system.

source
Base.:*Method
*(subs₁::Subscripts, subs₂::Subscripts) -> Subscripts

Get the multiplication between two subscript sets.

source
Base.:+Method
+(term::Term) -> Term
-(term::Term) -> Term
*(term::Term, factor) -> Term
*(factor, term::Term) -> Term
/(term::Term, factor) -> Term

Allowed arithmetic operations for a term.

source
Base.:==Method
==(gen₁::AbstractGenerator, gen₂::AbstractGenerator) -> Bool

Judge whether generators are equivalent to each other.

source
Base.:==Method
==(genops1::GenOperators, genops2::GenOperators) -> Bool

Judge whether two sets of operators are equivalent to each other.

source
Base.:==Method
==(term1::Term, term2::Term) -> Bool

Judge whether two terms are equivalent to each other.

source
Base.:==Method
==(subs₁::Subscripts, subs₂::Subscripts) -> Bool

Judge whether two subscript sets are equivalent to each other.

source
Base.eltypeMethod
eltype(ops::GenOperators)
eltype(::Type{<:GenOperators})

Get the eltype of a set of operators, which is defined to be the common operator type of all operators it contains.

source
Base.empty!Method
empty!(ops::GenOperators) -> GenOperators

Empty a set of operators.

source
Base.empty!Method
empty!(gen::Generator) -> Generator

Empty the :bonds, :config, :table and :operators of a generator.

source
Base.emptyMethod
empty(ops::GenOperators) -> GenOperators

Get an empty copy of a set of operators.

source
Base.emptyMethod
empty(gen::Generator) -> Generator

Get an empty copy of a generator.

source
Base.isequalMethod
isequal(gen₁::AbstractGenerator, gen₂::AbstractGenerator) -> Bool

Judge whether generators are equivalent to each other.

source
Base.isequalMethod
isequal(genops1::GenOperators, genops2::GenOperators) -> Bool

Judge whether two sets of operators are equivalent to each other.

source
Base.isequalMethod
isequal(term1::Term, term2::Term) -> Bool

Judge whether two terms are equivalent to each other.

source
Base.isequalMethod
isequal(subs₁::Subscripts, subs₂::Subscripts) -> Bool

Judge whether two subscript sets are equivalent to each other.

source
Base.isvalidMethod
isvalid(subscripts::Subscripts, values::Tuple{Vararg{Int}}) -> Bool

Judge whether an independent variable set are valid to construct a subscript set.

source
Base.matchFunction
match(params₁::Parameters, params₂::Parameters, atol=atol, rtol=rtol) -> Bool

Judge whether the second set of parameters matches the first.

source
Base.replaceMethod
replace(term::Term; kwargs...) -> Term

Replace some attributes of a term with key word arguments.

source
Base.reprMethod
repr(term::Term, bond::AbstractBond, config::Config) -> String

Get the repr representation of a term on a bond with a given config.

source
Base.showMethod
show(io::IO, subscripts::Subscripts)

Show a subscript set.

source
Base.splitMethod
split(subscripts::Subscripts) -> Tuple{Vararg{Subscripts}}

Split a subscript set into individual independent segments.

source
Base.valtypeMethod
valtype(term::Term)
valtype(::Type{<:Term)

Get the value type of a term.

source
QuantumLattices.Essentials.Terms.otypeFunction
otype(T::Type{<:Term}, C::Type{<:Config}, B::Type{<:AbstractBond})

Get the compatible operator type from the type of a term, a configuration of the internal degrees of freedom and a bond.

source
QuantumLattices.Essentials.reset!Method
reset!(genops::GenOperators, terms::Tuple{Vararg{Term}}, bonds::Bonds, config::Config, half::Bool; table::Union{Nothing, Table}=nothing) -> GenOperators

Reset a set of operators by new terms, bonds, config, etc..

source
QuantumLattices.Interfaces.dimensionMethod
dimension(subscripts::Subscripts, i::Int) -> Int
dimension(::Type{<:Subscripts}, i::Int) -> Int

Get the total number of the whole variables of the ith segment of a subscript set.

source
QuantumLattices.Interfaces.expandFunction
expand(term::Term, bond::AbstractBond, config::Config, half::Bool=false; table::Union{Nothing, Table}=nothing) -> Operators
expand(term::Term, bonds::Bonds, config::Config, half::Bool=false; table::Union{Nothing, Table}=nothing) -> Operators

Expand the operators of a term on a bond/set-of-bonds with a given config.

source
QuantumLattices.Interfaces.expand!Function
expand!(operators::Operators, term::Term, bond::AbstractBond, config::Config, half::Bool=false; table::Union{Nothing, Table}=nothing) -> Operators
expand!(operators::Operators, term::Term, bonds::Bonds, config::Config, half::Bool=false; table::Union{Nothing, Table}=nothing) -> Operators

Expand the operators of a term on a bond/set-of-bonds with a given config.

The half parameter determines the behavior of generating operators, which falls into the following two categories

  • true: "Hermitian half" of the generated operators
  • false: "Hermitian whole" of the generated operators
source
QuantumLattices.Interfaces.expand!Method
expand!(operators::Operators, ops::GenOperators, boundary::Boundary; kwargs...) -> Operators

Expand the operators with the given boundary twist and term coefficients.

source
QuantumLattices.Interfaces.expandMethod
expand(gen::AbstractGenerator) -> Operators
expand(gen::AbstractGenerator, name::Symbol) -> Operators
expand(gen::AbstractGenerator, i::Int) -> Operators
expand(gen::AbstractGenerator, name::Symbol, i::Int) -> Operators

Expand the operators of a generator:

  1. the total operators;
  2. the operators of a specific term;
  3. the operators on a specific bond;
  4. the operators of a specific term on a specific bond.
source
QuantumLattices.Interfaces.rankMethod
rank(subscripts::Subscripts, i::Int) -> Int
rank(::Type{<:Subscripts}, i::Int) -> Int

Get the number of the independent variables of the ith segment of a subscript set.

source
QuantumLattices.Interfaces.rankMethod
rank(subscripts::Subscripts) -> Int
rank(::Type{<:Subscripts}) -> Int

Get the total number of the independent variables of a subscript set.

source