U matrix construction
Tools to generate the U-matrices used with Hamiltonian-construction functions
are provided in the triqs.operators.util.U_matrix
module.
Functions to construct Coulomb tensors
-
triqs.operators.util.U_matrix.
U_matrix_slater
(l, radial_integrals=None, U_int=None, J_hund=None, basis='spherical', T=None)[source] Calculate the full four-index U matrix
\[U^{spherical}_{m1 m2 m3 m4} = \sum_{k=0}^{2l} F_k \alpha(l, k, m1, m2, m3, m4)\]where \(F_k\) [\(F_0, F_2, F_4, ...\)] are radial Slater integrals and \(\alpha(l, k, m1, m2, m3, m4)\) denote angular Racah_Wigner numbers for a spherical symmetric interaction tensor. The user can either specify directly the radial integral \(F_k\), or U_int / J_hund are given using the function
U_J_to_radial_integrals()
to convert back to radial integrals.The convetion for the U matrix is given by the definition of the following Hamiltonian:
\[H = \frac{1}{2} \sum_{ijkl,\sigma \sigma'} U_{ijkl} a_{i \sigma}^\dagger a_{j \sigma'}^\dagger a_{l \sigma'} a_{k \sigma}.\]Parameters: - l (integer) –
Angular momentum of shell being treated (l=2 for d shell, l=3 for f shell). radial_integrals : list, optional
Slater integrals [F0,F2,F4,..]. Must be provided if U_int and J_hund are not given. Preferentially used to compute the U_matrix if provided alongside U_int and J_hund. - U_int (scalar, optional) – Value of the screened Hubbard interaction. Must be provided if radial_integrals are not given.
- J_hund (scalar, optional) – Value of the Hund’s coupling. Must be provided if radial_integrals are not given.
- basis (string, optional) –
The basis in which the interaction matrix should be computed. Takes the values
- ’spherical’: spherical harmonics,
- ’cubic’: cubic harmonics,
- ’other’: other basis type as given by the transformation matrix T.
- T (real/complex numpy array, optional) –
Transformation matrix for basis change. Must be provided if basis=’other’. The transformation matrix is defined such that new creation operators \(b^\dagger\) are related to the old ones \(a^\dagger\) as
\[b_{i \sigma}^\dagger = \sum_j T_{ij} a^\dagger_{j \sigma}.\]
Returns: U_matrix – The four-index interaction matrix in the chosen basis.
Return type: float numpy array
- l (integer) –
-
triqs.operators.util.U_matrix.
reduce_4index_to_2index
(U_4index)[source] Reduces the four-index matrix to two-index matrices for parallel and anti-parallel spins.
Parameters: U_4index (float numpy array) – The four-index interaction matrix. Returns: - U (float numpy array) – The two-index interaction matrix for parallel spins.
- Uprime (float numpy array) – The two-index interaction matrix for anti-parallel spins.
-
triqs.operators.util.U_matrix.
U_matrix_kanamori
(n_orb, U_int, J_hund, Up_int=None, full_Uijkl=False, Jc_hund=None)[source] Calculate the Kanamori two-index interaction matrix for parallel spins:
\[U_{m m'}^{\sigma \sigma} \equiv U_{m m' m m'} - J_{m m'}\]with:
\[J_{m m'} \equiv U_{m m' m' m} ,\]and the two-index interaction matrix for anti-parallel spins:
\[U_{m m'}^{\sigma \bar{\sigma}} \equiv U_{m m' m m'}\]If full_Uijkl=True is specified the full four index Uijkl tensor is returned instead:
\[\begin{split}U_{m m m m} = U, \\ U_{m m' m m'} = U', \\ U_{m m' m' m} = J, \\ U_{m m m' m'} = J_C,\end{split}\]with \(m \neq m'\).
Parameters: - n_orb (integer) – Number of orbitals in basis.
- U_int (float) – Value of the screened Hubbard interaction.
- J_hund (float) – Value of the Hund’s coupling.
- Up_int (float, optional) – Value of the screened U prime parameter defaults to U_int-2*J_hund if not given. (fully rotationally invariant form)
- full_Uijkl (bool, optional) – retunr instead the full four-index Uijkl tensor default is False
- Jc_hund (foat, optional) – only used if full_Uijkl=True, defaults to J_hund
Returns: - U (float numpy array) – The two-index interaction matrix for parallel spins or the four-index Uijkl tensor if full_Uijkl=True
- Uprime (float numpy array) – The two-index interaction matrix for anti-parallel spins.
-
triqs.operators.util.U_matrix.
t2g_submatrix
(U, convention='triqs')[source] Extract the t2g submatrix of the full d-manifold two- or four-index U matrix.
Parameters: - U (float numpy array) – Two- or four-index interaction matrix.
- convention (string, optional) –
The basis convention. Takes the values
- ’triqs’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”),
- ’vasp’: same as ‘triqs’,
- ’wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”),
- ’wannier90’: basis order as (“z^2”, “xz”, “yz”, “x^2-y^2”, “xy”),
- ’qe’: same as ‘wannier90’.
Returns: U_t2g – The t2g component of the interaction matrix.
Return type: float numpy array
-
triqs.operators.util.U_matrix.
eg_submatrix
(U, convention='triqs')[source] Extract the eg submatrix of the full d-manifold two- or four-index U matrix.
Parameters: - U (float numpy array) – Two- or four-index interaction matrix.
- convention (string, optional) –
The basis convention. Takes the values
- ’triqs’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”),
- ’vasp’: same as ‘triqs’,
- ’wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”),
- ’wannier90’: basis order as (“z^2”, “xz”, “yz”, “x^2-y^2”, “xy”),
- ’qe’: same as ‘wannier90’.
Returns: U_eg – The eg component of the interaction matrix.
Return type: float numpy array
-
triqs.operators.util.U_matrix.
transform_U_matrix
(U_matrix, T)[source] Transform a four-index interaction matrix into another basis. The transformation matrix is defined such that new creation operators \(b^\dagger\) are related to the old ones \(a^\dagger\) as
\[b_{i \sigma}^\dagger = \sum_j T_{ij} a^\dagger_{j \sigma}.\]Parameters: - U_matrix (float numpy array) – The four-index interaction matrix in the original basis.
- T (real/complex numpy array, optional) – Transformation matrix for basis change. Must be provided if basis=’other’.
Returns: U_matrix – The four-index interaction matrix in the new basis.
Return type: float numpy array
-
triqs.operators.util.U_matrix.
spherical_to_cubic
(l, convention='triqs')[source] Get the spherical harmonics to cubic harmonics transformation matrix.
Parameters: - l (integer) – Angular momentum of shell being treated (l=2 for d shell, l=3 for f shell).
- convention (string, optional) –
The basis convention. Takes the values
- ’triqs’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”),
- ’vasp’: same as ‘triqs’,
- ’wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”),
- ’wannier90’: basis order as (“z^2”, “xz”, “yz”, “x^2-y^2”, “xy”),
- ’qe’: same as ‘wannier90’.
Returns: T – Transformation matrix for basis change.
Return type: real/complex numpy array
-
triqs.operators.util.U_matrix.
cubic_names
(l)[source] Get the names of the cubic harmonics.
Parameters: l (integer or string) – Angular momentum of shell being treated. Also takes ‘t2g’ and ‘eg’ as arguments. Returns: cubic_names – Names of the orbitals. Return type: tuple of strings
-
triqs.operators.util.U_matrix.
U_J_to_radial_integrals
(l, U_int, J_hund)[source] Determine the radial integrals F_k from U_int and J_hund.
Parameters: - l (integer) – Angular momentum of shell being treated (l=2 for d shell, l=3 for f shell).
- U_int (scalar) – Value of the screened Hubbard interaction.
- J_hund (scalar) – Value of the Hund’s coupling.
Returns: radial_integrals – Slater integrals [F0,F2,F4,..].
Return type: list
-
triqs.operators.util.U_matrix.
radial_integrals_to_U_J
(l, F)[source] Determine U_int and J_hund from the radial integrals.
Parameters: - l (integer) – Angular momentum of shell being treated (l=2 for d shell, l=3 for f shell).
- F (list) – Slater integrals [F0,F2,F4,..].
Returns: - U_int (scalar) – Value of the screened Hubbard interaction.
- J_hund (scalar) – Value of the Hund’s coupling.
-
triqs.operators.util.U_matrix.
angular_matrix_element
(l, k, m1, m2, m3, m4)[source] Calculate the angular matrix element
\[\begin{split}(2l+1)^2 \begin{pmatrix} l & k & l \\ 0 & 0 & 0 \end{pmatrix}^2 \sum_{q=-k}^k (-1)^{m_1+m_2+q} \begin{pmatrix} l & k & l \\ -m_1 & q & m_3 \end{pmatrix} \begin{pmatrix} l & k & l \\ -m_2 & -q & m_4 \end{pmatrix}.\end{split}\]Parameters: - l (integer) –
- k (integer) –
- m1 (integer) –
- m2 (integer) –
- m3 (integer) –
- m4 (integer) –
Returns: ang_mat_ele – Angular matrix element.
Return type: scalar
-
triqs.operators.util.U_matrix.
three_j_symbol
(jm1, jm2, jm3)[source] Calculate the three-j symbol
\[\begin{split}\begin{pmatrix} l_1 & l_2 & l_3\\ m_1 & m_2 & m_3 \end{pmatrix}.\end{split}\]Parameters: - jm1 (tuple of integers) – (j_1 m_1)
- jm2 (tuple of integers) – (j_2 m_2)
- jm3 (tuple of integers) – (j_3 m_3)
Returns: three_j_sym – Three-j symbol.
Return type: scalar
-
triqs.operators.util.U_matrix.
clebsch_gordan
(jm1, jm2, jm3)[source] Calculate the Clebsh-Gordan coefficient
\[\begin{split}\langle j_1 m_1 j_2 m_2 | j_3 m_3 \rangle = (-1)^{j_1-j_2+m_3} \sqrt{2 j_3 + 1} \begin{pmatrix} j_1 & j_2 & j_3\\ m_1 & m_2 & -m_3 \end{pmatrix}.\end{split}\]Parameters: - jm1 (tuple of integers) – (j_1 m_1)
- jm2 (tuple of integers) – (j_2 m_2)
- jm3 (tuple of integers) – (j_3 m_3)
Returns: cgcoeff – Clebsh-Gordan coefficient.
Return type: scalar
-
triqs.operators.util.U_matrix.
subarray
(a, idxlist, n=None)[source] Extract a subarray from a matrix-like object.
Parameters: - a (matrix or array) –
- idxlist (list of tuples) – Columns that need to be extracted for each dimension.
Returns: subarray
Return type: matrix or array
Examples
idxlist = [(0),(2,3),(0,1,2,3)] gives
- column 0 for 1st dim,
- columns 2 and 3 for 2nd dim,
- columns 0, 1, 2 and 3 for 3rd dim.