risb.helpers module¶
Helper functions to perform rotationally invariant slave-boson mean-field theory self-consistent loop.
- risb.helpers.block_to_full(A)[source]¶
Return a full block matrix from each block.
- Parameters:
A (numpy.ndarray) – A block matrix indexed as
A[...,block1,block2,orb1,orb2]
.- Returns:
Matrix A of shape
A[...,block * orb, block * orb]
.- Return type:
Notes
FIXME this does not have to be a numpy array, it could be a ragged list of lists if each block has a different size. So we should not use shape and handle the ragged list differently.
- risb.helpers.get_R_h0_kin_k_R(R, h0_kin_k, vec)[source]¶
Return the matrix representation of the kinetic energy term in the quasiparticle Hamiltonian of RISB.
- Parameters:
R (numpy.ndarray) – Renormalization matrix from quasiparticles to electrons.
h0_kin_k (numpy.ndarray) – Single-particle dispersion between local clusters. Indexed as k, orb_i, orb_j.
vec (numpy.ndarray) – Eigenvectors of quasiparticle Hamiltonian. Indexed as k, each column an eigenvector.
- Returns:
R_h0_kin_k_R – Matrix representation of kinetic part of quasiparticle Hamiltonian
H^qp
.- Return type:
- risb.helpers.get_d(rho_qp, ke)[source]¶
Return hybridization matrix of impurity problem.
Assumes the quasiparticle kinetic energy is lopsided as has not been multiplied by R on the left-hand side.
- Parameters:
rho_qp (numpy.ndarray) – Quasiparticle density matrix obtained from the mean-field.
ke (numpy.ndarray) – Lopsided quasiparticle kinetic energy.
- Returns:
D – Hybridization coupling.
- Return type:
Notes
Eq. 35 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_d2(rho_qp, ke, R)[source]¶
Return hybridization matrix of impurity problem.
This will invert R, so will not work in a Mott insulator when R is singular.
- Parameters:
rho_qp (numpy.ndarray) – Quasiparticle density matrix obtained from the mean-field.
ke (numpy.ndarray) – Quasiparticle kinetic energy.
R (numpy.ndarray) – Renormalization matrix from electrons to quasiparticles.
- Returns:
D – Hybridization coupling.
- Return type:
Notes
Eq. 35 in 10.1103/PhysRevX.5.011008.
The singular nature of R might be fixed by using the pseudo-inverse (untested).
- risb.helpers.get_f1(rho_cf, rho_qp, R)[source]¶
Return the first self-consistent equation of RISB.
- Parameters:
rho_cf (numpy.ndarray) – c,f-electron hybridization density matrix from impurity.
rho_qp (numpy.ndarray) – Quasiparticle density matrix obtained from the mean-field.
R (numpy.ndarray) – Renormalization matrix from electrons to quasiparticles.
- Returns:
f1 – First self-consistency equation.
- Return type:
Notes
Eq. 38 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_f2(rho_f, rho_qp)[source]¶
Return the second self-consistent equation of RISB.
- Parameters:
rho_f (numpy.ndarray) – f-electron density matrix from impurity.
rho_qp (numpy.ndarray) – Quasiparticle density matrix obtained from the mean-field.
- Returns:
f2 – Second self-consistency equation.
- Return type:
Notes
Eq. 39 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_h0_kin_k(h0_k, projectors=None, gf_struct_mapping=None)[source]¶
Return a matrix representation of only the kinetic terms between clusters/local subspaces of a non-interacting dispersion.
- Parameters:
h0_k (dict[numpy.ndarray]) – Single-particle dispersion in each block.
projectors (list[dict[numpy.ndarray]] | None, optional) – The projectors onto each subspace of a local cluster within the supercell organized into single-particle symmetry blocks.
gf_struct_mapping (list[dict[str, str]] | None, optional) – The mapping from the symmetry blocks in the subspace to the symmetry blocks of h0_k. Default assumes the keys in projectors are the same as the keys in h0_k.
- Returns:
The single-particle hopping with only the kinetic contribution, without the single-particle terms from the clusters defined by the projectors.
- Return type:
- risb.helpers.get_h0_kin_k_R(R, h0_kin_k, vec)[source]¶
Return the matrix representation of the lopsided kinetic energy term in the quasiparticle Hamiltonian of RISB.
- Parameters:
R (numpy.ndarray) – Rormalization matrix from electrons to quasiparticles.
h0_kin_k (numpy.ndarray) – Single-particle dispersion between local clusters. Indexed as k, orb_i, orb_j.
vec (numpy.ndarray) – Eigenvectors of quasiparticle Hamiltonian. Indexed as k, each column an eigenvector.
- Returns:
h0_kin_k_R – Matrix representation of lopsided quasiparticle Hamiltonian.
- Return type:
Notes
This is equivalent to the kinetic part of
H^qp
with the inverse of the renormalization matrix R multiplied on the left.
- risb.helpers.get_h0_kin_k_mat(h0_k, P)[source]¶
Return a matrix representation of the kinetic terms between clusters/local subspaces of a non-interacting dispersion.
This function only subtracts off the local terms in a single subspace given by
P
.- Parameters:
h0_k (numpy.ndarray) – Single-particle dispersion.
P (numpy.ndarray) – The projector onto a local cluster within the supercell.
- Returns:
The single-particle hopping without the contribution from the cluster defined by the projector.
- Return type:
- risb.helpers.get_h0_loc_matrix(h0_k, P=None)[source]¶
Return a matrix representation of the local terms in a non-interacting dispersion.
If a projector
P
onto a local subspace is given the local terms are only in that subspace.- Parameters:
h0_k (numpy.ndarray) – Single-particle dispersion.
P (numpy.ndarray | None, optional) – The projector onto a local cluster within the supercell.
- Returns:
The matrix of single-particle hopping/energies on a cluster defined by the projector.
- Return type:
- risb.helpers.get_h_qp(R, Lambda, h0_kin_k, mu=0)[source]¶
Construct the quasiparticle Hamiltonian \(\hat{H}^{\mathrm{qp}}\).
- Parameters:
R (numpy.ndarray) – Renormalization matrix) from electrons to quasiparticles
Lambda (numpy.ndarray) – Correlation potential of quasiparticles.
h0_kin_k (numpy.ndarray) – Single-particle dispersion between local clusters. Indexed as k, orb_i, orb_j
mu (float, optional) – Chemical potential
- Returns:
h_qp – Indexed as k, orb_i, orb_j
- Return type:
Notes
Eq. A34 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_ke(h0_kin_k_R, vec, kweights, P=None)[source]¶
Return average lopsided kinetic energy matrix of the quasiparticle Hamiltonian in RISB.
- Parameters:
h0_kin_k_R (numpy.ndarray) – Single-particle dispersion between local clusters with R matrix multiplied on the right.
vec (numpy.ndarray) – Eigenvectors of quasiparticle Hamiltonian.
kweights (numpy.ndarray) – Integration weights at each k-point for each band (eigenvector).
P (numpy.ndarray, optional) – Projection matrix onto correlated subspace.
- Returns:
ke – Lopsided quasiparticle kinetic energy from the mean-field.
- Return type:
Notes
Eq. 35 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_ke2(R_h0_kin_k_R, vec, kweights, P=None)[source]¶
Return average kinetic energy matrix of the quasiparticle Hamiltonian in RISB.
- Parameters:
R_h0_kin_k_R (numpy.ndarray) – Kinetic part of quasiparticle Hamiltonain.
vec (numpy.ndarray) – Eigenvectors of quasiparticle Hamiltonian.
kweights (numpy.ndarray) – Integration weights at each k-point for each band (eigenvector).
P (numpy.ndarray, optional) – Projection matrix onto correlated subspace.
- Returns:
ke – Quasiparticle kinetic energy from the mean-field.
- Return type:
Notes
Eq. 35 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_lambda(R, D, Lambda_c, rho_f)[source]¶
Return correlation potential matrix from impurity problem parameters and density matrices.
- Parameters:
R (numpy.ndarray) – Renormalization matrix from electrons to quasiparticles.
D (numpy.ndarray) – Hybridization coupling.
Lambda_c (numpy.ndarray) – Bath coupling.
rho_f (numpy.ndarray) – f-electron density matrix from impurity.
- Returns:
Lambda – Correlation potential of quasiparticles.
- Return type:
Notes
Derived from Eq. 36 in 10.1103/PhysRevX.5.011008 by replacing the quasipartice density matrix with the f-electron density matrix using Eq. 39.
- risb.helpers.get_lambda_c(rho_qp, R, Lambda, D)[source]¶
Return bath matrix of impurity problem.
- Parameters:
rho_qp (numpy.ndarray) – Quasiparticle density matrix obtained from the mean-field.
R (numpy.ndarray) – Renormalization matrix from electrons to quasiparticles.
Lambda (numpy.ndarray) – Correlation potential of quasiparticles.
D (numpy.ndarray) – Hybridization coupling.
- Returns:
Lambda_c – Bath coupling.
- Return type:
Notes
Eq. 36 in 10.1103/PhysRevX.5.011008.
- risb.helpers.get_r(rho_cf, rho_f)[source]¶
Return renormalization matrix from impurity problem density matrices.
- Parameters:
rho_cf (numpy.ndarray) – c,f-electron hybridization density matrix from impurity.
rho_f (numpy.ndarray) – f-electron density matrix from impurity.
- Returns:
R – Renormalization matrix from electrons to quasiparticles.
- Return type:
Notes
Derived from Eq. 38 in 10.1103/PhysRevX.5.011008 by replacing the quasiparticle density matrix with the f-electron density matrix using Eq. 39.
- risb.helpers.get_rho_qp(vec, kweights, P=None)[source]¶
Return the single-particle density matrix of the quasiparticle Hamiltonian \(\hat{H}^{\mathrm{qp}}\).
- Parameters:
vec (numpy.ndarray) – Eigenvectors of quasiparticle Hamiltonian.
kweights (numpy.ndarray) – Integration weights at each k-point for each band (eigenvector).
P (numpy.ndarray, optional) – Projection matrix onto correlated subspace.
- Returns:
rho_qp – Quasiparticle density matrix from mean-field.
- Return type:
Notes
Eqs. 32 and 34 in 10.1103/PhysRevX.5.011008, but not in the natural-basis gauge. See Eq. 112 in the supplemental of 10.1103/PhysRevLett.118.126401.