Metadata-Version: 2.1
Name: irbasis3
Version: 3.0a8
Summary: intermediate representation (IR) basis for electronic propagator
Home-page: https://github.com/SpM-lab/irbasis3
Author: ['Markus Wallerberger', 'Hiroshi Shinaoka', 'Kazuyoshi Yoshimi', 'Junya Otsuki', 'Chikano Naoya']
Author-email: markus.wallerberger@tuwien.ac.at
License: UNKNOWN
Keywords: irbasis
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: setuptools
Provides-Extra: doc
Requires-Dist: sphinx (>=2.1) ; extra == 'doc'
Requires-Dist: myst-parser ; extra == 'doc'
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: irbasis ; extra == 'test'
Requires-Dist: xprec ; extra == 'test'
Provides-Extra: xprec
Requires-Dist: xprec (>=1.1.1) ; extra == 'xprec'

irbasis3 - A library for the intermediate representation of propagators
=======================================================================
This library provides routines for constructing and working with the
intermediate representation of correlation functions.  It provides:

 - on-the-fly computation of basis functions for arbitrary cutoff Λ
 - basis functions and singular values are accurate to full precision
 - routines for sparse sampling

Installation
------------

    pip install irbasis3 xprec

Though not strictly required, we strongly recommend installing the `xprec`
package alongside `irbasis3` as it allows to compute the IR basis functions
with greater accuracy.

Quick start
-----------
Here is some python code illustrating the API:

    # Compute IR basis for fermions and β = 10, W <= 4.2
    import irbasis3, numpy
    K = irbasis3.KernelFFlat(lambda_=42)
    basis = irbasis3.FiniteTempBasis(K, statistics='F', beta=10)

    # Assume spectrum is a single pole at ω = 2.5, compute G(iw)
    # on the first few Matsubara frequencies. (Fermionic/bosonic Matsubara
    # frequencies are denoted by odd/even integers.)
    gl = basis.s * basis.v(2.5)
    giw = gl @ basis.uhat([1, 3, 5, 7])

    # Reconstruct same coefficients from sparse sampling on the Matsubara axis:
    smpl_iw = irbasis3.MatsubaraSampling(basis)
    giw = -1/(1j * numpy.pi/basis.beta * smpl_iw.wn - 2.5)
    gl_rec = smpl_iw.fit(giw)

You may want to start with reading up on the [intermediate representation].
It is tied to the analytic continuation of bosonic/fermionic spectral
functions from (real) frequencies to imaginary time, a transformation mediated
by a kernel `K`.  The kernel depends on a cutoff, which you should choose to be
`lambda_ >= β*W`, where `β` is the inverse temperature and `W` is the bandwidth:

One can now perform a [singular value expansion] on this kernel, which
generates two sets of orthonormal basis functions, one set `v[l](w)` for
real frequency side `w`, and one set `u[l](tau)` for the same obejct in
imaginary (Euclidean) time `tau`, together with a "coupling" strength `s[l]`
between the two sides.

By this construction, the imaginary time basis can be shown to be *optimal* in
terms of compactness.


[intermediate representation]: https://arxiv.org/abs/2106.12685
[singular value expansion]: https://en.wikipedia.org/wiki/Singular_value_decomposition

License
-------
This software is released under the MIT License.  See LICENSE.txt.


