Commit 9a2d1cb6 authored by Jefferson Stafusa E. Portela's avatar Jefferson Stafusa E. Portela
Browse files

More content; including 1st notebook - work in progress.

parent c4810be0
*/*.aux
*/*.blg
*/*.idx
*/*.log
*/*.out
*/*.synctex.gz
*/*.toc
......@@ -18,7 +18,7 @@
\usepackage{xspace}
\usepackage{bm}
\usepackage{subfigure}
\usepackage{tcolorbox}
\usepackage[breakable]{tcolorbox}
\usepackage{dsfont}
\usepackage{footnote}
\usepackage{alltt}
......@@ -28,7 +28,8 @@
\usepackage{url}
\usepackage{booktabs}
\usepackage[breaklinks=true,colorlinks,pdfborder={0 0 0}]{hyperref}
\usepackage{float}
\usepackage{float}
\usepackage{pdfpages}
\usepackage{titlesec}
\usepackage[framemethod=default]{mdframed}
......@@ -46,7 +47,7 @@
\lstdefinestyle{fortran}{
language=Fortran,
basicstyle=\ttfamily,
basicstyle=\ttfamily\small,
keywordstyle=\color{red},
commentstyle=\color{blue},
morecomment=[l]{!\ }% Comment only with space after !
......@@ -60,7 +61,7 @@
\lstdefinestyle{fortran_pseudo_code}{
language=Fortran,
basicstyle=\ttfamily,
basicstyle=\ttfamily\small,
keywordstyle=\color{red},
commentstyle=\normalfont\color{black},
morecomment=[l]{!\ }% Comment only with space after !
......@@ -126,6 +127,7 @@
\numberwithin{exerciseitem}{exercise} % reset counter ; depends on the amsmath package
%%%
\input{Notebooks/notebooks_preamble.tex}
\makeindex
\begin{document}
......@@ -142,29 +144,56 @@
The ALF package provides a general code for auxiliary-field Quantum Monte Carlo simulations and default analysis. In this tutorial we show how users from beginners to specialists can profit from ALF. This document is divided in two parts:
\begin{description}
\item[Part I.] The first, introductory part of the tutorial is based on ALF's python interface -- \texttt{pyALF} -- which greatly simplifies using the code, making it ideal for: obtaining \emph{benchmark} results for established models; \emph{getting started} with QMC and ALF; or just \emph{quickly} running a simulation.
\item[Part I.] The first, introductory part of the tutorial is based on ALF's python interface -- \texttt{pyALF} -- which greatly simplifies using the code, making it ideal for: \emph{obtaining benchmark} results for established models; \emph{getting started} with QMC and ALF; or just \emph{quickly running} a simulation.
\item[Part II.] The second part is independent of the first and aimed at more advanced users who want to simulate their own systems. It guides the user on how to modify the package's Fortran source code and presents the resources implemented to facilitate this task.
\end{description}
This document is intended to be self-contained, but the interested reader should check \href{https://git.physik.uni-wuerzburg.de/ALF/ALF_code/blob/master/Documentation/ALF_v1.0.pdf}{ALF's documentation}, which contains a thorough, systematic description of the package. \red{[Update link when ALF 2 is open.]}
This document is intended to be self-contained, but the interested reader should check \href{https://git.physik.uni-wuerzburg.de/ALF/ALF_code/blob/master/Documentation/ALF_v1.0.pdf}{ALF's documentation}, which contains a thorough, systematic description of the package.
\red{[Update link when ALF 2 is open.]}
%\href{https://git.physik.uni-wuerzburg.de/ALF/ALF/-/blob/master/Documentation/doc.pdf}{documentation}.
%%%%%%%%%%%%%%%%%%%%
\part{Just run it}
What follows is a collection of self-explanatory Jupyter notebooks written in Python, each centered on a detailed example followed by a few simple exercises. The notebooks printed bellow can be found, together with the necessary files and an increasing number of additional notebooks exploring ALF's capabilities, in the \href{https://git.physik.uni-wuerzburg.de/ALF/pyALF}{pyALF repository}.
This a collection of Jupyter notebooks, each centered on a detailed example followed by a few simple exercises, while Part II consists in a set of guided advanced exercises.
can be found, together with its accompanying files, in the \href{https://git.physik.uni-wuerzburg.de/ALF/pyALF}{pyAL repository}.
\section*{Requirements}
ALF is compiled from source, which is downloaded from the \href{https://git.physik.uni-wuerzburg.de:ALF}{ALF repository} when not found locally.
You can download pyALF from the its repository linked above, or simply run from the command line:
\begin{lstlisting}[style=bash]
git clone git@git.physik.uni-wuerzburg.de:ALF/pyALF.git
\end{lstlisting}
To run the notebooks you need the following installed in your machine:
\begin{itemize}
\item Python
\item Jupyter
\item the libraries Lapack and Blas
\item a Fortran compiler, such as \texttt{gfortran} or \texttt{ifort},
\end{itemize}
where the last two are required by the main package \href{https://git.physik.uni-wuerzburg.de:ALF}{ALF}.%, which is automatically handled by pyALF.
\section*{Starting}
Jupyter notebooks \href{https://jupyter.readthedocs.io/en/latest/running.html}{are run} through a Jupyter server started, e.g., from the command line:
\begin{lstlisting}[style=bash]
jupyter notebook
\end{lstlisting}
(or, depending on the system and installation, \texttt{jupyter-notebook})
%\begin{lstlisting}[style=bash]
%jupyter-notebook
%\end{lstlisting}
which opens the "notebook dashboard" in your default browser, where you can navigate through your file structure to the pyALF directory.
\section*{Notebooks}
\input{Notebooks/minimal_ALF_run.tex}
%\includepdf[pages=-,pagecommand={},width=\textwidth]{Notebooks/minimal_ALF_run.pdf}
......@@ -187,6 +216,8 @@ ALF is compiled from source, which is downloaded from the \href{https://git.phys
\part{Getting your hands dirty - changing the code}
%\setcounter{exercise}{0}
Part II consists in a set of guided advanced exercises.
A lot already comes implemented in ALF, but unavoidably, as one proceeds in their own investigations, a new model has to be implemented or a new observable defined -- and for that one has to grapple with the package's Fortran source code. However, in ALF this is made easy by means of predefined structures, templates, and the examples below.
......@@ -205,9 +236,8 @@ Here we will modify the code so as to allow for different hopping matrix eleme
\item Add an extra variable, \texttt{Ham\_Ty}, in the parameter file in the \texttt{VAR\_Hubbard} name space
\item Declare the variable \texttt{Ham\_Ty} in the \texttt{Hamiltonian\_Examples.f90 }.
\item Read in this variable in \texttt{Ham\_set} subroutine of the \texttt{Hamiltonian\_Examples.f90 } file.
\item Modify the hopping matrix in the subroutine \texttt{Ham\_Hop} in the \texttt{Hamiltonian\_Examples.f90 } file.
\lstset{style=fortran}
\begin{lstlisting}
\item Modify the hopping matrix in the subroutine \texttt{Ham\_Hop} in the \texttt{Hamiltonian\_Examples.f90 } file.
\begin{lstlisting}[style=fortran]
DO I = 1, Latt%N
I1 = Latt%nnlist(I,1,0)
I2 = Latt%nnlist(I,0,1)
......@@ -230,8 +260,7 @@ In the directory \texttt{Solutions/Exercise\_2} we have duplicated the ALF and
\noindent
As an application of this code, one can consider a ladder system, defined by the parameter file:
\lstset{style=fortran}
\begin{lstlisting}
\begin{lstlisting}[style=fortran]
!===============================================================================
! Variables for the Hubb program
!-------------------------------------------------------------------------------
......@@ -337,8 +366,7 @@ e^{\Delta \tau \frac{V}{2} \left( c^{\dagger}_{i} c^{\phantom\dagger}_{i+a}
\left(c^{\phantom\dagger}_{i}, c^{\phantom\dagger}_{i+a} \right)^{T} }
\end{equation}
Here is how this translates in the code.
\lstset{style=fortran}
\begin{lstlisting}
\begin{lstlisting}[style=fortran]
Allocate(Op_V(Latt%N,N_FL))
do nf = 1,N_FL
......
Currently, each notebook pdf is created in two steps:
1) Download as html from the jupyter notebook menu: File > Download as > HTML
2) convert to pdf using the command-line tool wkhtmltopdf, e.g.:
$ wkhtmltopdf minimal_ALF_run.html minimal_ALF_run.pdf
This diff is collapsed.
\hypertarget{alf-tutorial-2.0}{%
\section{ALF Tutorial 2.0}\label{alf-tutorial-2.0}}
\hypertarget{introductory-examples-and-exercises}{%
\subsection{Introductory examples and
exercises}\label{introductory-examples-and-exercises}}
This notebook is part of the
\href{https://git.physik.uni-wuerzburg.de/ALF/ALF_Tutorial}{Tutorial
2.0} for the quantum Monte Carlo simulation package
\href{https://git.physik.uni-wuerzburg.de/ALF/ALF_code}{\emph{Algorithms
for Lattice Fermions} - ALF}, and can be found, together with its
required files, in the
\href{https://git.physik.uni-wuerzburg.de/ALF/pyALF}{pyALF repository}.
ALF is compiled from source, which is downloaded from the
\href{https://git.physik.uni-wuerzburg.de:ALF}{ALF repository} when not
found locally.
{[}\textbf{REMEMBER TO UPDATE GIT ADDRESSES}{]}
\hypertarget{a-minimal-alf-run}{%
\section{A minimal ALF run}\label{a-minimal-alf-run}}
In this bare-bones example we use the pyALF interface to run the
canonical Hubbard model on a default configuration: a \(6\times6\)
square grid, with interaction strength \(U=4\) and inverse temperature
\(\beta = 5\).
Bellow we go through the steps for performing the simulation and
outputting observables.
\begin{center}\rule{0.5\linewidth}{\linethickness}\end{center}
\textbf{1.} Import \texttt{Simulation} class from the \texttt{py\_alf}
python module, which provides the interface with ALF:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{1}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{k+kn}{from} \PY{n+nn}{py\PYZus{}alf} \PY{k}{import} \PY{n}{Simulation} \PY{c+c1}{\PYZsh{} Interface with ALF}
\end{Verbatim}
\end{tcolorbox}
\textbf{2.} Create an instance of \texttt{Simulation}, setting
parameters as desired:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{4}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{sim} \PY{o}{=} \PY{n}{Simulation}\PY{p}{(}
\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Hubbard}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{c+c1}{\PYZsh{} Hamiltonian}
\PY{p}{\PYZob{}} \PY{c+c1}{\PYZsh{} Model and simulation parameters for each Simulation instance}
\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Model}\PY{l+s+s2}{\PYZdq{}}\PY{p}{:} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Hubbard}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{c+c1}{\PYZsh{} Base model}
\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Lattice\PYZus{}type}\PY{l+s+s2}{\PYZdq{}}\PY{p}{:} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Square}\PY{l+s+s2}{\PYZdq{}}\PY{p}{\PYZcb{}}\PY{p}{,} \PY{c+c1}{\PYZsh{} Lattice type}
\PY{p}{)}
\end{Verbatim}
\end{tcolorbox}
\textbf{3.} Compile ALF, downloading it first if not found locally. This
may take a few minutes:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{5}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{sim}\PY{o}{.}\PY{n}{compile}\PY{p}{(}\PY{p}{)} \PY{c+c1}{\PYZsh{} Compilation needs to be performed only once}
\end{Verbatim}
\end{tcolorbox}
\begin{Verbatim}[commandchars=\\\{\}]
Compiling ALF{\ldots} Done.
\end{Verbatim}
\textbf{4.} Perform the simulation as specified in \texttt{sim}:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{6}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{sim}\PY{o}{.}\PY{n}{run}\PY{p}{(}\PY{p}{)} \PY{c+c1}{\PYZsh{} Perform the actual simulation in ALF}
\end{Verbatim}
\end{tcolorbox}
\begin{Verbatim}[commandchars=\\\{\}]
Prepare directory "/home/jonas/Programs/pyALF/Hubbard\_Hubbard\_Square" for Monte
Carlo run.
Create new directory.
Run /home/jonas/Programs/pyALF/ALF/Prog/Hubbard.out
\end{Verbatim}
\textbf{5.} Perform some simple analyses:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{7}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{sim}\PY{o}{.}\PY{n}{analysis}\PY{p}{(}\PY{p}{)} \PY{c+c1}{\PYZsh{} Perform default analysis; list observables}
\end{Verbatim}
\end{tcolorbox}
\begin{Verbatim}[commandchars=\\\{\}]
Analysing Part\_scal
Analysing Kin\_scal
Analysing Ener\_scal
Analysing Pot\_scal
Analysing SpinT\_eq
Analysing SpinZ\_eq
Analysing SpinXY\_eq
Analysing Green\_eq
Analysing Den\_eq
Analysing SpinZ\_tau
Analysing Den\_tau
Analysing SpinXY\_tau
Analysing SpinT\_tau
Analysing Green\_tau
\end{Verbatim}
\textbf{6.} Store computed observables list:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{8}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{obs} \PY{o}{=} \PY{n}{sim}\PY{o}{.}\PY{n}{get\PYZus{}obs}\PY{p}{(}\PY{p}{)} \PY{c+c1}{\PYZsh{} Dictionary for the observables}
\end{Verbatim}
\end{tcolorbox}
which are available for further analyses. For instance, the internal
energy of the system (and its error) is accessed by:
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{9}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{obs}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Ener\PYZus{}scalJ}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{obs}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}
\end{Verbatim}
\end{tcolorbox}
\begin{tcolorbox}[breakable, size=fbox, boxrule=.5pt, pad at break*=1mm, opacityfill=0]
\prompt{Out}{outcolor}{9}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
array([[-29.983503, 0.232685]])
\end{Verbatim}
\end{tcolorbox}
\begin{center}\rule{0.5\linewidth}{\linethickness}\end{center}
\textbf{7.} Running again: The simulation can be resumed to increase the
precision of the results.
\begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
\prompt{In}{incolor}{10}{\boxspacing}
\begin{Verbatim}[commandchars=\\\{\}]
\PY{n}{sim}\PY{o}{.}\PY{n}{run}\PY{p}{(}\PY{p}{)}
\PY{n}{sim}\PY{o}{.}\PY{n}{analysis}\PY{p}{(}\PY{p}{)}
\PY{n}{obs2} \PY{o}{=} \PY{n}{sim}\PY{o}{.}\PY{n}{get\PYZus{}obs}\PY{p}{(}\PY{p}{)}
\PY{n+nb}{print}\PY{p}{(}\PY{n}{obs2}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Ener\PYZus{}scalJ}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{obs}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{)}
\PY{n+nb}{print}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+se}{\PYZbs{}n}\PY{l+s+s2}{Running again reduced the error from }\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{obs}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Ener\PYZus{}scalJ}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{obs}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{]}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{ to }\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{obs2}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Ener\PYZus{}scalJ}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{obs}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{]}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{.}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}
\end{Verbatim}
\end{tcolorbox}
\begin{Verbatim}[commandchars=\\\{\}]
Prepare directory "/home/jonas/Programs/pyALF/Hubbard\_Hubbard\_Square" for Monte
Carlo run.
Resuming previous run.
Run /home/jonas/Programs/pyALF/ALF/Prog/Hubbard.out
Analysing Part\_scal
Analysing Kin\_scal
Analysing Ener\_scal
Analysing Pot\_scal
Analysing SpinT\_eq
Analysing SpinZ\_eq
Analysing SpinXY\_eq
Analysing Green\_eq
Analysing Den\_eq
Analysing SpinZ\_tau
Analysing Den\_tau
Analysing SpinXY\_tau
Analysing SpinT\_tau
Analysing Green\_tau
[[-29.819654 0.135667]]
Running again reduced the error from 0.232685 to 0.135667 .
\end{Verbatim}
\textbf{Note}: To run a fresh simulation - instead of performing a
refinement over previous run(s) - the Monte Carlo run directory should
deleted before rerunning.
\begin{center}\rule{0.5\linewidth}{\linethickness}\end{center}
\hypertarget{exercises}{%
\subsection{Exercises}\label{exercises}}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Rerun once again and check the new improvement in precision.
\item
Look at a few other observables (\texttt{sim.analysis()} outputs the
names of those available).
\item
Change the lattice size by adding, e.g., \texttt{"L1":\ 4,} and
\texttt{"L2":\ 1,} to the simulation parameters definitions of
\texttt{sim} (step 2).
\end{enumerate}
% Add a bibliography block to the postdoc
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\zref@newlabel[2]{}
\@setckpt{Notebooks/minimal_ALF_run.tex}{
\setcounter{page}{3}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{1}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{subfigure}{0}
\setcounter{lofdepth}{1}
\setcounter{subtable}{0}
\setcounter{lotdepth}{1}
\setcounter{tcbbreakpart}{0}
\setcounter{tcblayer}{0}
\setcounter{lstnumber}{2}
\setcounter{Item}{0}
\setcounter{Hfootnote}{0}
\setcounter{bookmark@seq@number}{0}
\setcounter{float@type}{16}
\setcounter{AM@survey}{0}
\setcounter{mdf@globalstyle@cnt}{0}
\setcounter{mdfcountframes}{0}
\setcounter{mdf@env@i}{0}
\setcounter{mdf@env@ii}{0}
\setcounter{mdf@zref@counter}{0}
\setcounter{ltxexample}{0}
\setcounter{exercise}{0}
\setcounter{exerciseitem}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
% Basic figure setup, for now with no caption control since it's done
% automatically by Pandoc (which extracts ![](path) syntax from Markdown).
\usepackage{graphicx}
% Maintain compatibility with old templates. Remove in nbconvert 6.0
\let\Oldincludegraphics\includegraphics
% Ensure that by default, figures have no caption (until we provide a
% proper Figure object with a Caption API and a way to capture that
% in the conversion process - todo).
\usepackage{caption}
\DeclareCaptionFormat{nocaption}{}
\captionsetup{format=nocaption,aboveskip=0pt,belowskip=0pt}
\usepackage[Export]{adjustbox} % Used to constrain images to a maximum size
\adjustboxset{max size={0.9\linewidth}{0.9\paperheight}}
\usepackage{float}
\floatplacement{figure}{H} % forces figures to be placed at the correct location
\usepackage{xcolor} % Allow colors to be defined
\usepackage{enumerate} % Needed for markdown enumerations to work
\usepackage{geometry} % Used to adjust the document margins
\usepackage{amsmath} % Equations
\usepackage{amssymb} % Equations
\usepackage{textcomp} % defines textquotesingle
% Hack from http://tex.stackexchange.com/a/47451/13684:
\AtBeginDocument{%
\def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code
}
\usepackage{upquote} % Upright quotes for verbatim code
\usepackage{eurosym} % defines \euro
\usepackage[mathletters]{ucs} % Extended unicode (utf-8) support
\usepackage{fancyvrb} % verbatim replacement that allows latex
\usepackage{grffile} % extends the file name processing of package graphics
% to support a larger range
\makeatletter % fix for grffile with XeLaTeX
\def\Gread@@xetex#1{%
\IfFileExists{"\Gin@base".bb}%
{\Gread@eps{\Gin@base.bb}}%
{\Gread@@xetex@aux#1}%
}
\makeatother
% The hyperref package gives us a pdf with properly built
% internal navigation ('pdf bookmarks' for the table of contents,
% internal cross-reference links, web links for URLs, etc.)
\usepackage{hyperref}
% The default LaTeX title has an obnoxious amount of whitespace. By default,
% titling removes some of it. It also provides customization options.
\usepackage{titling}
\usepackage{longtable} % longtable support required by pandoc >1.10
\usepackage{booktabs} % table support for pandoc > 1.12.2
\usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment)
\usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout)
% normalem makes italics be italics, not underlines
\usepackage{mathrsfs}
% Colors for the hyperref package
\definecolor{urlcolor}{rgb}{0,.145,.698}
\definecolor{linkcolor}{rgb}{.71,0.21,0.01}
\definecolor{citecolor}{rgb}{.12,.54,.11}
% ANSI colors
\definecolor{ansi-black}{HTML}{3E424D}
\definecolor{ansi-black-intense}{HTML}{282C36}
\definecolor{ansi-red}{HTML}{E75C58}
\definecolor{ansi-red-intense}{HTML}{B22B31}
\definecolor{ansi-green}{HTML}{00A250}
\definecolor{ansi-green-intense}{HTML}{007427}
\definecolor{ansi-yellow}{HTML}{DDB62B}
\definecolor{ansi-yellow-intense}{HTML}{B27D12}
\definecolor{ansi-blue}{HTML}{208FFB}
\definecolor{ansi-blue-intense}{HTML}{0065CA}
\definecolor{ansi-magenta}{HTML}{D160C4}
\definecolor{ansi-magenta-intense}{HTML}{A03196}
\definecolor{ansi-cyan}{HTML}{60C6C8}
\definecolor{ansi-cyan-intense}{HTML}{258F8F}
\definecolor{ansi-white}{HTML}{C5C1B4}
\definecolor{ansi-white-intense}{HTML}{A1A6B2}
\definecolor{ansi-default-inverse-fg}{HTML}{FFFFFF}
\definecolor{ansi-default-inverse-bg}{HTML}{000000}
% commands and environments needed by pandoc snippets
% extracted from the output of `pandoc -s`
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\newenvironment{Shaded}{}{}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
\newcommand{\RegionMarkerTok}[1]{{#1}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\NormalTok}[1]{{#1}}
% Additional commands for more recent versions of Pandoc
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}}
\newcommand{\ImportTok}[1]{{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}}
\newcommand{\BuiltInTok}[1]{{#1}}
\newcommand{\ExtensionTok}[1]{{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
% Define a nice break command that doesn't care if a line doesn't already
% exist.
\def\br{\hspace*{\fill} \\* }
% Math Jax compatibility definitions
\def\gt{>}
\def\lt{<}
\let\Oldtex\TeX
\let\Oldlatex\LaTeX
\renewcommand{\TeX}{\textrm{\Oldtex}}
\renewcommand{\LaTeX}{\textrm{\Oldlatex}}
% Document parameters
% Document title
\title{minimal\_ALF\_run}
% Pygments definitions
\makeatletter
\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax%
\let\PY@ul=\relax \let\PY@tc=\relax%
\let\PY@bc=\relax \let\PY@ff=\relax}
\def\PY@tok#1{\csname PY@tok@#1\endcsname}
\def\PY@toks#1+{\ifx\relax#1\empty\else%
\PY@tok{#1}\expandafter\PY@toks\fi}
\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{%
\PY@it{\PY@bf{\PY@ff{#1}}}}}}}
\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}}
\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}