Basic concepts#
Tensors#
Tensors are multilinear maps from products of several vector spaces
where \(V^j\) and \(V_j\) refers to vector space that is either covariant or contravariant with respect to transformations acting on these spaces. YASTN refers to individual spaces \(V\) as ‘’legs``. The tensor \(T\) expressed in bases and components is
For tensors we introduce graphical notation where shapes represent tensors and lines protruding from the shape (legs) correspond to individual vector spaces
(generic) tensor, matrix, vector
___
V^i--| |--V_a ___ _
V^j--| T |--V_b V^i--|_M_|--V_a V^i--|W|
V^k--| |--V_c
...|___|...
Note
YASTN defines a vector space and its abelian symmetry structure through yastn.Leg
.
In quantum mechanics, we introduce an operator
where due to different actions of symmetry transformations vector spaces are split between \(\langle bra |\) and \(|ket \rangle\) spaces, or Hilbert space \(\mathcal{H}\) and its dual \(\mathcal{H}^*\).
In YASTN, similar to other implementations (see below), the distinction between
\(\langle bra |\) and \(|ket \rangle\) spaces, is encoded through ‘’signature`` atribute of yastn.Leg
assigned to a tensor.
Note
Signature of the tensor, i.e, yastn.Tensor.s
, is a tuple of signs \(\pm 1\) matching signatures of individual legs.
Action of abelian symmetry#
For any element \(g\) of abelian group \(G\), its action on tensor elements \(T^{ab...}_{ij...}\) in a proper basis can be represented by diagonal matrices \(U(g)\) acting on each of the vector spaces
where the elements of \(U(g)\) are complex phases defined by charges \(t_i\). In YASTN the charges are integers \(t_i\in\mathbb{Z}\) or their subset. They are related to symmetry transformation
where \(\delta_{jk}\) is a Kronecker delta and the angle \(\theta_g \in [0,2\pi)\) depends on \(g \in G\). The structure gives a simple selection rule that all symmetric tensors must obey.
Taking group element \(g \in G\) for all non-zero elements of \(T\), it must hold that
The selection rule can be equivalently expressed as charge conservation
where \(s_j\) is the signature and \(t_j\) is the change of corresponding sectors. For example, for the tensor \(T\) inthe examples above
with total charge of the tensor \(n\) being independent of tensor elements \(T^{ab...}_{ij...}\). For \(n=0\) a tensor is invariant (unchanged) under the action of the symmetry. Otherwise, it transforms covariantly as all its elements are altered by the same complex phase \(\exp(i\theta_g n)\).
The charges \(t_i,\ n\) and precise form of their addition \(+\) depends on the abelian group considered.
Note
Total charge \(n\) of YASTN tensor is accessed by
yastn.Tensor.n
.To inspect what charge sectors \(t_i\) exist on legs of a tensor use
yastn.Tensor.get_legs()
.
Examples for selected groups#
- \(\mathbf{U(1)}\): allowed charges are integers \(t_i \in \mathbb{Z}\) with usual integer addition
and \(\theta_g\) is usual angle \(\theta_g \in [0,2\pi)\).
- \(\mathbf{Z_2}\): allowed charges are a subset of integers \(t_i \in \{0,1\}\) with addition \(\textrm{mod 2}\).
Two elements of the group map to angles \(\{0,1\}\xrightarrow{\theta} \{0,\pi\}\).
- \(\mathbf{Z_2 \times U(1)}\): direct product of two symmetries lead to allowed charges
that are individual group charges accummulated in a vector \(t_i \in \{0,1\} \otimes \mathbb{Z}\). The addition is distributed, i.e.,
Note
See the above examples and how YASTN defines symmetries in API docs.
Conjugation#
Conjugation of a tensor acts such as all tensor elements are complex-conjugated, tensor leg signature is flipped by
replacing \(\pm 1 \to \mp 1\) in leg signature yastn.Tensor.s
, and, similarly, the total charge is flipped \(n \to -n\).
In the latter, the change of a sign by \(-\) depends on the abelian group.
Individual flip of the signature of a specific leg is also possible and is accompanied by negation of charges on that leg.
Note
See API docs, for various types of conjugation.