meankondo v1.4

This is the official documentation for meankondo, version 1.4. The aim of this document is not to give a technical description of how to use the various programs bundled with meankondo, nor is it to explain where hierarchical models come from and what their meaning is, but rather a conceptual overview of how meankondo approaches the computation of flow equations, and how its programs can be made to interact with one another to compute various quantities. For a more technical description, see the man pages included with the meankondo source code. For a more theoretical discussion of Fermionic hierarchical models, see [G.Benfatto, G.Gallavotti, I.Jauslin, 2015].

Table of contents


meankondo is a collection of tools to compute and manipulate the renormalization group flow in Fermionic hierarchical models. The programs included in meankondo are the following:

as well as pre-processors, whose purpose is to help with writing configuration files for specific models: In addition, meankondo includes a library, libkondo, which can either be compiled as a shared or a static object, and contains the various structures and functions meankondo is built with.

Remark: The name "meankondo" comes from the fact that it was originally developed for the hierarchical Kondo model, though the tools in meankondo are quite versatile and can be used for a wide variety of Fermionic hierarchical models.


We first discuss the more elementary commands that can be used to compute and iterate flow equations. The rest of this document is dedicated to what flow equations are and how meankondo represents and manipulates them.

Given a configuration file 'config', the flow equation can be computed by meankondo config and it can be iterated for, say, 100 steps starting from \(\ell_0^{[m]}=-0.01\) using meankondo -C config | numkondo -N 100 -I "0:-0.01"

Fermionic hierarchical models

In this section, we discuss how the models that meankondo can process are defined. A model is specified by a collection of fields, and a propagator between pairs of fields.


Fields are the elementary objects in terms of which a model is defined. Fields can be one of

The fields are used as a basis for a complex algebra, so that we can take products and linear combinations of fields (in other words, the concept of polynomials over the fields is well defined). Some of the fields (Fermions) anti-commute with each other (two fields \(a\) and \(b\) are said to anti-commute if \(ab\equiv-ba\)), and the rest (Bosons) commute. Which fields are Fermions and which are Bosons is specified in the #!fields entry in the configuration file. (Warning: As of version 1.4, all internal fields must be Fermions.)

In the configuration file of the meankondo program, the fields are specified in the #!fields entry.


Given a collection of fields, a model is specified as a recipe for computing the average of a polynomial of fields. We will use the following notation: given a polynomial \(F(\psi,\Psi,H)\) in the fields, its average will be denoted by \(\langle F(\psi,\Psi,H)\rangle\). The average is a linear operation, and, as indicated by the name "internal", only acts on internal fields, so that the external and super-external fields are viewed as constants for the averaging operation and can be factored out. It therefore suffices to define the average of a monomial of internal fields.

First of all, a monomial of internal fields which does not contain the same number of \(\psi^+_i\) as \(\psi^-_j\) is \(0\). The average of a monomial of the form \(\psi_{i_1}^+\psi_{j_1}^-\cdots\psi_{i_n}^+\psi_{j_n}^-\) in which \(n\in\mathbb N\), \((i_1,\cdots,i_n)\in\{1,\cdots,I\}^n\) and \((j_1,\cdots,j_n)\in\{1,\cdots,I\}^n\), is computed using the Wick rule: $$ \langle\psi_{i_1}^+\psi_{j_1}^-\cdots\psi_{i_n}^+\psi_{j_n}^-\rangle= \sum_{\pi\in\mathcal S_n}(-1)^\pi\langle\psi_{i_1}^+\psi_{j_{\pi(1)}}^-\rangle\cdots\langle\psi_{i_n}^+\psi_{j_{\pi(N)}}^-\rangle $$ in which \(\mathcal S_n\) denotes the set of permutations of \(\{1,\cdots,n\}\) and \((-1)^\pi\) denotes the signature of \(\pi\). Using the Wick rule, we can specify any average by defining the quadratic moments of the model, similarly to the moments of a 0-mean Gaussian measure. The collection of all quadratic moments of the form $$\langle\psi_i^+\psi_j^-\rangle$$ with \((i,j)\in\{1,\cdots,I\}^2\) is called the propagator of the model.

