The Maxent Project: A utility for performing analytic continuation using the method of Maximum Entropy.
Many-body Green's functions calculated on the imaginary axis can be related to a real spectral function, but is an ill-posed problem. One algorithm to solve for the spectral function is the maximum entropy method. This code is an implementation of maximum entropy method as well as useful utilities for dealing with Green's functions and analytic continuation.
When compiling both ALPSCore and Maxent, be careful to ensure boost was compiled with the same library and stdlib as ALPSCore and Maxent.
ALPSCore needs to be properly installed, see ALPSCore library. ALPSCore provides the location of the Boost libraries.
For our linear algebra routines we use Eigen3 version >=3.1. If not in your path use -DEIGEN3_INCLUDE_DIR=/path/to/eigen3/include
, where /path/to/eigen3/include
is the directory containing Eigen
subdirectory with Eigen3 header files.
Maxent requires the GNU Scientific Library (GSL), which can be found here. The choice of BLAS library (the included CBLAS or an external ATLAS/BLAS/etc) does not matter here as the only the integration library is used. If not in your path use -GSL_ROOT_DIR=
to the path that has bin/gsl-config
.
Eigen3 has a good SVD routine, but can be very slow for a large kernel.
Some systems, like OS X or those with Intel MKL, have precompiled BLAS/LAPACK routines that can be faster and as accurate as Eigen3.
To turn on LAPACK support for the SVD, please use the flag -DUSE_LAPACK=1
.
To install provide something like:
$ git clone https://github.com/CQMP/Maxent
$ mkdir build
$ cd build
$ cmake ../ -DCMAKE_INSTALL_PREFIX=/path/to/here/Maxent/build -DALPSCore_DIR=/path/to/alpscore/build/share/ALPSCore
$ make -j 8
Sometimes it is more convenient to have CC=gcc CXX=g++
(or clang, etc) before the cmake command.
Once compiled please run make test
to ensure everything works.
The Maxent project uses the following conventions:
To see more, see this pdf.
Upon installation there will be a binary maxent
. It uses ALPSCore parameters, which can take a param file as input (see examples), or command line arguments of the form --PARAMETER=value
.
The three required parameters are BETA
(inverse temperature), NDAT
(the number of input data points), and either the location of the input data DATA
or input through the param file using X_i
(see below).
See ./maxent --help
for a list of required and availble parameters.
The Green's function for PH symmetric data is 0, therefore we only require the imaginary part. Input file:
omega_n imag sigma
//example:
omega_0 imag0 sigma0
omega_1 imag1 sigma1
...
Data can also be stored in the parameter file using:
X_0= xxxx
SIGMA_0=xxx
X_1=xxxx
SIGMA_1=xxx
...
X_ndat-1=xxxx
SIGMA_ndat-1=xxx
This assumes a non-zero real part of the Green's function. Input data should be:
n real sigma_real
n+1 imag sigma_imag
//example:
omega_0 real0 sigma_real0 imag0 sigma_imag0
omega_1 real1 sigma_real1 imag1 sigma_imag1
NOTE: NDAT=#of points*2 when there is not Particle Hole Symmetric data
Data can also be stored in the parameter file using:
X_0= xxxx
SIGMA_0=xxx
X_1=xxxx
SIGMA_1=xxx
...
where X_0
is the real part and X_1
is the imaginary part, etc.
For either symmetric or non-symmetric data, G(tau) is simply input as:
tau_n Gtau_n sigma_n
tau_n+1 Gtau_n+1 sigma_n+1
You can also include tau points in the parameter file, defined like:
TAU_0=xxx...
TAU_1=xxx
...
TAU_NDAT-1=xxx
For the TZero
kernel, supply any BETA
value.
- Flat
- Gaussian
- Shifted Gaussian
- Double Gaussian
- Two Gaussians
- Double General Gaussian
- Lorentzian
- See Gaussian
- Linear Rise Exponential Decay
- Quadratic Rise Exponential Decay
- Tabulated Default model = "Filename"
Maxent creats a default model on a grid between [0,1]
Requires: GSL, Boost
Requires: Boost
Requires: GMP,Eigen3.1
Because Pade requires GMP, it does not build automatically. To include it in your build, either run cmake
from the pade folder, or in your maxent
build folder add -DPADE=1
to thecmake
command