Library structure

The EDIpack2 library is made of 3 distinct parts. Each part builds into a library (static or dynamic) with its own internal dependencies. Alongside the library, specific module files are generated and stored in the same location during installation.

The organization of the library structure is as follows:

EDIpack2: The EDIpack2 Fortran Library

The core library, implementing the parallel Lanczos-based exact diagonalization of a quantum impurity problem and dynamical correlation functions calculations. It builds into the static libary libedipack2.a and it is accessible via the Fortran module EDIPACK2

EDIpack2ineq: EDIpack2 for inequivalent impurities

This is a sub-library implementing the inequivalent impurities extension for EDIpack2, tackling the solution of systems represented by several independent quantum impurity problems. Either serial or parallel execution schemes with respect to the inequivalent impurities are provided, as well as automatic deployment of the inequivalent files. This EDIpack2ineq builds into the same static library libedipack2.a, yet it is accessible only through the module EDIPACK2INEQ. The naming convention of the EDIpack2 procedures is preserved.

EDIpack2 C-binding: EDIpack2 Fortran-C interface

A module implementing the Fortran-C interface for EDIpack2, including EDIpack2ineq extension where included. The language interoperability leverages over the implicit Fortran ISO_C_BINDING features and is achieved using C-types to wrap the relevant EDIpack2 procedures. The C-binding module serves as a key tool to setup additional API for EDIpack2, as for instance the Python API (see EDIpy2 ). This module builds into dynamic libraries libedipack2_cbinding.so/.dylib. Dependency: edipack2 and, if required, edipack2ineq.