Implementations

Powered by Julia

The ACFlow toolkit is developed with pure Julia language. Thanks to powerful type system and multiple dispatch paradigm of the Julia language, the seven different analytic continuation solvers are integrated into an united software architecture. Redundant codes are greatly reduced. It is quite easy to implement new analytic continuation solver or add new features to the existing solvers if necessary. Distributed computing is a built-in feature of Julia. So, it is straightforward to realize parallel calculations in the ACFlow toolkit. Now except for the MaxEnt, BarRat, and NevanAC solvers, all the other solvers are parallelized.

Code Repository

The official code repository of the ACFlow toolkit is:

https://github.com/huangli712/ACFlow

Core Codes

The source codes of the ACFlow toolkit are placed in the acflow/src folder. Their functions are summarized in Table 1.

FilenameDescription
ACFlow.jlEntry of the ACFlow module.
maxent.jlMaximum entropy method.
rfa.jlBarycentric rational function approximation.
nac.jlNevanlinna analytical continuation.
sac.jlStochastic analytic continuation (K. S. D. Beach's algorithm).
san.jlStochastic analytic continuation (A. W. Sandvik's algorithm).
som.jlStochastic optimization method.
spx.jlStochastic pole expansion.
global.jlNumerical and physical constants.
types.jlBasic data structures and computational parameters.
base.jlDriver for analytic continuation simulation.
inout.jlRead input data and write calculated results.
config.jlParse configuration file and extract computational parameters.
math.jlRoot finding, numerical integration, interpolation, Einstein summation, and curve fitting.
util.jlSome utility functions.
mesh.jlMeshes for spectral density.
grid.jlGrids for input data.
model.jlDefault model functions.
kernel.jlKernel functions.

Table 1 | List of source codes of the ACFlow toolkit.

Note

There are four more scripts in the acflow/util folder.

  • acrun.jl - It is used to launch the analytic continuation tasks sequentially.
  • acprun.jl - It is used to launch the analytic continuation tasks parallelly.
  • ppole.jl - It is used to postprocess the outputs by the StochPX solver.
  • gmesh.jl -> It will generate a dynamical mesh for next analytic continuation simulation.

Documentation

The documentation of the ACFlow toolkit is written by using the Markdown language and the Documenter.jl package. The source codes are placed in the acflow/docs folder. The users can build documentation by themselves. Please see Installation for how to do that. Or they can read the latest documentation in the following website:

https://huangli712.github.io/projects/acflow/index.html

Tests and Examples

Forty-eight tests and four tutorials are also shipped with the ACFlow toolkit. The source codes for internal tests are placed in the acflow/test folder, while those for tutorials are saved in the acflow/tutor folder. See acflow/test/test.md and acflow/tutor/tutor.md for more details.

Note

We also develop an individual package, namely ACTest, to benchmark various analytic continuation solvers or methods. Please check the following URL for more details:

https://github.com/huangli712/ACTest