manybody_operator¶
- edrixs.manybody_operator.build_opers(nfermion, coeff, lb, rb=None, tol=1e-10)[source]¶
Build matrix form of many-body operators in the given Fock basis,
\[<F_{l}|\sum_{ij}E_{ij}\hat{f}_{i}^{\dagger}\hat{f}_{j}|F_{r}>\]or
\[<F_l|\sum_{ij}U_{ijkl}\hat{f}_{i}^{\dagger}\hat{f}_{j}^{\dagger} \hat{f}_{k}\hat{f}_{l}|F_r>\]- Parameters:
- nfermion: int
Number of fermion operators. Options can only be 2 or 4 now.
- coeff: array-like
The coefficients.
if nfermion=2, coeff should be at least 2-dimension, and the last 2-dimension is the matrix of coefficients of an operator. For examples,
coeff.shape = (3, 10, 10), means 3 operators with \(10 \times 10\) coefficients matrix.
coeff.shape = (2, 3, 10, 10), means \(2 \times 3=6\) operators with \(10 \times 10\) coefficients matrix.
if nfermion=4, coeff should be at least 4-dimension, and the last 4-dimension is the rank-4 tensor of coefficients of an operator. For examples,
coeff.shape = (3, 10, 10, 10, 10), means 3 operators with \(10 \times 10 \times 10 \times 10\) coefficients tensor.
coeff.shape = (2, 3, 10, 10, 10, 10), means \(2 \times 3=6\) operators with \(10 \times 10 \times 10 \times 10\) coefficients tensor.
- lb: list of array
Left fock basis \(<F_{l}|\).
- rb: list of array
Right fock basis \(|F_{r}>\). rb = lb if rb is None
- tol: float (default: 1E-10)
Only consider the elements of emat that are larger than tol.
- Returns:
- hmat: array-like
At least 2-dimension and the last 2-dimension is matrix form of operators, For examples,
if nfermion=2, coeff.shape=(2, 3, 10, 10), hmat.shape=(2, 3, len(lb), len(rb))
if nfermion=4, coeff.shape=(2, 3, 10, 10, 10, 10), hmat.shape=(2, 3, len(lb), len(rb))
- edrixs.manybody_operator.density_matrix(iorb, jorb, lb, rb)[source]¶
Calculate the matrix form of density operators \(\hat{f}_{i}^{\dagger}\hat{f}_{j}\) in the given Fock basis,
\[<F_{l}|\hat{f}_{i}^{\dagger}\hat{f}_{j}|F_{r}>\]- Parameters:
- iorb: int
Orbital index.
- jorb: int
Orbital index.
- lb: list or array
Left fock basis \(<F_{l}|\).
- rb: list or array
Right fock basis \(|F_{r}>\).
- Returns:
- hmat: 2d complex array
The calculated matrix form of the density operator.
- edrixs.manybody_operator.four_fermion(umat, lb, rb=None, tol=1e-10)[source]¶
Build matrix form of a four-fermionic operator in the given Fock basis,
\[<F_l|\sum_{ij}U_{ijkl}\hat{f}_{i}^{\dagger}\hat{f}_{j}^{\dagger} \hat{f}_{k}\hat{f}_{l}|F_r>\]- Parameters:
- umat: 4d complex array
The 4 index Coulomb interaction tensor.
- lb: list of array
Left fock basis \(<F_{l}|\).
- rb: list of array
Right fock basis \(|F_{r}>\). rb = lb if rb is None
- tol: float (default: 1E-10)
Only consider the elements of umat that are larger than tol.
- Returns:
- hmat: 2d complex array
The matrix form of the four-fermionic operator.
- edrixs.manybody_operator.one_fermion_annihilation(iorb, lb, rb)[source]¶
Build matrix form of a fermionic annihilation operator in the given Fock basis.
\[<F_{l}|\hat{f}_{i}|F_{r}>\]- Parameters:
- iorb: int
Which orbital.
- lb: list or array
Left fock basis \(<F_{l}|\).
- rb: list of array
Right fock basis \(|F_{r}>\).
- Returns:
- hmat: 2d complex array
The matrix form of \(\hat{f}_{i}\).
- edrixs.manybody_operator.two_fermion(emat, lb, rb=None, tol=1e-10)[source]¶
Build matrix form of a two-fermionic operator in the given Fock basis,
\[<F_{l}|\sum_{ij}E_{ij}\hat{f}_{i}^{\dagger}\hat{f}_{j}|F_{r}>\]- Parameters:
- emat: 2d complex array
The impurity matrix.
- lb: list of array
Left fock basis \(<F_{l}|\).
- rb: list of array
Right fock basis \(|F_{r}>\). rb = lb if rb is None
- tol: float (default: 1E-10)
Only consider the elements of emat that are larger than tol.
- Returns:
- hmat: 2d complex array
The matrix form of the two-fermionic operator.