Commit 050a5517 authored by Fakher F. Assaad's avatar Fakher F. Assaad
Browse files

Included commit ...

Included  commit  https://git.physik.uni-wuerzburg.de/fassaad/General_QMCT_code/commit/0c45a88f52092d0f1b118d0e366d124d2378ca4d  of the documentation
branch in the master  branch.
parent fa6a9f44
Pipeline #1284 failed with stages
in 6 minutes and 23 seconds
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = Doc.tex
%-------------------------------------------------------------------------------------
\section*{Acknowledgments}
%-------------------------------------------------------------------------------------
We are very grateful to S. Beyl, M. Hohenadler, F. Parisen Toldin, M. Raczkowski, J. Schwab, T. Sato, Z. Wang and M. Weber, for constant support during the development of this project. FFA would also like to thank T. Lang and Z.Y. Meng for developments of the auxiliary field code as well as T. Grover.
MB thanks the the Bavarian Competence Network for Technical and Scientific High Performance Computing (KONWIHR) for financial support. FG and JH thank the SFB-1170 for financial support under projects Z03 and C01. FFA thanks the DFG-funded FOR1807 and FOR1346 for partial financial support.
Calculations to extensively test this package were carried out on SuperMUC at the Leibniz Supercomputing Centre and on JURECA \cite{Jureca16} at the J\"ulich Supercomputing Centre (JSC). We thank those institutions for generous computer allocations.
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = Doc.tex
%-------------------------------------------------------------------------------------
\section{ Analysis programs }\label{sec:analysis}
%-------------------------------------------------------------------------------------
%
\begin{table}[h]
\begin{tabular}{@{} l l @{}}\toprule
Program & Description \\\midrule
\texttt{cov\_scal.f90} & Reads in the bin files with suffix \texttt{\_scal} and produces corresponding file with suffix \\
& \texttt{\_scalJ} containing the result of the Jackknife resampling. \\
\texttt{cov\_eq.f90} & Reads in the bin files with suffix \texttt{\_eq} and produces corresponding files will suffix \texttt{\_eqJR} \\
& and \texttt{\_eqJK} corresponding to correlation functions in real and Fourier space, respectively. \\
\texttt{cov\_tau.f90} & Reads in the bin files \texttt{X\_tau}, and produces and produces directories \texttt{X\_kx\_ky} for all \\
& \texttt{kx} and \texttt{ky} greater or equal to zero. Here \texttt{X} is a place holder from \texttt{Green}, \texttt{SpinXY}, etc \\
& as specified in \texttt{ Alloc\_obs(Ltau)} (See section \ref{Alloc_obs_sec}). Each directory contains a \\
& file \texttt{g\_kx\_ky} containing the time displaced correlation function traced over the orbitals. \\
& It also contains the covariance matrix if \texttt{N\_cov} is set to unity in the parameter file \\
& listed in Sec.~\ref{sec:input}. The program equally generates a directory \texttt{X\_R0} for the local \\
& time displaced correlation function. \\\bottomrule
\texttt{cov\_scal.f90} & In combination with the script \texttt{analysis.sh}, the bin files with suffix \texttt{\_scal} are read in, \\
& and corresponding file with suffix \texttt{\_scalJ} are produced. They contain the result of the \\
& Jackknife resampling. \\
\texttt{cov\_eq.f90} & In combination with the script \texttt{analysis.sh}, the bin files with suffix \texttt{\_eq} are read in, \\
& and corresponding files will suffix \texttt{\_eqJR} and \texttt{\_eqJK} are produced. They correspond to\\
& correlation functions in real and Fourier space, respectively. \\
\texttt{cov\_tau.f90} & In combination with the script \texttt{analysis.sh}, the bin files \texttt{X\_tau} are read in, \\
& and the directories \texttt{X\_kx\_ky} are produced for all \texttt{kx} and \texttt{ky} greater or equal to zero. \\
& Here \texttt{X} is a place holder from \texttt{Green}, \texttt{SpinXY}, etc as specified in \texttt{ Alloc\_obs(Ltau)} \\
& (See section \ref{Alloc_obs_sec}). Each directory contains a file \texttt{g\_kx\_ky} containing the \\
& time displaced correlation function traced over the orbitals. It also contains the \\
& covariance matrix if \texttt{N\_cov} is set to unity in the parameter file listed in Sec.~\ref{sec:input}. \\
& Equally, a directory \texttt{X\_R0} for the local time displaced correlation function is generated. \\\bottomrule
\end{tabular}
\caption{ Overview of analysis programs \label{table:analysis_programs}}
\caption{ Overview of analysis programs that are called within the script \texttt{analysis.sh}. \label{table:analysis_programs}}
\end{table}
%
Here we briefly discuss the analysis programs which read in bins and carry out the error analysis.
Error analysis is based on the central limit theorem, which required bins to be statistically independent. This will be the case if bins are longer than the auto-correlation time.
Error analysis is based on the central limit theorem, which required bins to be statistically independent, and also the existence of a well-defined variance of the distribution.
The former will be the case if bins are longer than the auto-correlation time. The latter has to be checked by the user, since in general the distribution variance depends on the model and on the observable.
In the parameter file listed in Sec.~\ref{sec:input}, the user can specify the how many initial bins should be omitted (variable \texttt{n\_skip}).
This number should be comparable to the auto-correlation time.
The re-binning variable \texttt{N\_rebin} will merge \texttt{N\_rebin} bins into a single one. If the autocorrelation time is smaller than the effective bin size, then the error should be independent on the bin size and thereby on the variable \texttt{N\_rebin}. Our analysis is based on the Jackknife resampling. As listed in Table, \ref{table:analysis_programs} we provide three programs to account for the three observable types. The programs can be found in the directory \texttt{Analysis} and are executed by running the bash shell script
......
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
%-------------------------------------------------------------------------------------
\section{Conclusions and future directions}
%-------------------------------------------------------------------------------------
In its present form, the ALF-project allows to simulate a very large class of non-trivial models efficiently and at a minimal programming cost. There are many possible extensions which deserve to be considered in future releases. The Hamiltonians we presently defining are imaginary time independent. This however, can be easily generalized to time dependent Hamiltonians thus allowing, for example, to access entanglement properties of interacting fermionic systems \cite{Broecker14,Assaad14,Assaad13a,Assaad15}. Generalizations to include global moves are equally desirable. This is a prerequisite to play with recent ideas of self-learning algorithms \cite{Xu16a} so as to possibly avoid critical slowing down. At present we are restricted to discrete fields such that implementations of the long range Coulomb repulsion as introduced in \cite{Hohenadler14,Ulybyshev2013,Brower12} is not included in the package. Extensions to continuous fields are certainly possible, but require an efficient upgrading scheme. Finally, a ground state projective formulation is equally desirable.
\begin{thebibliography}{10}
\bibitem{Blankenbecler81}
R. Blankenbecler, D.~J. Scalapino, and R.~L. Sugar, Phys. Rev. D {\bf 24},
2278 (1981).
\bibitem{Assaad08_rev}
F. Assaad and H. Evertz, in {\em Computational Many-Particle Physics},
Vol.~739 of {\em Lecture Notes in Physics}, edited by H. Fehske, R.
Schneider, and A. Wei{\ss}e (Springer, Berlin Heidelberg, 2008), pp.\
277--356.
\bibitem{Wu04}
C. Wu and S.-C. Zhang, Phys. Rev. B {\bf 71}, 155115 (2005).
\bibitem{Wei16}
Z.~C. Wei, C. Wu, Y. Li, S. Zhang, and T. Xiang, Phys. Rev. Lett. {\bf 116},
250601 (2016).
\bibitem{White89}
S. White, D. Scalapino, R. Sugar, E. Loh, J. Gubernatis, and R. Scalettar,
Phys. Rev. B {\bf 40}, 506 (1989).
\bibitem{Sugiyama86}
G. Sugiyama and S. Koonin, Annals of Physics {\bf 168}, 1 (1986).
\bibitem{Sorella89}
S. Sorella, S. Baroni, R. Car, and M. Parrinello, EPL (Europhysics Letters)
{\bf 8}, 663 (1989).
\bibitem{Milat04}
I. Milat, F. Assaad, and M. Sigrist, Eur. Phys. J. B {\bf 38}, 571 (2004),
http://xxx.lanl.gov/cond-mat/0312450.
\bibitem{Bercx09}
M. Bercx, T.~C. Lang, and F.~F. Assaad, Phys. Rev. B {\bf 80}, 045412 (2009).
\bibitem{Schattner15}
Y. Schattner, S. Lederer, S.~A. Kivelson, and E. Berg, Phys. Rev. X {\bf 6},
031028 (2016).
\bibitem{Xu16}
X.~Y. {Xu}, K.~S.~D. {Beach}, K. {Sun}, F.~F. {Assaad}, and Z.~Y. {Meng},
ArXiv:1602.07150 (2016).
\bibitem{Assaad16}
F.~F. Assaad and T. Grover, Phys. Rev. X {\bf 6}, 041049 (2016).
\bibitem{Assaad99a}
F.~F. Assaad, Phys. Rev. Lett. {\bf 83}, 796 (1999).
\bibitem{Capponi00}
S. Capponi and F.~F. Assaad, Phys. Rev. B {\bf 63}, 155114 (2001).
\bibitem{Beach04}
K.~S.~D. Beach, P.~A. Lee, and P. Monthoux, Phys. Rev. Lett. {\bf 92}, 026401
(2004).
\bibitem{Assaad04}
F.~F. Assaad, Phys. Rev. B {\bf 71}, 075103 (2005).
\bibitem{Lang13}
T.~C. Lang, Z.~Y. Meng, A. Muramatsu, S. Wessel, and F.~F. Assaad, Phys. Rev.
Lett. {\bf 111}, 066401 (2013).
\bibitem{Li15}
Z.-X. Li, Y.-F. Jiang, and H. Yao, New Journal of Physics {\bf 17}, 085003
(2015).
\bibitem{Broecker14}
P. Broecker and S. Trebst, Journal of Statistical Mechanics: Theory and
Experiment {\bf 2014}, P08015 (2014).
\bibitem{Assaad14}
F.~F. Assaad, Nat Phys {\bf 10}, 905 (2014).
\bibitem{Assaad13a}
F.~F. Assaad, T.~C. Lang, and F. Parisen~Toldin, Phys. Rev. B {\bf 89}, 125121
(2014).
\bibitem{Assaad15}
F.~F. Assaad, Phys. Rev. B {\bf 91}, 125146 (2015).
\bibitem{Xu16a}
X.~Y. Xu, Y. Qi, J. Liu, L. Fu, and Z.~Y. Meng, arXiv:1612.03804 (2016).
\bibitem{Hohenadler14}
M. Hohenadler, F. Parisen~Toldin, I.~F. Herbut, and F.~F. Assaad, Phys. Rev. B
{\bf 90}, 085146 (2014).
\bibitem{Ulybyshev2013}
M.~V. Ulybyshev, P.~V. Buividovich, M.~I. Katsnelson, and M.~I. Polikarpov,
Phys. Rev. Lett. {\bf 111}, 056801 (2013).
\bibitem{Brower12}
R. Brower, C. Rebbi, and D. Schaich, PoS(Lattice 2011)056 (arXiv:1204.5424) .
\bibitem{Jureca16}
{J\"ulich Supercomputing Centre}, Journal of large-scale research facilities
{\bf 2}, A62 (2016).
\end{thebibliography}
No preview for this file type
% Copyright (c) 2016 The ALF project.
% This is the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
\documentclass[10pt,Arial]{scrartcl}
\usepackage{graphicx}
%\usepackage{a4wide}
\usepackage[margin=2.5cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{bbm} % for getting a nice 1
\usepackage[fleqn]{amsmath} % math environments and more by the AMS
\usepackage{bbm}
\usepackage[fleqn]{amsmath}
\usepackage{amssymb}
\usepackage{wasysym}
\usepackage{color}
......@@ -21,6 +26,7 @@
\usepackage{listings}
\usepackage{url}
\usepackage{booktabs}
\usepackage{hyperref}
\lstset{language=Fortran,
basicstyle=\ttfamily,
......@@ -47,37 +53,29 @@ language=bash,
\def\Tr{\mathop{\mathrm{Tr}}}
\def\Trf{\mathop{\mathrm{Tr}_{\mathrm{F}}}}
\definecolor{dark-gray}{gray}{0.4}
\definecolor{light-gray}{gray}{0.9}
\definecolor{babyblueeyes}{rgb}{0.63, 0.79, 0.95}
%\titleformat{\section}
%{\color{blue}\normalfont\Large\bfseries}
%{\color{blue}\thesection}{1em}{}
%\titleformat{\subsection}
%{\color{dark-gray}\normalfont\large\bfseries}
%{\color{dark-gray}\thesubsection}{1em}{}
% \newcommand{\comment}[1]{{\color{red} #1}}
\newcommand{\mycomment}[1]{{\color{blue} #1}}
\newcommand{\FAcomment}[1]{{\color{red} #1}}
% \begin{tcolorbox}[width=\textwidth,colback={babyblueeyes},title={},colbacktitle=yellow,coltitle=blue]
% text ...
% \end{tcolorbox}
\makesavenoteenv{tabular}
\makesavenoteenv{table}
\setkomafont{author}{\large}
\setkomafont{date}{\large}
\newcommand{\mycomment}[1]{{\color{blue} #1}}
\newcommand{\FAcomment}[1]{{\color{red} #1}}
\makeindex
\begin{document}
\title{
The \textit{ALF} (\textit{A}lgorithms for \textit{L}attice \textit{F}ermions) project release 1.0}
%---------------------------------------------------------------------------------------------------------
\title{The \textit{ALF} (\textit{A}lgorithms for \textit{L}attice \textit{F}ermions) project release 0.5}
\subtitle{Documentation for the auxiliary field quantum Monte Carlo code.}
\author{Martin Bercx, Florian Goth, Johannes Hofmann, Fakher F. Assaad }
\author{Martin Bercx, Florian Goth, Johannes S. Hofmann, Fakher F. Assaad }
%---------------------------------------------------------------------------------------------------------
\maketitle
Copyright \textcopyright ~2016, The \textit{ALF} Project.\\
This is the ALF Project Documentation by the ALF contributors.
It is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
You are free to share and benefit from this documentation as long as this license is preserved
and proper attribution to the authors is given. For details see the ALF project
homepage \url{alf.physik.uni-wuerzburg.de}.
\tableofcontents
\clearpage
\input{intro}
......@@ -85,31 +83,17 @@ The \textit{ALF} (\textit{A}lgorithms for \textit{L}attice \textit{F}ermions) pr
\input{implementation}
\input{files}
\input{walkthrough_hubbard}
\input{other_models}
\input{analysis}
\input{running}
\section{Performance}
Next to the entire computational time is spent in BLAS routines such that the performance of the code will depend on the implementation of this library. We have found that the code performs well, and that an efficient OpenMP version can be obtained merely by loading the corresponding BLAS and LAPACK routines.
\section{Conclusions and future directions}
In it's present form, the ALF-project allows to simulate a very large class of non-trivial models efficiently and at a minimal programming cost. There are many possible extensions which deserve to be considered in future releases. The Hamiltonians we presently defining are imaginary time independent. This however, can be easily generalized to time dependent Hamiltonians thus allowing, for example, to access entanglement properties of interacting fermionic systems \cite{Broecker14,Assaad14,Assaad13a,Assaad15}. Generalizations to include global moves are equally desirable. This is a prerequisite to play with recent ideas of self-learning algorithms \cite{Xu16a} so as to possibly avoid critical slowing down. At present we are restricted to discrete fields such that implementations of the long range Coulomb repulsion as introduced in \cite{Hohenadler14,Ulybyshev2013,Brower12} is not included in the package. Extensions to continuous fields are certainly possible, but require an efficient upgrading scheme. Finally, a ground state projective formulation is equally desirable.
\addcontentsline{toc}{section}{Acknowledgements}
\section*{Acknowledgements}
We are very grateful to S. Beyl, M. Hohenadler, F. Parisen Toldin, M. Raczkowski, J. Schwab, T. Sato, Z. Wang and M. Weber, for constant support during the development of this project. FFA would also like to thank T. Lang and Z.Y. Meng for developments of the auxiliary field code as well as T. Grover.
MB thanks the the Bavarian Competence Network for Technical and Scientific High Performance Computing (KONWIRH) for financial support. FG thanks the SFB-1170 for financial support under project (Z03). FFA thanks the DFG-funded FOR1807 for partial financial support.
Calculations to extensively test this package were carried out on SuperMUC at the Leibniz Supercomputing Centre and on JURECA \cite{Jureca16} at the J\"ulich Supercomputing Centre (JSC). We thank those institutions for generous computer allocations.
%\clearpage
%\clearpage
\input{performance}
\input{conclusion}
\addcontentsline{toc}{section}{Acknowledgments}
\input{acknowledgment}
\addcontentsline{toc}{section}{References}
\bibliographystyle{./prXsty}
\bibliography{./fassaad}
\addcontentsline{toc}{section}{License}
\input{license}
\end{document}
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = Doc.tex
%------------------------------------------------------------
\section{File structure}\label{sec:files}
%------------------------------------------------------------
%
\begin{table}[h]
\begin{tabular}{@{} l l @{}}\toprule
......@@ -20,8 +28,10 @@
The code package consists of the program directories \path{Prog/}, \path{Libraries/} and \path{Analysis/}.
The sample simulations corresponding to the walkthroughs of Sec.~\ref{sec:walk1} - \ref{sec:walk2} are included in \path{Examples/}.
The package content is summarized in Table~\ref{table:files}.
%
%------------------------------------------------------------
\subsection{Input files}\label{sec:input}
%------------------------------------------------------------
%
\begin{table}[h]
\begin{tabular}{@{} l l @{}}\toprule
......@@ -87,7 +97,9 @@ N_Cov = 0 ! If set to 1 covariance will be computed
\end{lstlisting}
%
%------------------------------------------------------------
\subsection{Output files} \label{sec:output}
%------------------------------------------------------------
%
\begin{table}[h]
\begin{tabular}{@{} l l @{}}\toprule
......@@ -115,7 +127,7 @@ The formatting of the output for a single bin depends on the observable type: \p
For each additional bin, a single new line is added to the output file.
In case of an observable with \path{N_size} components, the formatting is
\begin{verbatim}
N_size + 1 <measured value, 1> ... <measured value, N_size> <measured phase>
N_size + 1 <measured value, 1> ... <measured value, N_size> <measured sign>
\end{verbatim}
The counter variable \path{N_size+1} refers to the number of measurements per line, including the phase measurement.
This format is required by the error analysis routine (see Sec.~\ref{sec:analysis}).
......@@ -128,7 +140,7 @@ The block consists of the expectation values [Eq.~(\ref{eqn:o})] contributing to
and the correlated part [Eq.~(\ref{eqn:s_corr})] of the correlation function.
For imaginary-time displaced correlation functions, the formatting of the block follows this scheme:
\begin{alltt}
<measured phase> <N_orbital> <N_unit_cell> <N_time_slices> <dtau>
<measured sign> <N_orbital> <N_unit_cell> <N_time_slices> <dtau>
do alpha = 1, N_orbital
\(\langle\hat{O}\sb{\alpha}\rangle \)
enddo
......@@ -146,17 +158,26 @@ enddo
The same block structure is used for equal-time correlation functions, except for the entries \path{<N_time_slices>} and \path{<dtau>}
which are not present in the latter.
Using this structure for the bins as input,
the full correlation function $S_{\alpha,\beta}(\vec{k},\tau)$ [Eq.~(\ref{eqn:s})] is then calculated by calling the error analyis routine (see Sec.~\ref{sec:analysis})
the full correlation function $S_{\alpha,\beta}(\vec{k},\tau)$ [Eq.~(\ref{eqn:s})] is then calculated by calling the error analysis routine (see Sec.~\ref{sec:analysis})
\end{itemize}
%------------------------------------------------------------
\subsubsection{The \texttt{info} file and stabilization}
The finite temperature auxiliary field QMC algorithm is known to be numerically unstable. The origin the numerical instabilities arise from the imaginary time propagation which invariably leads to exponentially small and exponentially large scales. Numerical stabilization of the code is delicate and has been pioneered in Ref.~\cite{White89} for the finite temperature algorithm and in Refs.\cite{Sugiyama86,Sorella89} for the zero projective algorithm. As shown in Ref.~\cite{Assaad08_rev} scales can be omitted in the ground state algorithm -- thus rendering it very stable -- but have to be taken into account in the finite temperature code. Apart from runtime information, the file \texttt{info} contains important information concerning the stability of the code. For example, in the directory \path{Examples/Hubbard_SU2_Square} simulating the $4 \times 4$ Hubbard model at $U/t=4$ and $\beta t = 10$ the \texttt{info} file contains the lines
%------------------------------------------------------------
The finite temperature auxiliary field QMC algorithm is known to be numerically unstable.
The origin the numerical instabilities arises from the imaginary time propagation which invariably leads to exponentially small and exponentially large scales.
Numerical stabilization of the code is delicate and has been pioneered in Ref.~\cite{White89} for the finite temperature algorithm and in Refs.~\cite{Sugiyama86,Sorella89} for the zero temperature projective algorithm.
As shown in Ref.~\cite{Assaad08_rev} scales can be omitted in the ground state algorithm -- thus rendering it very stable -- but have to be taken into account in the finite temperature code. Apart from runtime information, the file \texttt{info} contains important information concerning the stability of the code.
For example, in the directory \path{Examples/Hubbard_SU2_Square} an example simulation of the $4 \times 4$ Hubbard model at $U/t=4$ and $\beta t = 10$, the \texttt{info} file contains the lines
\begin{alltt}
Precision Green Mean, Max : 1.2918865817224671E-014 4.0983018995027644E-011
Precision Phase, Max : 5.0272908791449966E-012
Precision tau Mean, Max : 8.4596701790588625E-015 3.5033530012121281E-011
\end{alltt}
showing the the mean and maximum difference between the {\it wrapped } and from scratched computed equal and time displaced Green functions \cite{Assaad08_rev}. A stable code should produce results where the mean difference is smaller than the stochastic error. The above example shows a very stable simulation since the Green function is of order 1. Numerical stabilization is delicate and there is no guarantee that it will work for all models. For example switching to a HS field coupling to the z-component of the magnetization will yield (see directory \path{Examples/Hubbard_Mz_Square}):
showing the mean and maximum difference between the {\it wrapped } and from scratched computed equal and time displaced Green functions \cite{Assaad08_rev}.
A stable code should produce results where the mean difference is smaller than the stochastic error. The above example shows a very stable simulation since the Green function is of order 1. Numerical stabilization is delicate and there is no guarantee that it will work for all models.
For example switching to a HS field which couples to the z-component of the magnetization will yield (see directory \path{Examples/Hubbard_Mz_Square}):
\begin{alltt}
Precision Green Mean, Max : 5.0823874429126405E-011 5.8621144596315844E-006
Precision Phase, Max : 0.0000000000000000
......@@ -164,10 +185,16 @@ Precision tau Mean, Max : 1.5929357848647394E-011 1.0985132530727526E-00
\end{alltt}
This is still an excellent precision but nevertheless a couple of order of magnitudes less precise than a HS decomposition coupling to the charge.
If the numerical stabilization turns out to be bad, one option is to reduce the value of the parameter \texttt{Nwrap} in the parameter file.
For performing the stabilization of the involved matrix multiplications we rely on routines from lapack. Hence it is very likely that your results may change significantly if you switch libraries.
In order to offer a simple baseline to which people can quickly switch if they want to see whether their results depend on the library used for linear algebra routines we have included parts of the lapack-3.6.1 reference implementation from
\url{http://www.netlib.org/lapack/}. You can switch to the QR decomposition related routines from the lapack reference implementation by including the switch \texttt{-DQRREF} into their PROGRAMMCONFIGURATION string.
To use these routines you need to link against a lapack library that implements at least the lapack-3.4.0 interface. \footnote{ We have encountered some compiling issues with this flag. In particular the older intel ifort compiler version 10.1 fails for all optimization levels.}
Since numerical stabilization is delicate we have include in the package the set of Lapack version 3.6.1 routines which we use for purposes of numerical stabilization. These routines will be used if the compilation flag QRREF is set.
To provide further flexibility, we have incorporated different stabilization schemes. Our default strategy is quick and generically works well but we have encountered some models where it fails. If this applies to your model, you can use the switch \texttt{-DSTAB1} in the \texttt{set\_env.sh} file and recompile the code.
%------------------------------------------------------------
\subsection{Scripts}\label{sec:scripts}
%------------------------------------------------------------
%
\begin{table}[h]
\begin{tabular}{@{} l l l @{}}\toprule
......
This diff is collapsed.
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = doc.tex
%-----------------------------------------
\section{Introduction}\label{sec:intro}
%-----------------------------------------
The auxiliary field quantum Monte Carlo (QMC) approach is the algorithm of choice to simulate a variety of correlated electron systems in the solid state and beyond \cite{Blankenbecler81,Assaad08_rev}. The phenomena one can investigate in detail include correlation effects in in the bulk and surfaces of topological insulators, quantum phase transitions between semimetals (Dirac fermions) and insulators, deconfined quantum critical points, topologically ordered phases, heavy fermion systems, nematic and magnetic quantum phase transitions in metals, superconductivity in spin orbit split bands, SU(N) symmetric models, etc. This ever growing list of phenomena, is based on recent symmetry based insights that allow one to find sign free formulations of the problem thus allowing solutions in polynomial time \cite{Wu04,Wei16}. The aim of this project is to introduce a general formulation of the finite temperature auxiliary field method so as to quickly be able to play with different model Hamiltonians at minimal programming cost. The reader is expected to be familiar with the auxiliary field QMC approach. A detailed review containing all the prerequisites for understanding the code can be found in \cite{Assaad08_rev}. In this documentation, we will briefly list the most important equations of the auxiliary field QMC and then show in all details how to implement a variety of models, run the code, and produce results for equal time and time displaced correlation functions.
The auxiliary field quantum Monte Carlo (QMC) approach is the algorithm of choice to simulate a variety of correlated electron systems in the solid state and beyond \cite{Blankenbecler81,Assaad08_rev}.
The phenomena one can investigate in detail include correlation effects in in the bulk and surfaces of topological insulators, quantum phase transitions between semimetals (Dirac fermions) and insulators,
deconfined quantum critical points, topologically ordered phases, heavy fermion systems, nematic and magnetic quantum phase transitions in metals, superconductivity in spin orbit split bands, SU(N) symmetric models, etc.
This ever growing list of phenomena is based on recent symmetry related insights that enable one to find sign free formulations of the problem thus allowing solutions in polynomial time \cite{Wu04,Wei16}.
The aim of this project is to introduce a general formulation of the finite temperature auxiliary field method so as to quickly be able to play with different model Hamiltonians at minimal programming cost.
The reader is expected to be familiar with the auxiliary field QMC approach. A detailed review containing all the prerequisites for understanding the code can be found in \cite{Assaad08_rev}.
In this documentation, we will briefly list the most important equations of the auxiliary field QMC and then show in all details how to implement a variety of models, run the code, and produce results for equal time and time displaced correlation functions.
The program code is written in Fortran according to the 2003 standard.
The first and most important part is to define a general Hamiltonian that can accommodate a large class of models (see Sec.~\ref{sec:def}). Our approach is to express the model as a sum of one-body terms, a sum of two-body terms each written as a perfect square of a one one body term, as well as one-body term coupled to an Ising field with dynamics to be specified by the user.
The form of the interaction in terms of sums of perfect squares allows us to use generic forms of discrete approximations to the Hubbard-Stratonovich (HS) transformation. Symmetry considerations are imperative to enhance the speed of the code. We thereby include a {\it color} index reflecting an underlying SU(N) color symmetry as well as a flavor index reflecting the fact that after the HS transformation, the fermionic determinant is block diagonal in this index. To use the code, one will require a minimal understanding of the algorithm. In Section~\ref{sec:def}, we very briefly show how to go through the steps required to formulated the many body imaginary time propagation in terms of a sum over HS and Ising fields of one body imaginary time propagator. The user will have to provide this one body imaginary time propagator for a given configuration of HS and Ising fields.
Section \ref{sec:imp} is devoted to the data structures which need to implement the model. This includes an \texttt{Operator} type to optimally work with sparse Hermitian matrices, a \texttt{Lattice} type to define one and two dimensional Bravais lattices, and two \texttt{Observable} types to handle equal time, time displaced and scalar observables.
After a description of the file structure in Sec~\ref{sec:files}, we will give explicit examples on how to use the code for the Hubbard model on square and honeycomb lattices for different choices of the Hubbard Stratonovich transformation (See Secs.~\ref{sec:walk1},~\ref{sec:walk1.1} and ~\ref{sec:walk1.2}) as well as the Hubbard model on a square lattice coupled to a transverse Ising field (see Sec.~\ref{sec:walk2} ).
The Monte Carlo run and the data analysis are separate: the QMC run dumps the results of {\it bins} sequentially into files which are then analyzed by analysis programs In Sec.~\ref{sec:analysis}, we provide a brief description of the analysis programs for our three observable types. The analysis program allow for omitting a given number of initial bins so as to allow for warmup and to rebin so as to a posteriori take into account long autocorrelation times. Finally, Sec.~\ref{sec:running} will provide all details required to compile and run the code.
% To define the action and thereby the model, we will need a lattice, operators, as well as observables which we wish to compute. The structures we have opted for are describes in Sec..~\ref{sec:def} The general Hamiltonian operator is written down in Sec.~\ref{sec:def}, followed by a brief outline of the quantum Monte Carlo algorithm. In Sec.~\ref{sec:imp}, we discuss the implementation of a model, introducing the \texttt{Operator} data structure which is the building block of the Hamiltonian. And we discuss the implementation of the lattice and the observables. Section ~\ref{sec:io} is about actually running the code. We describe input and output files, the analysis protocol and the compilation procedure. In Sec.~\ref{sec:walk1} and \ref{sec:walk2} two detailed walkthroughs are performed: the $SU(2)$-symmetric Hubbard on a square lattice (Sec.~\ref{sec:walk1}) and the same model, but additionally coupled to a transverse field Ising model (Sec.~\ref{sec:walk2}).
The first and most important part is to define a general Hamiltonian that can accommodate a large class of models (see Sec.~\ref{sec:def}).
Our approach is to express the model as a sum of one-body terms, a sum of two-body terms each written as a perfect square of a one one body term, as well as one-body term coupled to an Ising field with dynamics to be specified by the user.
The form of the interaction in terms of sums of perfect squares allows us to use generic forms of discrete approximations to the Hubbard-Stratonovich (HS) transformation.
Symmetry considerations are imperative to enhance the speed of the code.
We thereby include a {\it color} index reflecting an underlying SU(N) color symmetry as well as a flavor index reflecting the fact that after the HS transformation, the fermionic determinant is block diagonal in this index.
To use the code, one will require a minimal understanding of the algorithm.
In Section~\ref{sec:def}, we very briefly show how to go through the steps required to formulated the many body imaginary time propagation in terms of a sum over HS and Ising fields of one body imaginary time propagator.
The user will have to provide this one body imaginary time propagator for a given configuration of HS and Ising fields.
Section \ref{sec:imp} is devoted to the data structures which need to implement the model.
This includes an \texttt{Operator} type to optimally work with sparse Hermitian matrices, a \texttt{Lattice} type to define one and two dimensional Bravais lattices, and two \texttt{Observable} types to handle equal time, time displaced and scalar observables.
After a description of the file structure in Sec~\ref{sec:files}, we will give explicit examples on how to use the code for the Hubbard model on square and honeycomb lattices for different choices of the Hubbard Stratonovich transformation (See Secs.~\ref{sec:walk1},~\ref{sec:walk1.1} and ~\ref{sec:walk1.2}) as well as the Hubbard model on a square lattice coupled to a transverse Ising field (see Sec.~\ref{sec:walk2} ). Our implementation is rather general such that a variety of other models can be simulated. In Sec.~\ref{sec:other_models} we provide some information on how to simulate the Kondo lattice as well as the SU(N) symmetric Hubbard-Heisenberg model.
The Monte Carlo run and the data analysis are separate: the QMC run dumps the results of {\it bins} sequentially into files which are then analyzed by analysis programs. In Sec.~\ref{sec:analysis}, we provide a brief description of the analysis programs for our three observable types. The analysis program allow for omitting a given number of initial bins so as to allow for warmup and to rebin so as to a posteriori take into account long autocorrelation times. Finally, Sec.~\ref{sec:running} will provide all details required to compile and run the code.
This diff is collapsed.
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = Doc.tex
%-------------------------------------------------------------------------------------
\section*{License}
Use of the GQMC code requires citation of the paper ...
The GQMC code is available for academic and non-commercial use under the terms of the license ...
For commercial licenses, please contact the GQMC development team.
%-------------------------------------------------------------------------------------
This package contains part of the lapack implementation version 3.6.1 from \url{http://www.netlib.org/lapack}
lapack is licensed under the modified BSD license which we reproduce here:\\
......@@ -14,46 +20,14 @@ Copyright (c) 2000-2013 The University of California Berkeley. All
rights reserved.\\
Copyright (c) 2006-2013 The University of Colorado Denver. All rights
reserved.
%-------------------------------------------------------------------------------------
\subsection*{COPYRIGHT}
Additional copyrights may follow
\subsection*{HEADER}
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:\\
\begin{itemize}
\item Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
\item Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer listed
in this license in the documentation and/or other materials
provided with the distribution.
\item Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
\end{itemize}
The copyright holders provide no reassurances that the source code
provided does not infringe any patent, copyright, or any other
intellectual property rights of third parties. The copyright holders
disclaim any liability to any recipient for claims brought against
recipient by any third party for infringement of that parties
intellectual property rights.\\
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%-------------------------------------------------------------------------------------
Copyright \textcopyright ~2016, The \textit{ALF} Project.\\
The ALF Project Documentation
s licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
You are free to share and benefit from this documentation as long as this license is preserved
and proper attribution to the authors is given. For details see the ALF project
homepage \url{alf.physik.uni-wuerzburg.de} and the file \texttt{license.CCBYSA}.
% Copyright (c) 2016 The ALF project.
% This is a part of the ALF project documentation.
% The ALF project documentation by the ALF contributors is licensed
% under a Creative Commons Attribution-ShareAlike 4.0 International License.
% For the licensing details of the documentation see license.CCBYSA.
% !TEX root = Doc.tex
%------------------------------------------------------------
\section{Definition of the model Hamiltonian}\label{sec:def}
%------------------------------------------------------------
%\mycomment{Notation: Hats for second quantized operators, bold for matrices. \\
% Structure: \\ 1) We first want to define the model. \\
% 2) implementation of the QMC. \\
% 3) Data structure \\
% 4) Practical implementation and some simple test cases. }
The class of solvable models includes Hamiltonians $\hat{\mathcal{H}}$ that have the following general form:
\begin{eqnarray}
\hat{\mathcal{H}}&=&\hat{\mathcal{H}}_{T}+\hat{\mathcal{H}}_{V} + \hat{\mathcal{H}}_{I} + \hat{\mathcal{H}}_{0,I}\;,\mathrm{where}
......@@ -15,8 +16,8 @@ The class of solvable models includes Hamiltonians $\hat{\mathcal{H}}$ that hav
\hat{\mathcal{H}}_{T}
&=&
\sum\limits_{k=1}^{M_T}
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\sum\limits_{\sigma=1}^{N_{\mathrm{col}}}
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\sum\limits_{x,y}^{N_{\mathrm{dim}}}
\hat{c}^{\dagger}_{x \sigma s}T_{xy}^{(k s)} \hat{c}^{\phantom\dagger}_{y \sigma s} \equiv \sum\limits_{k=1}^{M_T} \hat{T}^{(k)}
\label{eqn:general_ham_t}\\
......@@ -25,8 +26,8 @@ The class of solvable models includes Hamiltonians $\hat{\mathcal{H}}$ that hav
-
\sum\limits_{k=1}^{M_V}U_{k}
\left\{
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\sum\limits_{\sigma=1}^{N_{\mathrm{col}}}
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\left[
\left(
\sum\limits_{x,y}^{N_{\mathrm{dim}}}
......@@ -35,18 +36,16 @@ The class of solvable models includes Hamiltonians $\hat{\mathcal{H}}$ that hav
-\alpha_{k s}
\right]
\right\}^{2} \equiv -
\sum\limits_{k=1}^{M_V}U_{k} \left(\hat{V}{(k)} \right)^2
\sum\limits_{k=1}^{M_V}U_{k} \left(\hat{V}^{(k)} \right)^2
\label{eqn:general_ham_v}\\
\hat{\mathcal{H}}_{I} & = &
\sum\limits_{k=1}^{M_I} \hat{Z}_{k}
\left\{
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\left(
\sum\limits_{\sigma=1}^{N_{\mathrm{col}}}
\left[
\sum\limits_{s=1}^{N_{\mathrm{fl}}}
\sum\limits_{x,y}^{N_{\mathrm{dim}}}
\hat{c}^{\dagger}_{x \sigma s} I_{xy}^{(k s)}\hat{c}^{\phantom\dagger}_{y \sigma s}
\right]
\right\} \equiv \sum\limits_{k=1}^{M_I} \hat{Z}_{k} \hat{I}^{(k)}
\right) \equiv \sum\limits_{k=1}^{M_I} \hat{Z}_{k} \hat{I}^{(k)}
\;.\label{eqn:general_ham_i}
\end{eqnarray}
The indices have the following meaning:
......@@ -70,8 +69,10 @@ Note that the matrices $\bm{T}^{(ks)}$, $\bm{V}^{(ks)}$ and $\bm{I}^{(ks)}$ e
The color index $\sigma$ only appears in the second quantized operators such that the Hamiltonian is manifestly SU($N_{\mathrm{col}}$) symmetric. We also require
the matrices $\bm{T}^{(ks)}$, $\bm{V}^{(ks)}$ and $\bm{I}^{(ks)}$ to be Hermitian.
%------------------------------------------------------------
\subsection{Formulation of the QMC}
%------------------------------------------------------------
The formulation of the Monte Carlo simulation is based on the following.
\begin{itemize}
\item We will discretize the imaginary time propagation: $\beta = \Delta \tau L_{\text{Trotter}} $
......@@ -99,18 +100,21 @@ is given by the combined spaces of Ising spin configurations and of Hubbard-Str
Here, the Ising spins take the values $s_{i,\tau} = \pm 1$ and the Hubbard-Stratonovich fields take the values $l_{j,\tau} = \pm 2, \pm 1 $.
\end{itemize}
%------------------------------------------------------------
\subsubsection{The partition function}
%------------------------------------------------------------
With the above, the partition function of the model (\ref{eqn:general_ham}) can be written as follows.
\begin{eqnarray}
\begin{eqnarray}\label{eqn:partition_1}
Z &=& \Tr{\left(e^{-\beta \hat{\mathcal{H}} }\right)}\nonumber\\
&=& \Tr{ \left[ e^{-\Delta \tau \hat{\mathcal{H}}_{0,I}} \prod_{k=1}^{M_T} e^{-\Delta \tau \hat{T}^{(k)}}
\prod_{k=1}^{M_V} e^{ \Delta \tau U_k \left( \hat{V}^{(k)} \right)^2} \prod_{k=1}^{M_I} e^{ -\Delta \tau \hat{\sigma}_{k} \hat{I}^{(k)}}