# 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.