diff options
Diffstat (limited to 'doc/meankondo-doc.html')
-rw-r--r-- | doc/meankondo-doc.html | 64 |
1 files changed, 35 insertions, 29 deletions
diff --git a/doc/meankondo-doc.html b/doc/meankondo-doc.html index 7074b56..75c9583 100644 --- a/doc/meankondo-doc.html +++ b/doc/meankondo-doc.html @@ -1,7 +1,7 @@ <html> <head> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script> - <!--<script type="text/javascript" src="/usr/share/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>--> + <!--<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>--> + <script type="text/javascript" src="/usr/share/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script> <style> body { @@ -69,10 +69,10 @@ </head> <body> - <h1 style="margin-bottom:50pt;">meankondo <span style="margin-left:10pt;font-size:18pt">v1.4</span></h1> + <h1 style="margin-bottom:50pt;">meankondo <span style="margin-left:10pt;font-size:18pt">v1.5</span></h1> <p> - This is the official documentation for <b>meankondo</b>, version 1.4. The aim of this document is not to give a technical description of how to use the various programs bundled with <b>meankondo</b>, nor is it to explain where hierarchical models come from and what their meaning is, but rather a conceptual overview of how <b>meankondo</b> 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 <b>meankondo</b> source code. For a more theoretical discussion of Fermionic hierarchical models, see <a href="http://ian.jauslin.org/publications/15bgj">[G.Benfatto, G.Gallavotti, I.Jauslin, 2015]</a>. + This is the official documentation for <b>meankondo</b>, version 1.5. The aim of this document is not to give a technical description of how to use the various programs bundled with <b>meankondo</b>, nor is it to explain where hierarchical models come from and what their meaning is, but rather a conceptual overview of how <b>meankondo</b> 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 <b>meankondo</b> source code. For a more theoretical discussion of Fermionic hierarchical models, see <a href="http://ian.jauslin.org/publications/15bgj">[G.Benfatto, G.Gallavotti, I.Jauslin, 2015]</a>. </p> <h2 style="margin-top:50pt;">Table of contents</h2> @@ -92,9 +92,9 @@ </ul> <li class="toc_sec"><a href="#operations">Operations on flow equations</a></li> <ul> + <li class="toc_sub"><a href="#processing">Pre- and post-processing</a></li> <li class="toc_sub"><a href="#numerical_evaluation">Numerical Evaluation</a></li> - <li class="toc_sub"><a href="#exponentiation">Exponentiation</a></li> - <li class="toc_sub"><a href="#derivation">Derivation</a></li> + <li class="toc_sub"><a href="#differentiation">Differentiation</a></li> </ul> <li class="toc_sec"><a href="#exactness">Comments on the exactness of the computation</a></li> <li class="toc_sec"><a href="#authors">Authors</a></li> @@ -107,13 +107,9 @@ <ul> <li><b>meankondo</b>: computes the flow equation.</li> <li><b>numkondo</b>: iterate the flow equation numerically.</li> - <li><b>meantools</b>: tools to exponentiate, derive and evaluate a flow equation.</li> + <li><b>meantools</b>: tools to take products, sums, exponentials or logairhtms, differentiate or evaluate a flow equation.</li> <li><b>meantools-convert</b>: python script to convert a flow equation to C, javascript or LaTeX code.</li> </ul> - as well as <i>pre-processors</i>, whose purpose is to help with writing configuration files for specific models: - <ul> - <li><b>kondo_preprocess</b>: hierarchical Kondo model.</li> - </ul> In addition, <b>meankondo</b> includes a library, <b>libkondo</b>, which can either be compiled as a <i>shared</i> or a <i>static</i> object, and contains the various structures and functions <b>meankondo</b> is built with. </p> @@ -127,13 +123,13 @@ </p> <p> - Given a configuration file 'config', the flow equation can be computed by + Given a configuration file 'config.mk', the flow equation can be computed by <code class="codeblock"> - meankondo config + meankondo config.mk </code> and it can be iterated for, say, 100 steps starting from \(\ell_0^{[m]}=-0.01\) using <code class="codeblock"> - meankondo -C config | numkondo -N 100 -I "0:-0.01" + meankondo -C config.mk | numkondo -N 100 -I "0:-0.01" </code> </p> @@ -150,7 +146,7 @@ <li><b>external</b>: which are organized in pairs, and are denoted by \((\Psi_i^+,\Psi_i^-)\) for \(i\in\{1,\cdots,E\}\). <li><b>super-external</b>: which denoted by \(H_i\) for \(i\in\{1,\cdots,X\}\) (the only difference with external fields is that super-external fields are not in pairs, which is a seemingly innocuous difference; but super-external fields are meant to be used for different purposes as external fields (see <a href="#flow_equation_definition">Definition</a> below)). </ul> - 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 <i>polynomials over the fields</i> is well defined). Some of the fields (<i>Fermions</i>) anti-commute with each other (two fields \(a\) and \(b\) are said to anti-commute if \(ab\equiv-ba\)), and the rest (<i>Bosons</i>) commute. Which fields are Fermions and which are Bosons is specified in the <code>#!fields</code> entry in the configuration file. <b>(Warning: As of version 1.4, all internal fields must be Fermions.)</b> + 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 <i>polynomials over the fields</i> is well defined). Some of the fields (<i>Fermions</i>) anti-commute with each other (two fields \(a\) and \(b\) are said to anti-commute if \(ab\equiv-ba\)), and the rest (<i>Bosons</i>) commute. Which fields are Fermions and which are Bosons is specified in the <code>#!fields</code> entry in the configuration file. <b>(Warning: As of version 1.5, all internal fields must be Fermions.)</b> </p> <p> In the configuration file of the <b>meankondo</b> program, the fields are specified in the <code>#!fields</code> entry. @@ -174,6 +170,16 @@ In the configuration file of the <b>meankondo</b> program, the propagator is specified in the <code>#!propagator</code> entry. Note that <b>meankondo</b> recognizes numeric propagators as well as symbolic ones. </p> + <p> + It is convenient to re-expres the Wick rule in determinant form: if \(M\) is the \(n\times n\) matrix whose entries are \(M_{a,b}=\langle\psi_{i_a}^+\psi_{j_b}^-\rangle\), then + $$ + \langle\psi_{i_1}^+\psi_{j_1}^-\cdots\psi_{i_n}^+\psi_{j_n}^-\rangle= + \det(M). + $$ + <b>meankondo</b> implements an algorithm, based on an <i>LU decomposition</i>, to compute \(\det(M)\) in \(O(n^3)\) operations. However, when performing the LU decomposition, elements of \(M\) are divided, and since polynomial divisions are not supported in <b>meankondo</b>, the LU decomposition will only be performed if every entry of the propagator is numeric. If the propagator has symbolic entries, then <b>meankondo</b> computes the means summing over permutations, which requires \(O(n!)\) operations but does not require divisions. + </p> + + <h2 class="section" id="flow_equation">Flow equation</h2> <p> In this section, we discuss what flow equations are, and how <b>meankondo</b> computes them. @@ -247,39 +253,39 @@ <h2 class="section" id="operations">Operations on flow equations</h2> <p> - In this section we describe the various operations on flow equations that the tools bundled with <b>meankondo</b> support. + In this section we describe the various operations on flow equations that <b>meankondo</b> and the tools bundled with it support. </p> - <h3 class="subsection" id="numerical_evaluation">Numerical evaluation</h3> + <h3 class="subsection" id="processing">Pre- and post-processing</h3> <p> - 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 <b>meantools eval</b> or <b>numkondo</b> 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. + <b>meankondo</b> can perform operations on the effective potential before and after applying the renormalization group transformation. This is useful, for instance, if the effective potential is expressed as an expontential: \(exp(W)\), in which case the input polynomial can be exponentiated before the computation, and the logarithm taken after the computation. To do this, <b>meankondo</b> implements some basic symbolic processing. For the syntax of the symbolic processing, see the <b>man</b> pages bundled with <b>meankondo</b>. The pre-processing is done in the <code>#!input_polynomial</code> configuration entry, and the post-processing can be done in the <code>#!postprocess_operation</code>, <code>#!postprocess_flow_equation</code> or <code>#!numerical_postprocess_operation</code> entries. In addition, <b>meantoolds expand</b> can be used to compute sums, products, exponentials and logarithms of effective potentials. </p> <p> - Numerical evaluation is handled in a straightforward manner, but for the following consideration. As was mentioned in <a href="#flow_equation_computation">Computation</a>, \(\mathcal R\) is a polynomial in \((\underline\ell,C^{-1}(\underline\ell))\), and when evaluating \(\mathcal R(\underline\ell)\), <b>meankondo</b> first evaluates \(C\) and the computes \(\ell'_n(\underline\ell)\). + There are subtle differences between using <code>#!postprocess_operation</code>, <code>#!postprocess_flow_equation</code> and <code>#!numerical_postprocess_operation</code>. With <code>#!postprocess_operation</code>, the post-processing operation is done immediately after having computed the average. With <code>#!postprocess_flow_equation</code> and <code>#!numerical_postprocess_operation</code>, the avergae is first turned into a flow equation, and then the post-processing is applied to each equation. The main difference is in the handling of the constant term of the polynomials, see the <b>man</b> for details. The <code>numerical</code> entry is to be used for the numerical evaluation of the flow only, using <b>numkondo</b>. </p> - <h3 class="subsection" id="exponentiation">Exponentiation</h3> + <h3 class="subsection" id="numerical_evaluation">Numerical evaluation</h3> <p> - 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 <b>meankondo</b>: - $$ - \exp(W)=1+V. - $$ - This is handled by <b>meantools exp</b>, which computes the running coupling constants appearing in \(V\) in terms of those in \(W\). + 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 <b>meantools eval</b> or <b>numkondo</b> 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. + </p> + + <p> + Numerical evaluation is handled in a straightforward manner, but for the following consideration. As was mentioned in <a href="#flow_equation_computation">Computation</a>, \(\mathcal R\) is a polynomial in \((\underline\ell,C^{-1}(\underline\ell))\), and when evaluating \(\mathcal R(\underline\ell)\), <b>meankondo</b> first evaluates \(C\) and the computes \(\ell'_n(\underline\ell)\). </p> - <h3 class="subsection" id="derivation">Derivation</h3> + <h3 class="subsection" id="differentiation">Differentiation</h3> <p> - 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 <b>meantools derive</b> to compute the derivatives of a flow equation with respect to an external variable. + 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 <b>meantools differentiate</b> to compute the derivatives of a flow equation with respect to an external variable. </p> <p> - The input of <b>meantools derive</b> 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. + The input of <b>meantools differentiate</b> 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 differentiated 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. </p> <h2 class="section" id="exactness">Comments on the exactness of the computation</h2> <p> - The computation of the flow equation, as well as its exponentiation and derivation, are <i>exact</i> 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 <i>exact</i>. 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 <code>long int</code> type, which, at least using the C library <b>meankondo</b> was tested with (that is <code>glibc 2.21</code>), 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. + The computation of the flow equation, as well as all the operations done on it, are <i>exact</i> 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 <i>exact</i>. 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 <code>long int</code> type, which, at least using the C library <b>meankondo</b> was tested with (that is <code>glibc 2.21</code>), 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. </p> <!--<p> |