A comprehensive guide about how to perform reliable analytic continuation.
Overview
As is well-known, analytic continuation is a tedious, tricky, and complicated job. This page contains all of the details (and experiences), that need to be known by the users, about how to get reliable and accurate spectra by using various solvers as implemented in the ACFlow toolkit.
The following tricks and tips are MY personal viewpoints or experiences. They are not general rules. They might be wrong or ineffective or useless for some cases. They are definitely not suitable for the other analytic continuation codes.
- Overview
- General Rules
- MaxEnt Solver
- BarRat Solver
- NevanAC Solver
- StochAC Solver
- StochSK Solver
- StochOM Solver
- StochPX Solver
General Rules
It would be better to perform analytic continuation in Matsubara frequency axis, instead of imaginary time axis. See
gridandngrid.Employ the BarRat or MaxEnt solver for a fast analytic continuation task. And then the stochastic methods (the StochPX solver is preferred) can be used to get a better spectrum. See
solver.If the input data is broken or discontinuous, please setup the
gridparameter correctly.Set
nmeshto an odd number.The spectra generated by any analytic continuation solvers (
Aout.data) can be used as the default model for theMaxEntandStochACsolvers. Seemtype.Employ the
pmodeandmtypeparameters to customize the default model if you know a priori information about the spectra.Employ the
pmeshandmeshparameters to customize the real-frequency mesh if you know the positions for the sharp features in the spectra.Employ the
excludeparameters to limit the distributions of random fields for theStochAC,StochSK,StochOMandStochPXsolvers, if you have rough estimations about the band edges or band gaps in the spectra. Actually, we can use the constrained algorithm to determine the positions for these sharp features.
MaxEnt Solver
The
chi2kinkandbryanalgorithms are recommended. Seemethod.The Shannon-Jaynes entropy is recommented. But sometimes, if sharp features are essential, please choose the bayesian reconstruction entropy. See
stype.Adjust the
nalph,alpha,ratioparameters to make sure that the $\chi^2(\alpha)$ curve is reasonable. It means that thedefault model regionand thenoise-fitting regionshould exhibit similar lengths.If there is a
NaNerror, please decrease thenalphparameter at first. And then you can increase thealphaparameter. Of cource, a different scheme for determining optimal $\alpha$ is also possible. Seemethod.
BarRat Solver
If you know the possible type of the spectrum (continuum or discrete), please setup the
atypeparameter. Seeatype.The BarRat solver wants more input data than the other solvers. The
ngridparameter should be at least 100. Seengrid.Sometimes the Prony approximation will lead to worse results. Use it carefully. See
denoise.If you know the noise level of input data, please set
epsilonto it and letdenoise= "prony_s".If you do not know the noise level of input data, just let
denoise= "prony_o" or "none". Seedenoise.If the spectrum is discrete, the BarRat solver will output the positions of the poles. Please adjust the
pcutparameter to control how many poles are kept. Seepcut.
NevanAC Solver
It is extremely sensitive to the noise. So please make sure that the input data is smooth and is free of noise.
Actually, I think it is not suitable for quantum Monte Carlo data.
StochAC Solver
Increase
nfineto 20000. Seenfine.Perhaps more $\alpha$ could help. See
nalph.Run it parallelly (use
util/acprun.jl).It supports both the
constrained sampling algorithmandself-adaptive sampling algorithm.
StochSK Solver
The
chi2minalgorithm is recommended. Seemethod.Increase
nfineandnstep. Seenfine.Run it parallelly (use
util/acprun.jl).It supports the
constrained sampling algorithm.
StochOM Solver
It is more efficient for Matsubara frequency Green's functions.
Increase
ntry,nstepandnbox. Seentry.Run it parallelly (use
util/acprun.jl).It supports the
constrained sampling algorithm.
StochPX Solver
If the spectrum is expected to be broad, please set
method = 'mean'. If the spectrum is expected to be $\delta$-like, please setmethod = 'best'. Seemethod.Run it parallelly (use
util/acprun.jl).Increase
ntryto get smooth spectrum. Seentry.The
nstepparameter is related with thenpoleparameter. Ifnpoleis large,nstepcould be small. Ifnpoleis small,nstepshould be large. Seenstepandnpole.For condensed matter cases,
npoleshould be quite large. While for molecule cases,npoleshould be small. Seenpole.How to determine the
nstepparameter? We just increasenstepfrom its default value and observe the terminal output of theStochPXsolver. If $\chi^2$ becomes stable (it means that the value of $\chi^2$ can be oscillating, but increasingnstepcan not suppress $\chi^2$ further), the correspondingnstepis optimal. Seenstep.How to determine the
thetaparameter? Please look at the acceptance probabilities for various Monte Carlo proposals in thestat.datafile. They should not be too large or too small, or else we should adjusttheta. Seetheta.If you want to obtain a smoother spectrum, please increase
eta, or else reduceeta. Seeeta.If the spectrum contains many sharp features, the
constrained sampling algorithmandself-adaptive sampling algorithmcan help. Seeconstrained sampling algorithmandself-adaptive sampling algorithmfor the basic principles.If you only want to change the
methodandetaparameters, it is not necessary to launch the StochPX solver again. The scriptutil/ppole.jlcould help.