TRIQS/triqs_Nevanlinna 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
Nevanlinna_kernel.hpp
1#ifndef TRIQS_NEVANLINNA_NEVANLINNA_KERNEL_HPP
2#define TRIQS_NEVANLINNA_NEVANLINNA_KERNEL_HPP
3
4#include <complex>
5
6#include <nda/nda.hpp>
7#include <nda/mpi.hpp>
8#include <triqs/utility/macros.hpp>
9
10#include "kernel.hpp"
11#include "Nevanlinna_factorization.hpp"
12
13namespace triqs_Nevanlinna {
14
21 class Nevanlinna_kernel : public kernel {
22
23 public:
29 Nevanlinna_kernel(int precision = mp_digits) : kernel(precision) {
30 if (!mpi::communicator().rank())
31 std::cerr << "This is Nevanlinna analytical continuation. All off-diagonal elements will be ignored." << std::endl;
32 }
33
40 void init(nda::vector_const_view<std::complex<double>> mesh, nda::array_const_view<std::complex<double>, 3> data) override;
41
48 [[nodiscard]] nda::array<std::complex<double>, 3> evaluate(nda::vector_const_view<std::complex<double>> grid) override;
49
57 [[nodiscard]] nda::array<std::complex<double>, 3> evaluate(nda::vector_const_view<std::complex<double>> grid,
58 nda::array_const_view<std::complex<double>, 3> theta) override;
59
61 [[nodiscard]] C2PY_PROPERTY_GET(size) size_t size() const override { return _factorizations.size(); }
62
64 [[nodiscard]] C2PY_PROPERTY_GET(Pick_eigenvalues) nda::vector<double> get_Pick_eigenvalues() const override;
65
66 private:
67 size_t _N_im_freq{};
68 std::vector<Nevanlinna_factorization> _factorizations{};
69 };
70
71} // namespace triqs_Nevanlinna
72#endif //TRIQS_NEVANLINNA_NEVANLINNA_KERNEL_HPP
Nevanlinna_kernel(int precision=mp_digits)
Construct the diagonal Nevanlinna kernel.
C2PY_PROPERTY_GET(size) size_t size() const override
Number of orbitals (matrix dimension) handled by the kernel.
nda::array< std::complex< double >, 3 > evaluate(nda::vector_const_view< std::complex< double > > grid) override
Evaluate the diagonal real-frequency Green's function on a chosen grid.
void init(nda::vector_const_view< std::complex< double > > mesh, nda::array_const_view< std::complex< double >, 3 > data) override
Initialize the diagonal Nevanlinna continuation from Matsubara-frequency input data.