postprocessing.maxent_sigma

Analytic continuation of the self-energy using maxent on an auxiliary Green’s function.

Reads Sigma(i omega) from the h5 archive and writes Sigma(omega) back. See the docstring of main() for more information.

mpi parallelized for the maxent routine over all blocks and for the continuator extraction over omega points.

Author: Maximilian Merkel, Materials Theory Group, ETH Zurich, 2020 - 2022

Warnings:
  • When using this on self-energies with SOC, please check that the formalism is correct, in particular the Kramers-Kronig relation.
postprocessing.maxent_sigma.main(external_path, iteration=None, continuator_type='inversion_sigmainf', maxent_error=0.02, omega_min=- 12.0, omega_max=12.0, n_points_maxent=400, n_points_alpha=50, analyzer='LineFitAnalyzer', n_points_interp=2000, n_points_final=1000)[source]

Main function that reads the Matsubara self-energy from h5, analytically continues it, writes the results back to the h5 archive and also returns the results.

Function parallelizes using MPI over impurities and blocks.

Parameters:
external_pathstring

Path to the h5 archive to read from and write to

iterationint/string

Iteration to read from and write to. Default to last_iter

continuator_typestring

Type of continuator to use, one of ‘inversion_sigmainf’, ‘inversion_dc’, ‘direct’

maxent_errorfloat

The error that is used for the analyzers.

omega_minfloat

Lower end of range where Sigma is being continued. Range has to comprise all features of the self-energy because the real part of it comes from the Kramers-Kronig relation applied to the auxiliary spectral function. For example, if the real-frequency self-energy bends at omega_min or omega_max, there are neglegcted features and the range should be extended.

omega_maxfloat

Upper end of range where Sigma is being continued. See omega_min.

n_points_maxentint

Number of omega points on the hyperbolic mesh used in analytically continuing the auxiliary GF

n_points_alphaint

Number of points that the MaxEnt alpha parameter is varied on logarithmically

analyzerstring

Analyzer used int MaxEnt, one of ‘LineFitAnalyzer’, ‘Chi2CurvatureAnalyzer’, ‘ClassicAnalyzer’, ‘EntropyAnalyzer’, ‘BryanAnalyzer’

n_points_interpint

Number of points where auxiliary GF is interpolated to integrate over it for the Kramers-Kronig relation

n_points_finalint

Number of omega points the complex auxiliary GF and therefore the continued self-energy has on a linear grid between omega_min and omega_max

Returns:
sigma_wlist of triqs.gf.BlockGf

Sigma(omega) per inequivalent shell

g_aux_wlist of triqs.gf.BlockGf

G_aux(omega) per inequivalent shell

Raises:
NotImplementedError

– When a wrong continuator type or maxent analyzer is chosen – For direct continuator: when the self energy contains blocks larger than 1x1 (no off-diagonal continuation possible) – For inversion_dc continuator: when the DC is not a diagonal matrix with the same entry for all blocks of an impurity. Otherwise, issues like the global frame violating the block structure would come up.