Skip to content

Commit

Permalink
refs in same style + ordering of refs
Browse files Browse the repository at this point in the history
  • Loading branch information
moritzleucke committed Oct 28, 2024
1 parent 990c8fe commit 7ec64e9
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 64 deletions.
6 changes: 3 additions & 3 deletions JOSS/analyticcontinuation/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ In this work, we present the analytic continuation component of the GreenX libra

Analytic continuation (AC) is used in various scientific fields where complex analysis is relevant, like mathematical function theory, engineering and theoretical physics/chemistry in e.g. quantum mechanics [@golze2019gw], quantum field theory [@nekrasov2024analytic], numerical methods for solving differential equations [@lope2002analytic] and real-time propagation methods [@li2020real]. In the following, we discuss the four examples depicted in Figure 1. The first example, shown in the top left of Figure 1, involves the application of AC to model functions, which may include Gamma functions [@luke1975error], Zeta functions [@iriguchi2007estimation], and others.

In quantum field theory, AC can be applied to the frequently arising, complex-valued Green's functions, like the Green's function of the Hubbard model [@schott2016analytic]. However, Green's functions also appear in ab-initio many-body perturbation theory methods like the $GW$ approximation. The $GW$ method [@hedin1965new] is considered the method of choice for predicting band structures of solids as well as electron removal and addition energies of molecules, as measured in direct and indirect photoemission experiments [@golze2019gw]. The complex-valued self energy is a central quantity in the $GW$ method, computed as the convolution of the Green's function $G$ and the screened interaction $W$. AC is a frequently used tool for continuing the self energy from the imaginary to the real frequency axis in conventional scaling $GW$ implementations [@van2015gw; @ren2012resolution; @gonze2009abinit; @wilhelm2017periodic] and low-scaling implementations [@liu2016cubic; @wilhelm2018toward; @wilhelm2021low; @graml2024low; @forster2020low; @forster2021low; @forster2021gw100; @forster2023two]. More recently, AC has also been applied to the screened interaction [@cdwac; @duchemin2020robust; @friedrich2019tetrahedron; @voora2020molecular; @samal2022modeling; @springer1998first; @kehry2023robust; @duchemin2021cubic] to e.g. reduce the computational scaling associated with core-level excitations [@cdwac]. The AC of a self energy $\Sigma$ and a screened Coulomb interaction $W$ are depicted as the second and third example in the bottom panel of Figure 1.
In quantum field theory, AC can be applied to the frequently arising, complex-valued Green's functions, like the Green's function of the Hubbard model [@schott2016analytic]. However, Green's functions also appear in ab-initio many-body perturbation theory methods like the $GW$ approximation. The $GW$ method [@hedin1965new] is considered the method of choice for predicting band structures of solids as well as electron removal and addition energies of molecules, as measured in direct and indirect photoemission experiments [@golze2019gw]. The complex-valued self energy is a central quantity in the $GW$ method, computed as the convolution of the Green's function $G$ and the screened interaction $W$. AC is a frequently used tool for continuing the self energy from the imaginary to the real frequency axis in conventional scaling $GW$ implementations [@gonze2009abinit; @ren2012resolution; @van2015gw; @wilhelm2017periodic] and low-scaling implementations [@liu2016cubic; @wilhelm2018toward; @forster2020low;@wilhelm2021low; @forster2021low; @forster2021gw100; @forster2023two; @graml2024low]. More recently, AC has also been applied to the screened interaction [@springer1998first; @friedrich2019tetrahedron; @duchemin2020robust; @voora2020molecular; @duchemin2021cubic; @samal2022modeling; @cdwac; @kehry2023robust] to e.g. reduce the computational scaling associated with core-level excitations [@cdwac]. The AC of a self energy $\Sigma$ and a screened Coulomb interaction $W$ are depicted as the second and third example in the bottom panel of Figure 1.

