Library structure

The EDIpack 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:

EDIpack: The EDIpack 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 libedipack.a and it is accessible via the Fortran module EDIPACK

EDIpack2ineq: EDIpack for inequivalent impurities

This is a sub-library implementing the inequivalent impurities extension for EDIpack, 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 libedipack.a, yet it is accessible only through the module EDIPACK2INEQ. The naming convention of the EDIpack procedures is preserved.

EDIpack C-binding: EDIpack Fortran-C interface

A module implementing the Fortran-C interface for EDIpack, 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 EDIpack procedures. The C-binding module serves as a key tool to setup additional API for EDIpack, as for instance the Python API (see EDIpack2py ). This module builds into dynamic libraries libedipack_cbindings.so/.dylib. Dependency: edipack and, if required, edipack2ineq.