In the configuration file of the meankondo program, the propagator is specified in the #!propagator entry. Note that meankondo recognizes numeric propagators as well as symbolic ones.

Flow equation

In this section, we discuss what flow equations are, and how meankondo computes them.


We first discuss how a flow equation is defined from a renormalization group map. The discussion below is not, in any sense, precise, and is meant as a guiding idea to understand why meankondo does what it does in the way it does.

Consider a map, which we will call the renormalization group flow, of the form: $$ V^{[m]}(\Phi^{[m]},H)\longmapsto V^{[m-1]}(\Phi^{[m-1]},H)=\frac1{C^{[m]}}\left(\left\langle\prod_{\nu=1}^k\left(1+V^{[m]}(\Phi_\nu^{[m]},H)\right)\right\rangle-1\right) $$ where \(V^{[m]}\) anf \(V^{[m-1]}\) are polynomials with no constant term, \(C^{[m]}\in\mathbb R\setminus\{0\}\) is a constant, \(\langle\cdot\rangle\) is the average defined in Propagator, \(H\) is the collection of super-external fields, \(k=I/E\) which we assume to be an integer, \(\{\Phi^{[m]\pm}_{\nu,i}\}_{i\in\{1,\cdots,E\},\ k\in\{1,\cdots,k\}}\) and \(\{\Phi^{[m-1]\pm}_{i}\}_{i\in\{1,\cdots,E\}}\) are collections of combinations of the internal and external fields, of the form $$ \Phi^{[m]\pm}_{\nu,i}=\alpha_i\Psi_i^\pm+\psi_{j_\nu^{(i)}}^\pm,\quad \Phi^{[m-1]\pm}_{i}=\Psi_i^\pm $$ in which \(\alpha_i\in\mathbb R\setminus\{0\}\) is some re-scaling factor, and $$ \bigcup_{i\in\{1,\cdots,E\}}^\circ\{j_1^{(i)},\cdots,j_k^{(i)}\}=\{1,\cdots,I\} $$ in which the \(\circ\) over the union means it is disjoint.

If \(V^{[m-1]}\) can be written in the same form as \(V^{[m]}\), then the renormalization group map can be written as a finite system of equations: if there exist \(p\in\mathbb N\), \((\ell_1^{[m]},\cdots,\ell_p^{[m]})\in\mathbb C^p\), \((\ell_1^{[m-1]},\cdots,\ell_p^{[m-1]})\in\mathbb C^p\), and polynomials \((O_1(\Phi,H),\cdots,O_l(\Phi,H))\) such that $$ V^{[m]}(\Phi_\nu^{[m]},H)=\sum_{n=1}^p\ell_n^{[m]}O_n(\Phi_\nu^{[m]},H),\quad V^{[m-1]}(\Phi^{[m-1]},H)=\sum_{n=1}^p\ell_n^{[m-1]}O_n(\Phi^{[m-1]},H) $$ then the renormalization group map can be written as a finite system of equations, called the flow equation, which maps $$ (\ell_1^{[m]},\cdots,\ell_p^{[m]})\longmapsto(C^{[m]},\ell_1^{[m-1]},\cdots,\ell_1^{[m-1]}) $$ (we added the constant \(C^{[m]}\) which plays an important role). The collection \(\underline\ell\) is called the collection of running coupling constants.


We now discuss how meankondo computes flow equations. The two relevant configuration file entries are #!input_polynomial and #!id_table.

The entry #!input_polynomial specifies a polynomial \(F(\underline\ell,\psi,\Psi,H)\) in the fields, as well as in a family of complex symbolic variables \(\underline\ell=(\ell_1,\cdots,\ell_p)\). In the context of the computation in Definition, it would be of the form $$ \prod_{\nu=1}^k\left(1+\sum_{n=1}^p\ell_nO_n(\Phi_{\nu}^{[m]},H)\right). $$

The entry #!id_table specifies a sequence of \(p\) polynomials \((O_1(\Psi,H),\cdots,O_p(\Psi,H))\) in the external fields. In the context of the computation in Definition the \(n\)-th polynomial would be $$ O_n(\Phi_{\nu}^{[m]},H) $$ which specifies that \(O_n\) corresponds to \(\ell_n\).

