# GreensFunction¶

class GreensFunction(processes_per_contour_point=None)

The block tridiagonal inversion method used to calculate the Green’s function and lesser Green’s function.

The method distributes the evaluation of the (lesser) Green’s function for multiple contour points, i.e., energy-points and k-points, over all available processes.

The evaluation of the (lesser) Green’s function in each contour point, can be performed by multiple processes in parallel.

Parameters: processes_per_contour_point (int) – The number of processes used to calculate each contour point. Must be positive. The best performance is obtained when set to 1. Increasing the number of processes per contour point reduces the required memory. Default: 1
processesPerContourPoint()
Returns: The processes per contour point int

## Usage Examples¶

Setup a device calculation that computes the Green’s function and lesser Green’s function via block tridiagonal inversion using 2 MPI processes for each contour point.

greens_function_method = GreensFunction(
processes_per_contour_point=2)
device_algorithm_parameters = DeviceAlgorithmParameters(
equilibrium_method = greens_function_method,
non_equilibrium_method = greens_function_method,
)

calculator = DeviceHuckelCalculator(
device_algorithm_parameters = device_algorithm_parameters,
)


## Notes¶

The method implements the $$\mathcal{O}(N)$$ block tridiagonal inversion algorithm [rPSorensenH+08].

 [rPSorensenH+08] D. E. Petersen, H. H. B. Sørensen, P. C. Hansen, S. Skelboe, and K. Stokbro. Block tridiagonal matrix inversion and fast transmission calculations. J. Comput. Phys., 227(6):3174–3190, 2008. doi:10.1016/j.jcp.2007.11.035.