SU(2)¶
- class groups.su2.SU2(J, dtype=torch.float64, device='cpu')[source]¶
- Parameters:
J (int) – highest weight
dtype (torch.dtype) – data type of matrix representation of operators
device (int) – device on which the torch.tensor objects are stored
Build a representation J of SU(2) group. The J corresponds to (physics) spin irrep notation as spin \(S = (J-1)/2\).
The raising and lowering operators are defined as:
\[\begin{split}\begin{align*} S^+ &=S^x+iS^y & S^x &= 1/2(S^+ + S^-)\\ S^- &=S^x-iS^y\ \Rightarrow\ & S^y &=-i/2(S^+ - S^-) \end{align*}\end{split}\]- S()[source]¶
- Returns:
rank-3 tensor containing spin generators [S^z, S^x, S^y]
- Return type:
torch.tensor
SU(2) with explicit U(1) structure¶
- class groups.su2_abelian.SU2_U1(settings, J)[source]¶
- Parameters:
settings (NamedTuple or SimpleNamespace (TODO link to definition)) – YAST configuration
J (int) – dimension of irrep
Build a representation J of SU(2) group. The J corresponds to (physics) spin irrep notation as spin \(S = (J-1)/2\). This representation uses explicit U(1) symmetry (subgroup) making all operators/tensors block-sparse.
The signature convention \(O = \sum_{ij} O_{ij}|i\rangle\langle j|\) is -1 for index i (\(|ket\rangle\)) and +1 for index j (\(\langle bra|\)).
The raising and lowering operators are defined as:
\[\begin{split}\begin{align*} S^+ &=S^x+iS^y & S^x &= 1/2(S^+ + S^-)\\ S^- &=S^x-iS^y\ \Rightarrow\ & S^y &=-i/2(S^+ - S^-) \end{align*}\end{split}\]- SM()[source]¶
- Returns:
\(S^-\) operator of irrep.
- Return type:
yast.Tensor
The \(S^-\) operator maps states with \(S^z = x\) to states with \(S^z = x-1\) . Therefore as a matrix it must act as follows on vector of basis elements of spin S representation (in this particular order) \(|S M\rangle\)
|-S > 0 0 0 0 0 ... 0 S^- |-S+1> = C_-|-S > => S^- = 1 0 0 0 ... 0 x C_- ... ... ... | S-1> C_-| S-2> 0 ... 1 0 0 | S > C_-| S-1> 0 ... 0 1 0
where \(C_- = \sqrt{S(S+1)-M(M-1)}\).
- SP()[source]¶
- Returns:
\(S^+\) operator of irrep.
- Return type:
yast.Tensor
The \(S^+\) operator maps states with \(S^z = x\) to states with \(S^z = x+1\) . Therefore as a matrix it must act as follows on vector of basis elements of spin-S representation (in this particular order) \(|S M\rangle\)
|-S > C_+|-S+1> 0 1 0 0 ... 0 S^+ |-S+1> = C_+|-S+2> => S^+ = 0 0 1 0 ... 0 x C_+ ... ... ... | S-1> C_+| S > 0 ... 0 1 | S > 0 0 ... 0 0
where \(C_+ = \sqrt{S(S+1)-M(M+1)}\).
- SS(zpm=(1.0, 1.0, 1.0))[source]¶
- Parameters:
zpm (tuple(float)) – coefficients of anisotropy of spin-spin interaction zpm[0]*(S^z S^z) + zpm[1]*(S^p S^m)/2 + zpm[2]*(S^m S^p)/2
- Returns:
spin-spin interaction as rank-4 for tensor
- Return type:
yast.Tensor
- S_zpm()[source]¶
- Returns:
vector of su(2) generators as rank-3 tensor
- Return type:
yast.Tensor
Returns vector with representation of su(2) generators, in order: \(S^z, S^+, S^-\). The generators are indexed by first index of the resulting rank-3 tensors. Signature convention is:
1(-1) S--0(-1) 2(+1)