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.