# U matrix construction¶

Tools to generate the U-matrices used with Hamiltonian-construction functions are provided in the pytriqs.operators.util.U_matrix module.

pytriqs.operators.util.U_matrix.U_matrix(l, radial_integrals=None, U_int=None, J_hund=None, basis='spherical', T=None)[source]

Calculate the full four-index U matrix being given either radial_integrals or U_int and J_hund. The convetion for the U matrix is that used to construct the Hamiltonians, namely:

$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}.$ U_matrix : float numpy array The four-index interaction matrix in the chosen basis.
pytriqs.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. 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.
pytriqs.operators.util.U_matrix.U_matrix_kanamori(n_orb, U_int, J_hund)[source]

Calculate the Kanamori U and Uprime matrices.

Parameters: n_orb : integer Number of orbitals in basis. U_int : scalar Value of the screened Hubbard interaction. J_hund : scalar Value of the Hund’s coupling. 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.
pytriqs.operators.util.U_matrix.t2g_submatrix(U, convention='')[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 ‘’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”), ‘wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”). U_t2g : float numpy array The t2g component of the interaction matrix.
pytriqs.operators.util.U_matrix.eg_submatrix(U, convention='')[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 ‘’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”), ‘wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”). U_eg : float numpy array The eg component of the interaction matrix.
pytriqs.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’. U_matrix : float numpy array The four-index interaction matrix in the new basis.
pytriqs.operators.util.U_matrix.spherical_to_cubic(l, convention='')[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 ‘’: basis ordered as (“xy”,”yz”,”z^2”,”xz”,”x^2-y^2”), ‘wien2k’: basis ordered as (“z^2”,”x^2-y^2”,”xy”,”yz”,”xz”). T : real/complex numpy array Transformation matrix for basis change.
pytriqs.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. cubic_names : tuple of strings Names of the orbitals.
pytriqs.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. radial_integrals : list Slater integrals [F0,F2,F4,..].
pytriqs.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,..]. U_int : scalar Value of the screened Hubbard interaction. J_hund : scalar Value of the Hund’s coupling.
pytriqs.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 ang_mat_ele : scalar Angular matrix element.
pytriqs.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) three_j_sym : scalar Three-j symbol.
pytriqs.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) cgcoeff : scalar Clebsh-Gordan coefficient.
pytriqs.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. subarray : 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.