NESSI
v1.1.2
The NonEquilibrium Systems SImulation Library

NESSI
is an opensource software package for the manipulation of nonequilibrium Green’s functions defined on the KadanoffBaym contour. The Green's function method in its timedependent formulation is a versatile framework for the solution of interacting manybody problems out of equilibrium. NESSI
provides classes representing the various types of Green’s functions, implements the basic operations on these functions and allows to solve the corresponding equations of motion. The library is aimed at the study of transient dynamics from an initial equilibrium state, induced by timedependent model parameters.
NESSI
is smartNESSI
is fastNESSI
gets supportPlease cite the following paper whenever you use parts of NESSI:
Fig. [structure] (a) summarizes the content of the NESSI package. In order to allow maximum flexibility, the core constituent of NESSI is the shared library libcntr
. The libcntr
library is written in C++ and provides all the functionalities to treat Green's functions (GFs) on the KB contour. To treat a particular problem within the nonequilibrium Green's function (NEGF) formalism, the user can write a custom C++ program based on the extensive and easytouse libcntr
library (see Fig. [structure] (b)). The NESSI package contains a number of simple example programs, which demonstrate the usage of libcntr
. All callable routines perform various sanity checks in debugging mode, which provide and efficient way of debugging libcntr
based programs. Furthermore, we provide a number of python tools for pre and postprocessing to assist the use of programs based on libcntr
. More details are introduced in Example programs, where we present a number of example programs demonstrating the usage of libcntr
and the python tools. The libcntr
library and the example programs depend on the eigen3
library for efficiently performing matrix operation. Furthermore, the hdf5
library and file system can be used for creating binary, machineindependent output like, for instance, GFs. We further provide python tools for reading and postprocessing GFs from hdf5
format via the h5py
python package.
The central task within the NEGF framework is calculating the singleparticle GF, from which from which all singleparticle observables such as the density or the current can be evaluated. Let us consider the generic manybody Hamiltonian
\begin{equation} H(t) = \sum_{a,b} \epsilon_{a,b}(t) c^\dagger_{a} c_b + V(t) \ , \end{equation}
where \(c^\dagger_a\) ( \(c_a\)) denotes the fermionic or bosonic creation (annihilation) operator with respect to any basis labelled by \(a\) and \(\epsilon_{a,b}(t)\) the corresponding singleparticle Hamiltonian, while \(V(t)\) represents any twobody interaction, the presence of a bath, or other interaction effects. Gathering all indices in compact matrix notation, the GF is obtained from solving the Dyson equation
\begin{equation} \label{eq:dyson_1} \left[i \partial_t \epsilon(t)\right]G(t,t^\prime)  \int_{\mathcal{C}} d\bar{t} \, \Sigma(t,\bar{t}) G(\bar{t},t^\prime) = \delta_\mathcal{C}(t,t^\prime) \ . \end{equation}
Here \(\int_\mathcal{C}\) and \(\delta_\mathcal{C}(t,t^\prime)\) are natural extensions of integrals and Dirac delta function on the KB contour, respectively. Details are discussed in paper. \(\Sigma(t,t^\prime)\) is the socalled selfenergy, which captures all interaction effects originating from \(V(t)\).
The libcntr library provides highly accurate methods for solving the Dyson equation Eq. \eqref{eq:dyson_1} and more. A brief overview of the core routines is presented in Fig. [main_routines]. It includes routines for computing the convolution \([A\ast B](t,t^\prime) = \int_{\mathcal{C}} d\bar{t} \, A(t,\bar{t}) B(\bar{t},t^\prime)\) (cntr::convolution
), which is an essential part of solving Eq. \eqref{eq:dyson_1}. It furthermore provides a highorder solver for Eq. \eqref{eq:dyson_1} (cntr::dyson
) along the full KB contour. In particular, thermal equilibrium and time evolution are treated on equal footing. Moreover, contour integral equations of the type
\begin{equation} \label{eq:vie2_1} G(t,t^\prime) + [F\ast G](t,t^\prime) = Q(t,t^\prime) \end{equation}
can be solved efficiently via cntr::vie2
. A typical example is the selfconsistent \(GW\) approximation: the screened interaction obeys the Dyson equation \(W = V + V\ast \Pi \ast W\), where \(V\) denotes the bare Coulomb interaction, while \(\Pi\) stands for the irreducible polarization. Furthermore, the Dyson equation ( Eq. \eqref{eq:dyson_1}) has the equivalent integral form \(G = G_0 + G_0 \ast \Sigma \ast G\), where \(G_0\) is the free GF with respect to \(\epsilon(t)\) (computed by cntr::green_from_H
). Contour integral equations of the type Eq. \eqref{eq:vie2_1} are efficiently solved by cntr::vie2
.
In manybody theories, the selfenergy \(\Sigma(t,t^\prime)\) can be expressed in terms if Feynman diagrams using the GF themselves. The most common Feynman diagrams consistent of products of two twotime functions, implemented as cntr::Bubble1
and cntr::Bubble2
in libcntr
.
We remark that all routines work equally for fermions and bosons.
While the NESSI package provides a general framework for real time GFs and can be used in many applications, one particularly fruitful application has been realtime dynamical meanfield theory (DMFT). In order to perform DMFT calculations the library needs to be amended with a solver for the DMFT effective impurity problem. Two approximate approaches are weak coupling expansions (in particular Iterated Perturbation Theory, IPT) and strong coupling methods. The strong coupling based methods maps the problem to pseudoparticles, one for each state in the local Hilbert space. This formulation solves the atomic problem exactly and treat the hybridization with the environment perturbatively. The first and second order dressed expansion of this method is commonly known as the NonCrossing Approximation (NCA) and the OneCrossing Approximation (OCA). Currently we are working on a library implementing these methods called the PseudoParticle Strong Coupling (PPSC) library – based on libcntr
– and we plan to make it public in the future.
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. A copy of the MPL one can obtain at https://mozilla.org/MPL/2.0/.
next page Getting started with NESSI