dmft_tools.interaction_hamiltonian
Contains all functions related to constructing the interaction Hamiltonian.
- dmft_tools.interaction_hamiltonian._adapt_U_4index_for_SO(Umat_full)[source]
Changes the four-index U matrix such that for a system consisting of a single block ‘ud’ with the entries (1, up), (1, down), (2, up), (2, down), … the matrix is consistent with the case without spin-orbit coupling. This can be derived directly from the definition of the Slater Hamiltonian.
- Parameters:
- Umat_fullnumpy array
The four-index interaction matrix without SO.
- Returns:
- Umat_full_SOnumpy array
The four-index interaction matrix with SO. For a matrix U_ijkl, the indices i, k correspond to spin sigma, and indices j, l to sigma’.
- dmft_tools.interaction_hamiltonian._construct_density_density(sum_k, general_params, Umat_full_rotated, icrsh)[source]
Constructs the density-density Slater-Hamiltonian from the four-index interaction matrix.
- dmft_tools.interaction_hamiltonian._construct_dynamic(sum_k, general_params, icrsh)[source]
Constructs the interaction Hamiltonian for a frequency-dependent interaction. Works only without spin-orbit coupling and only for one orbital.
- dmft_tools.interaction_hamiltonian._construct_kanamori(sum_k, general_params, solver_type_per_imp, icrsh, den_den=False)[source]
Constructs the Kanamori interaction Hamiltonian. Only Kanamori does not need the full four-index matrix. Therefore, we can construct it directly from the parameters U and J.
- dmft_tools.interaction_hamiltonian._construct_kanamori_soc(U_int, J_hund, n_orb, map_operator_structure, H_dump=None)[source]
Adapted from triqs.operators.util.hamiltonians.h_int_kanamori. Assumes that spin_names == [‘ud’] and that map_operator_structure is given.
- dmft_tools.interaction_hamiltonian._construct_slater(sum_k, general_params, Umat_full_rotated, icrsh)[source]
Constructs the full Slater-Hamiltonian from the four-index interaction matrix.
- dmft_tools.interaction_hamiltonian._generate_four_index_u_matrix(sum_k, general_params, icrsh)[source]
Generates the four-index interaction matrix per impurity with the interaction parameters U and J (and ratio_F4_F2 for the d shell).
- dmft_tools.interaction_hamiltonian._load_crpa_interaction_matrix(sum_k, general_params, gw_params, filename='UIJKL')[source]
Loads dynamic interaction data to use as an interaction Hamiltonian.
- dmft_tools.interaction_hamiltonian._rotate_four_index_matrix(sum_k, general_params, Umat_full, icrsh)[source]
Rotates the four index matrix into the local frame.
- dmft_tools.interaction_hamiltonian.construct(sum_k, general_params, solver_type_per_imp, gw_params=None)[source]
Constructs the interaction Hamiltonian. Currently implemented are the Kanamori Hamiltonian (usually for 2 or 3 orbitals), the density-density and the full Slater Hamiltonian (for 2, 3, or 5 orbitals). If sum_k.rot_mat is non-identity, we have to consider rotating the interaction Hamiltonian: the Kanamori Hamiltonian does not change because it is invariant under orbital mixing but all the other Hamiltonians are at most invariant under rotations in space. Therefore, sum_k.rot_mat has to be correct before calling this method.
The parameters U and J will be interpreted differently depending on the type of the interaction Hamiltonian: it is either the Kanamori parameters for the Kanamori Hamiltonian or the orbital-averaged parameters (consistent with DFT+U, https://cms.mpi.univie.ac.at/wiki/index.php/LDAUTYPE ) for all other Hamiltonians.
Note also that for all Hamiltonians except Kanamori, the order of the orbitals matters. The correct order is specified here: triqs.github.io/triqs/unstable/documentation/python_api/triqs.operators.util.U_matrix.spherical_to_cubic.html
- dmft_tools.interaction_hamiltonian.h_int_simple_intra(spin_names, n_orb, U, off_diag=None, map_operator_structure=None, H_dump=None)[source]
Create a simple intra orbital density-density Hamiltonian. (no inter orbital terms)
\[H = \frac{1}{2} \sum_{i \sigma \neq \sigma')} U_{i i}^{\sigma \sigma'} n_{i \sigma} n_{i \sigma'}.\]- Parameters:
- spin_nameslist of strings
Names of the spins, e.g. [‘up’,’down’].
- n_orbint
Number of orbitals.
- Ufloat
U value
- off_diagboolean
Do we have (orbital) off-diagonal elements? If yes, the operators and blocks are denoted by (‘spin’, ‘orbital’), otherwise by (‘spin_orbital’,0).
- map_operator_structuredict
Mapping of names of GF blocks names from one convention to another, e.g. {(‘up’, 0): (‘up_0’, 0), (‘down’, 0): (‘down_0’,0)}. If provided, the operators and blocks are denoted by the mapping of
('spin', 'orbital')
.- H_dumpstring
Name of the file to which the Hamiltonian should be written.
- Returns:
- HOperator
The Hamiltonian.