![Application of the GX-AnalyticContinuation component to a model function with two poles (top left), an RT-TDDFT UV-vis Absorption spectrum (top right), the $GW$ self energy (bottom left) and the $GW$ screened coulomb interaction (bottom right). More information about the functions that are presented here can be found on the [website of the GX-AC component](https://nomad-coe.github.io/greenX/gx_ac.html).](ac_overview.pdf)
![Application of the GX-AnalyticContinuation component to a model function with two poles (top left), an RT-TDDFT UV-vis Absorption spectrum (top right), the $GW$ self energy (bottom left) and the $GW$ screened coulomb interaction (bottom right). More information about the functions that are presented here can be found on the [website of the GX-AC component](https://nomad-coe.github.io/greenX/gx_ac.html).](ac_overview.pdf){label="overview"}

Our fourth and final example is the usage of AC in real-time propagation algorithms, such as real-time time-dependent density functional theory (RT-TDDFT) [@li2020real]. RT-TDDFT yields, for example, access to the absorption spectra of molecules and solids via the complex-valued dynamic polarizability tensor. The resolution of the RT-TDDFT absorption spectrum depends on the simulation length. It has been shown that applying Padé approximants to the dynamic polarizability tensor is an effective strategy for achieving higher spectral resolution with much shorter simulation times [@bruner2016accelerated; @mattiat2018efficient].
An illustrative UV-vis absorption spectrum, with and without the use of AC, is shown in the top right of Figure 1.
Expand All @@ -48,7 +48,7 @@ Padé approximants are an established choice for rational functions. Their flexi

The GreenX library aims to provide a suite of common tools, such as AC, for electronic structure codes based on the $GW$ method. The previously published first component of the GreenX library is the TimeFrequency component [@azizi2023time]. It provides minimax time and frequency grids for Random Phase Approximation (RPA) and $GW$ methods that were validated in a comprehensive benchmark study [@azizi2024validation]. In this work we present the second component of the GreenX library, the GX-AnalyticContinuation (GX-AC) component, which has the Apache-2.0 license. It provides a Fortran API for analytic continuation using Padé rational functions that can be easily integrated into other Fortran projects. The component uses the Thiele reciprocal difference method [@ThielePade_original; @ThielePade_Milne; @ThielePade_Baker] to obtain the Padé coefficients. Although the primary focus of the GreenX library are $GW$-based methods, the GX-AC component is suitable for any application where AC with Padé approximants can be used. Extensive benchmarks and the full documentation of GX-AC component can be found on the [component's website](https://nomad-coe.github.io/greenX/gx_ac.html).

Generating Padé approximants is prone to numerical instabilities caused by rounding errors that are amplified in the numerous differences in the Thiele-Padé algorithm [@PadeInstable; @cuyt1988instability; @jones1974numerical; @Beach2000], we employ two strategies to address these numerical instabilities. The first approach is to use multiple precision floating point arithmetic for the implementation of the Thiele algorithm, minimizing the numerical noise caused by rounding errors. We use the GNU Multiple Precision (GMP) library [@GMPlib] to handle the multiple-precision floats. The advantage of this library is that it provides highly optimized assembly code for most of the processors available. This approach allows us to exceed the 128-bit precision limit typically supported by standard Fortran compilers. The second strategy involves using a greedy algorithm for Thiele Padé approximants, that has been validated in previous work [@greedy_pade1; @greedy_pade2; @cdwac]. The greedy algorithm is used to rearrange the function arguments of the reference function in order to make the model numerically more stable.
Generating Padé approximants is prone to numerical instabilities caused by rounding errors that are amplified in the numerous differences in the Thiele-Padé algorithm [@PadeInstable; @jones1974numerical; @cuyt1988instability; @Beach2000], we employ two strategies to address these numerical instabilities. The first approach is to use multiple precision floating point arithmetic for the implementation of the Thiele algorithm, minimizing the numerical noise caused by rounding errors. We use the GNU Multiple Precision (GMP) library [@GMPlib] to handle the multiple-precision floats. The advantage of this library is that it provides highly optimized assembly code for most of the processors available. This approach allows us to exceed the 128-bit precision limit typically supported by standard Fortran compilers. The second strategy involves using a greedy algorithm for Thiele Padé approximants, that has been validated in previous work [@greedy_pade1; @greedy_pade2; @cdwac]. The greedy algorithm is used to rearrange the function arguments of the reference function in order to make the model numerically more stable.

Another feature of the GX-AC component is to force the Padé model to exhibit a certain symmetry. This ensures that the approximant has the same symmetry as the reference function in the case that the symmetry of the reference function is known in advance, e.g. the screened interaction in the $GW$ is an even function [@duchemin2020robust]. Additionally, the enforced symmetry helps to increase the quality of the Padé approximant because every point of a given reference function also accounts for symmetrical equivalent points. Even, odd, conjugate and anti-conjugate function symmetry is supported by the component at this point.

Expand Down
Loading

0 comments on commit 7ec64e9

Please sign in to comment.