meankondo first computes the average $$ F'(\underline\ell,\Psi,H):=\langle F(\underline\ell,\psi,\Psi,H)\rangle $$ and then groups \(F'\) according to the id table, that is it tries to put it in the form $$ F'(\underline\ell,\Psi,H)=C(\underline\ell)\left(1+\sum_{n=1}^p\ell'_n(\underline\ell)O_n(\Psi,H)\right) $$ in which \(C(\underline\ell)\) is a complex constant term and \(\ell'_n(\underline\ell)\) is some complex coefficient, which are both functions of \(\underline\ell\). Note that for Fermionic hierarchical models, \(\ell'_n\) is a rational function of \(\underline\ell\), and \(C\) is a polynomial in \(\underline\ell\). In addition, \(\ell'_n\) can be expressed as a polynomial in \((\underline\ell,C^{-1}(\underline\ell))\). The flow equation is then defined as $$ \mathcal R:\underline\ell\longmapsto(C(\underline\ell),\ell'_1(\underline\ell),\cdots,\ell'_p(\underline\ell)) $$ If \(F'\) cannot be grouped, then meankondo exits with error code -1.

Operations on flow equations

In this section we describe the various operations on flow equations that the tools bundled with meankondo support.

Numerical evaluation

Once a flow equation \(\mathcal R\) has been computed, it can be numerically evaluated by passing a vector \(\underline\ell\) of double precision floating point numbers to meantools eval or numkondo which computes \(\mathcal R(\underline\ell)\) in the former case, and \(\mathcal R^m(\underline\ell)\) for any \(m\in\mathbb N\) in the latter.

Numerical evaluation is handled in a straightforward manner, but for the following consideration. As was mentioned in Computation, \(\mathcal R\) is a polynomial in \((\underline\ell,C^{-1}(\underline\ell))\), and when evaluating \(\mathcal R(\underline\ell)\), meankondo first evaluates \(C\) and the computes \(\ell'_n(\underline\ell)\).


Oftentimes the renormalization group flow is expressed in terms of an exponential of an effective potential \(\exp(W)\), in which case the exponential must be computed before it can be processed by meankondo: $$ \exp(W)=1+V. $$ This is handled by meantools exp, which computes the running coupling constants appearing in \(V\) in terms of those in \(W\).


This feature was introduced to compute the susceptibility in the hierarchical Kondo model. In that case, some of the running coupling constants depend on the field, \(h\), and the susceptibility is expressed as a derivative of \(C(\underline\ell(h))\) with respect to \(h\). To that end, we wrote meantools derive to compute the derivatives of a flow equation with respect to an external variable.

The input of meantools derive consists in a flow equation and a collection of variables \(X\subset\{1,\cdots,p\}\). Each running coupling constant \(\ell_i\) for \(i\in X\) is assumed to depend on an external parameter, \(h\). The flow equation is then derived with respect to \(h\): for every \(n\in\{1,\cdots,p\}\), the derivative of \(\ell_n'(\underline\ell)\) with respect to \(h\) in terms of \(\partial_h\ell_i\) for \(i\in X\) is computed. It is then appended to the input flow equation.

Comments on the exactness of the computation

The computation of the flow equation, as well as its exponentiation and derivation, are exact in the sense that they only involve operations on integers and are not subject to truncations. The coefficients appearing in the flow equation are therefore exact. This statement has one major caveat: integer operations are only correct as long as the integers involved are not too large. The precise meaning of "not too large" is system dependent. In the source code, integers relating to flow equation coefficients are declared with the long int type, which, at least using the C library meankondo was tested with (that is glibc 2.21), means integers are encoded on 64 bits on 64-bit systems and 32 bits on 32-bit systems. All operations are therefore exact as long as all integers are in \([-2^{31},2^{31}-1]\) on 64-bit systems and \([-2^{15},2^{15}-1]\) on 32-bit systems.

Numerical evaluations are not exact. The numbers manipulated meankondo are either "long doubles" or "MPFR floats", depending on the options passed to numkondo (see man numkondo).


meankondo was written by Ian Jauslin, in the context of a project in collaboration with Giuseppe Benfatto and Giovanni Gallavotti.