In this document, we discuss the meankondo configuration files and scripts used to study the hierarchical Kondo model, as defined in [G.Benfatto, G.Gallavotti, I.Jauslin, 2015]
The configuration files are compatible with meankondo versions 1.2 through 1.4. The scripts are bash scripts, and should run on most recent versions of bash.
Various options can be set in the 'scripts/kondo_options.sh' file.
meankondo_bin
and ext_functions_dir
options.
threads
option.
We start out by giving the commands needed to compute the flow equation for the hierarchical Kondo model. We will describe the specificities of the configuration files and the scripts the computation relies on in the following sections. The current directory is assumed to be the 'kondo' directory, which contains the 'configs' and 'scripts' directories.
kondo_preprocess -d 1 configs/kondo/kondo.pre | meankondo
kondo_preprocess -d 1 configs/kondo_susc/kondo_susc.pre | meankondo | meantools derive -V all -d 2
kondo_preprocess -d 1 configs/kondo_susc/kondo_susc.pre | meankondo -C | numkondo -I "0:-0.01" -N 100
In order to avoid computing the flow equation at every numerical iteration, and to specify the initial condition in terms of \(\alpha_i\), we have written the 'kondo' script. In order to compute and iterate the flow equation at \(h=0\) for 100 steps with initial condition \(\alpha_0=-0.01\):
./scripts/kondo configs/kondo/kondo gen_flow_eqs
./scripts/kondo configs/kondo/kondo "numerical_flow '0:-0.01' 100"
./scripts/kondo_susceptibility configs/kondo_susc/kondo_susc gen_flow_eqs
./scripts/kondo_susceptibility configs/kondo_susc/kondo_susc "numerical_flow '0:-0.01' '1.e-6' 100"
We specify the hierarchical Kondo model by listing its internal and external fields and giving expressions for the propagator between them. We will not focus on why the model is defined as it is, since such details can be found in [G.Benfatto, G.Gallavotti, I.Jauslin, 2015]. The discussion below may look somewhat daunting, but its main purpose is merely to settle the notations, and may be skipped.
The flow equation of the hierarchical Kondo model is defined as the map relating \(\ell^{[m-1]}\) to \(\ell^{[m]}\) in $$ C^{[m]}\left(1+\sum_{n=0}^8\ell^{[m-1]}_{n}O_{n}^{[\le m-1]}\right)= \left<\prod_{\eta=\pm}\left(1+\sum_{n=0}^8\ell_n^{[m]}O_{n,\eta}^{[\le m]}\right)\right>_m $$ where $$ O^{[\le m]}_{0,\eta}:=\frac12\mathbf A^{[\le m]}_\eta\cdot\mathbf B^{[\le m]}_\eta,\quad O^{[\le m]}_{1,\eta}:=\frac12\mathbf B^{[\le m]}_\eta\cdot\mathbf B^{[\le m]}_\eta $$ $$ O^{[\le m]}_{2,\eta}:=\frac12\mathbf A^{[\le m]}_\eta\cdot\mathbf A^{[\le m]}_\eta,\quad O^{[\le m]}_{3,\eta}:=\frac12\left(\mathbf A^{[\le m]}_\eta\cdot\mathbf A^{[\le m]}_\eta\right)\left(\mathbf B^{[\le m]}_\eta\cdot\mathbf B^{[\le m]}_\eta\right) $$ $$ O^{[\le m]}_{4,\eta}:=\frac12\mathbf A^{[\le m]}_\eta\cdot\omega,\quad O^{[\le m]}_{5,\eta}:=\frac12\mathbf B^{[\le m]}_\eta\cdot\omega,\quad O^{[\le m]}_{6,\eta}:=\frac12\left(\mathbf A^{[\le m]}_\eta\cdot\omega\right)\left(\mathbf B^{[\le m]}_\eta\cdot\omega\right) $$ $$ O^{[\le m]}_{7,\eta}:=\frac12\left(\mathbf A^{[\le m]}_\eta\cdot\mathbf A^{[\le m]}_\eta\right)\left(\mathbf B^{[\le m]}_\eta\cdot\omega\right) O^{[\le m]}_{8,\eta}:=\frac12\left(\mathbf B^{[\le m]}_\eta\cdot\mathbf B^{[\le m]}_\eta\right)\left(\mathbf A^{[\le m]}_\eta\cdot\omega\right),\quad $$ in which \(\omega\in\mathbb R^3\) is of norm 1 and \(\mathbf A_\eta^{[\le m]}\) and \(\mathbf B_\eta^{[\le m]}\) are vectors whose \(j\)-th component, for \(j\in\{1,2,3\}\), is $$ A^{[\le m]j}_\eta:=\sum_{(\alpha,\alpha')\in\{\uparrow,\downarrow\}^2}\psi_{\alpha,\eta}^{[\le m]+}\sigma^j_{\alpha,\alpha'}\psi_{\alpha',\eta}^{[\le m]-},\quad B^{[\le m]j}_\eta:=\sum_{(\alpha,\alpha')\in\{\uparrow,\downarrow\}^2}\varphi_{\alpha,\eta}^{[\le m]+}\sigma^j_{\alpha,\alpha'}\varphi_{\alpha',\eta}^{[\le m]-} $$ in which \(\sigma^j\) is the \(j\)-th Pauli matrix; $$ \psi_{\alpha,\eta}^{[\le m]\pm}:=\frac1{\sqrt2}\psi_\alpha^{[\le m-1]\pm}+\psi_{\alpha,\eta}^{[m]\pm},\quad \varphi_{\alpha,\eta}^{[\le m]\pm}:=\frac1{\sqrt2}\phi_\alpha^{[\le m-1]\pm}+\varphi_{\alpha,\eta}^{[m]\pm}; $$ \(O_n^{[\le m-1]}\) is defined like \(O_{n,\eta}^{[\le m]}\) with \(\psi_{\alpha,\eta}^{[\le m]\pm}\) and \(\varphi_{\alpha,\eta}^{[\le m]\pm}\) replaced by \(\psi_\alpha^{[\le m-1]\pm}\) and \(\varphi_\alpha^{[\le m-1]\pm}\); and \(\left<\cdot\right>_m\) is the average over \(\psi_{\alpha,\eta}^{[m]\pm}\) and \(\varphi_{\alpha,\eta}^{[m]\pm}\).
There are therefore 16 internal fields:
$$
\psi_{\alpha,\eta}^{[m]\pm},\quad \varphi_{\alpha,\eta}^{[m]\pm},\qquad
\alpha\in\{\downarrow,\uparrow\},\ \eta\in\{-,+\};
$$
8 external fields:
$$
\psi_{\alpha}^{[\le m-1]\pm},\quad \varphi_{\alpha}^{[\le m-1]\pm},\qquad
\alpha\in\{\downarrow,\uparrow\};
$$
and 3 super-external fields:
$$
\omega_j,\qquad j\in\{1,2\}
$$
(the condition that \(\omega\) be of norm 1 is implemented using the #!identities
entry).
The propagator is defined as $$ \left<\psi_{\alpha',\eta'}^{[m]-}\psi_{\alpha,\eta}^{[m]+}\right>=\delta_{\alpha,\alpha'}\delta_{\eta,-\eta'}\eta,\quad \left<\varphi_{\alpha',\eta'}^{[m]-}\varphi_{\alpha,\eta}^{[m]+}\right>=\delta_{\alpha,\alpha'}\delta_{\eta,-\eta'}\eta,\quad \left<\psi_{\alpha',\eta'}^{[m]-}\varphi_{\alpha,\eta}^{[m]+}\right>= \left<\varphi_{\alpha',\eta'}^{[m]-}\psi_{\alpha,\eta}^{[m]+}\right>=0. $$
The kondo_preprocess tool was written to simplify the writing of configuration files for this model, which is indeed quite intricate. Essentially, it defines the \(\mathbf A\) and \(\mathbf B\) variables, in terms of which the model can be easily specified.
More precisely, kondo_preprocess defines
$$
{\tt A1}\equiv\mathbf A_+^{[\le m]},\quad
{\tt A2}\equiv\mathbf A_-^{[\le m]},\quad
{\tt a}\equiv\mathbf A^{[\le m-1]},\qquad
{\tt B1}\equiv\mathbf B_+^{[\le m]},\quad
{\tt B2}\equiv\mathbf B_-^{[\le m]},\qquad
{\tt b}\equiv\mathbf B^{[\le m-1]}.
$$
The #!input_polynomial
and #!id_table
entries of the configuration file can then make use of these variables as well as their scalar product, which greatly simplifies them (see the kondo_preprocessor(1)
man page for details). The #!propagator
entry is simplified as well by allowing the use of \(\tt A1\) as a shorthand for \(\psi_{\alpha,+}^{[m]}\) for any \(\alpha\) and similarly for the other variables, which reduces the number of entries of the propagator by a factor 2.
In addition, kondo_preprocessor generates the appropriate #!fields
, #!symbols
, #!identities
and #!groups
entries of the configuration file.
The configuration file therefore reduces to reduced #!propagator
and #!input_polynomial
entries, as well as a #!id_table
entry that contains the expressions of \(O_{n}^{[\le m-1]}\) (remark: since \(\tt a\) was defined without a rescaling factor, the entries of the #!id_table
must contain the appropriate rescaling factor (1, 2 or 4 depending on the number of \(\tt a\))).
kondo
script The kondo
script, located in the 'scripts' directory, was written to automate the steps of the computation of the flow equation and its iterates in the \(h=0\) case, in which \(\ell_n=0\) for \(n\ge4\). A comprehensive description of the usage of the kondo
script can be found at the beginning of the 'scripts/kondo' file itself.
The first manipulation which is automated by the kondo
script is the writing of the flow equation to a new configuration file which can be read to perform numerical iterations of the flow without re-computing the equation. To that end, a new configuration file is created in the same directory as the previous configuration files (which must therefore be writable by the user running the script), containing the flow equation as well as the entries required by numkondo. The name of the new file is obtained by removing '.pre' from the initial configuration file and appending '_num', e.g. 'kondo.pre' becomes 'kondo_num'.
Second, the initial condition for the effective potential is expressed in terms of \(\alpha^{[0]}\):
$$
\exp\left(\sum_{n=0}^3\alpha_n^{[0]}O_n^{[\le 0]}\right)
=1+\sum_{n=0}^3\ell_n^{[0]}O_n^{[\le 0]}
$$
so the relation between \(\alpha^{[0]}\) and \(\ell^{[0]}\) must be computed before starting the numerical iteration, via the meantools exp tool. This is handled by the kondo
script.
kondo_susceptibility
script The kondo_susceptibility
script, located in the 'scripts' directory, was written to automate the steps of the computation of the flow equation and its iterates, as well as its derivatives with respect to \(h\) and the magnetic susceptibility. A comprehensive description of the usage of the kondo_susceptibility
script can be found at the beginning of the 'scripts/kondo_susceptibility' file itself.
The first manipulation which is automated by the kondo_susceptibility
script is the writing of the flow equation and its two first derivatives to a new configuration file which can be read to perform numerical iterations of the flow without re-computing the equation. To that end, a new configuration file is created in the same directory as the previous configuration files (which must therefore be writable by the user running the script), containing the flow equation as well as the entries required by numkondo. The name of the new file is obtained by removing '.pre' from the initial configuration file and appending '_num', e.g. 'kondo_susc.pre' becomes 'kondo_susc_num'.
Second, the initial condition for the effective potential is expressed in terms of \(\alpha^{[0]}\):
$$
\exp\left(\sum_{n=0}^8\alpha_n^{[0]}O_n^{[\le 0]}\right)
=1+\sum_{n=0}^8\ell_n^{[0]}O_n^{[\le 0]}
$$
so the relation between \(\alpha^{[0]}\) and \(\ell^{[0]}\) and its derivatives must be computed before starting the numerical iteration, via the meantools exp tool. This is handled by the kondo_susceptibility
script.
Third, the kondo_susceptibility
script appends two extra equations to the flow equation which can be used to compute the magnetization and susceptibility. These equations are
[%50] = (2)[%50] + [dC1][/C1^1]
so that the magnetization \(m(\beta)\) and susceptibility \(\chi(\beta)\) can be computed from
[%51] = (2)[%51] + [C1][ddC1][/C1^2] + [dC1][dC1][/C1^2]
[%50]
and [%51]
via
$$
m(\beta)=\frac1\beta{\tt [\%50]},\quad
\chi(\beta)=\frac1\beta{\tt [\%51]}.
$$