dyson.solvers.static.exact#

Exact diagonalisation.

Functions

orthogonalise_self_energy(static, self_energy)

Orthogonalise a self-energy.

project_eigenvectors(eigvecs, bra[, ket])

Project eigenvectors onto the physical plus auxiliary space.

Classes

Exact(*args, **kwargs)

Exact diagonalisation of the supermatrix form of the self-energy.

dyson.solvers.static.exact.project_eigenvectors(eigvecs: Array, bra: Array, ket: Array | None = None) Array[source]#

Project eigenvectors onto the physical plus auxiliary space.

Parameters:
  • eigvecs – Eigenvectors to be projected.

  • bra – Bra state vector mapping the supermatrix to the physical space.

  • ket – Ket state vector mapping the supermatrix to the physical space. If None, use the same vectors as bra.

Returns:

Projected eigenvectors.

Notes

The physical space is defined by the bra and ket vectors, while the auxiliary part is defined by the null space of the projector formed by the outer product of these vectors.

dyson.solvers.static.exact.orthogonalise_self_energy(static: Array, self_energy: Lehmann, overlap: Array | None = None) tuple[Array, Lehmann, Array, Array | None][source]#

Orthogonalise a self-energy.

Parameters:
  • static – Static part of the self-energy.

  • self_energy – Self-energy.

  • overlap – Overlap matrix for the physical space. If None, assume identity.

Returns:

The static part of the self-energy and the self-energy itself, projected into an orthogonal basis, along with the bra and ket vectors to map the supermatrix to the original physical space.

Notes

The bra and ket vectors essentially transform the orthogonalised self-energy from the orthogonal basis to the original basis. The main use of this function is to generate a self-energy and corresponding bra and ket vectors that can reproduce a Green’s function with a non-identity zeroth moment (overlap).

class dyson.solvers.static.exact.Exact(*args: Any, **kwargs: Any)[source]#

Bases: StaticSolver

Exact diagonalisation of the supermatrix form of the self-energy.

Parameters:
  • matrix – The self-energy supermatrix.

  • bra – The bra excitation vector mapping the supermatrix to the physical space.

  • ket – The ket excitation vector mapping the supermatrix to the physical space.

hermitian: bool = True#
classmethod from_self_energy(static: Array, self_energy: Lehmann, overlap: Array | None = None, **kwargs: Any) Exact[source]#

Create a solver from a self-energy.

Parameters:
  • static – Static part of the self-energy.

  • self_energy – Self-energy.

  • overlap – Overlap matrix for the physical space.

  • kwargs – Additional keyword arguments for the solver.

Returns:

Solver instance.

classmethod from_expression(expression: BaseExpression, **kwargs: Any) Exact[source]#

Create a solver from an expression.

Parameters:
  • expression – Expression to be solved.

  • kwargs – Additional keyword arguments for the solver.

Returns:

Solver instance.

kernel(*args: Any, **kwargs: Any) Any#

Run the solver.

property matrix: Array#

Get the self-energy supermatrix.

property bra: Array#

Get the bra state vector mapping the supermatrix to the physical space.

property ket: Array#

Get the ket state vector mapping the supermatrix to the physical space.

property nphys: int#

Get the number of physical degrees of freedom.