7#include <triqs/gfs.hpp>
8#include <triqs/utility/macros.hpp>
40 nda::array<dcomplex, 4>
H_k;
51 mpi::broadcast(x.
H_k, c, root);
76 [[nodiscard]] nda::matrix_const_view<dcomplex>
H(
long sigma,
long k_idx)
const {
79 return H_k(k_idx, sigma_p, R_nu, R_nu);
86 [[nodiscard]]
long n_k()
const {
return H_k.extent(0); }
126 nda::array<dcomplex, 4>
P_k;
135 mpi::broadcast(x.
P_k, c, root);
155 [[nodiscard]] nda::matrix_const_view<dcomplex>
P(
long sigma,
long k_idx)
const {
158 return P_k(k_idx, sigma_p,
r_all, R_nu);
184 mpi::broadcast(x.
H, c, root);
185 mpi::broadcast(x.
C_space, c, root);
186 mpi::broadcast(x.
P, c, root);
191 std::ostream &
operator<<(std::ostream &out, one_body_elements_on_grid
const &);
192 void h5_read(h5::group g, std::string
const &name, one_body_elements_on_grid &x);
193 void h5_write(h5::group g, std::string
const &name, one_body_elements_on_grid
const &x);
196 one_body_elements_on_grid
permute_local_space(std::vector<std::vector<long>>
const &atom_partition, one_body_elements_on_grid
const &x);
200 one_body_elements_on_grid
rotate_local_basis(nda::array<nda::matrix<dcomplex>, 2>
const &U, one_body_elements_on_grid
const &x);
212 nda::array<nda::matrix<dcomplex>, 2>
impurity_levels(one_body_elements_on_grid
const &obe);
218 nda::array<dcomplex, 3> G0_C_k_sigma(one_body_elements_on_grid
const &obe,
double mu,
long k_idx,
long sigma, std::vector<dcomplex>
const &omegas,
219 bool mu_derivative =
false);
Describe the atomic orbitals within downfolded space.
nda::array< nda::matrix< dcomplex >, 2 > impurity_levels(one_body_elements_on_grid const &obe)
Compute the local impurity levels from the single-particle dispersion.
one_body_elements_on_grid rotate_local_basis(nda::array< nda::matrix< dcomplex >, 2 > const &U, one_body_elements_on_grid const &x)
Rotates the local basis of the downfolding projector.
std::ostream & operator<<(std::ostream &out, one_body_elements_on_grid const &)
void h5_write(h5::group g, std::string const &name, initial_data const &data)
long sigma_to_data_idx(spin_kind_e spin_kind, long sigma)
Map a spin index to a data index.
spin_kind_e
Kind of σ index.
one_body_elements_on_grid permute_local_space(std::vector< std::vector< long > > const &atom_partition, one_body_elements_on_grid const &obe)
void h5_read(h5::group g, std::string const &name, initial_data &data)
static constexpr auto r_all
The one-body dispersion as a function of momentum.
bool matrix_valued
Is the dispersion matrix-valued?
nda::array< long, 2 > n_bands_per_k
Number of bands for each k-point and .
C2PY_IGNORE friend void mpi_broadcast(band_dispersion &x, mpi::communicator c={}, int root=0)
MPI broadcast.
bool operator==(band_dispersion const &) const =default
Equality comparison operator.
nda::array< double, 1 > k_weights
Weight in the BZ for each k-point.
nda::array< dcomplex, 4 > H_k
Hamiltonian .
long n_k() const
Number of k-points in the grid.
friend std::ostream & operator<<(std::ostream &out, band_dispersion const &bd)
Print information about a band_dispersion object.
long N_nu(long sigma, long k_idx) const
Number of bands for a given k-point and spin .
nda::matrix_const_view< dcomplex > H(long sigma, long k_idx) const
Get for a given and .
spin_kind_e spin_kind
Spin kind of the one-body data.
The projector that downfolds the energy bands onto a set of localized atomic-like orbitals.
nda::matrix_const_view< dcomplex > P(long sigma, long k_idx) const
Get for a given and .
spin_kind_e spin_kind
Spin kind of the one-body data.
nda::array< dcomplex, 4 > P_k
Projector .
friend std::ostream & operator<<(std::ostream &out, downfolding_projector const &proj)
Print information about a downfolding_projector object.
bool operator==(downfolding_projector const &) const =default
Equality comparison operator.
nda::array< long, 2 > n_bands_per_k
Number of bands for each k-point and .
downfolding_projector rotate_local_basis(nda::array< nda::matrix< dcomplex >, 2 > const &U) const
Rotates the local basis of the downfolding projector.
C2PY_IGNORE friend void mpi_broadcast(downfolding_projector &x, mpi::communicator c={}, int root=0)
MPI broadcast.
A one-body elements struct where all of the underlying data exists on a fixed momentum grid.
std::optional< ibz_symmetry_ops > ibz_symm_ops
IBZ symmetrizer after a k-sum.
bool operator==(one_body_elements_on_grid const &) const =default
Equality comparison operator.
local_space C_space
Local space.
band_dispersion H
Band dispersion.
downfolding_projector P
Downfolding projector .
C2PY_IGNORE friend void mpi_broadcast(one_body_elements_on_grid &x, mpi::communicator c={}, int root=0)
MPI broadcast.