15 out <<
"Band dispersion ε^σ(k) on a grid [band_dispersion]:\n";
17 out1 << fmt::format(
"Number of bands (max): {}\n", x.
H_k.extent(3));
18 out1 << fmt::format(
"Represented on a fixed grid of {} points.\n", x.
n_k());
19 out1 << fmt::format(
"Shape of H[k_idx, σ, ν, ν'] = {}\n", x.
H_k.shape());
20 out1 << fmt::format(
"ε^σ(k) is matrix valued? = {}\n", x.
matrix_valued);
27 out <<
"Downfolding projector P^σ_mν(k) on a grid [downfolding_projector]:\n";
29 out1 << fmt::format(
"Shape of P[k_idx, σ, m, ν] = {}\n", x.
P_k.shape());
36 out <<
"Local space [orbital_set]:\n";
40 out1 << fmt::format(
"Total dimension [M]: {}\n", x.
dim());
41 out1 << fmt::format(
"Number of correlated atoms: {}\n", x.
atomic_shells().size());
47 [&](
auto i) { return x.first_shell_of_its_equiv_cls(i) == i; });
48 out1 << fmt::format(
"Number of inequivalent correlated atoms = {}\n", ineq);
50 out1 <<
"Atomic decomposition:\n";
51 auto pr_vec = [](
auto const &V) {
52 return fmt::format(
"{}\n", fmt::join(V | stdv::transform([](
auto x) {
return fmt::format(
"{:>3}", x); }),
" "));
55 out2 <<
" dim_a: " << pr_vec(dec);
56 out2 <<
" a: " << pr_vec(range(dec.size()));
58 out2 <<
"irreps: " << fmt::format(
"{}\n", fmt::join(sub,
" "));
64 out <<
"[I]rreduicible [B]rillouin [Z]one symmetry operations from the DFT code [ibz_symmetry_ops]\n";
66 out1 << fmt::format(
"Number of symmetry ops: {}\n", ibz.
ops.size());
67 out1 << fmt::format(
"Number of rotations per op: {}\n", ibz.
ops[0].mats.size());
76 out <<
"One body elements representing a downfolding from (restricted) Bloch 𝓑 to Correlated space 𝓒 from DFT code [one_body_elements_on_grid]\n";
83 out1 << fmt::format(
"IBZ = {}\n",
bool(obe.
ibz_symm_ops));
A custom output stream that automatically indents each new line by a specified number of spaces.
Describe the atomic orbitals within downfolded space.
nda::array< std::vector< long >, 2 > const & atoms_block_decomposition() const
List of all blocks spanning 𝓒 space -> atoms_block_decomposition.
auto atomic_decomposition() const
Generates [dimension of the atomic shell].
long dim() const
Dimension of the correlated space.
std::vector< atomic_orbs > const & atomic_shells() const
List of all atomic shells spanning the 𝓒 space.
std::ostream & operator<<(std::ostream &out, one_body_elements_on_grid const &)
static constexpr auto r_all
The one-body dispersion as a function of momentum.
bool matrix_valued
Is the dispersion matrix-valued?
nda::array< dcomplex, 4 > H_k
H_k [k_idx, σ', nu, nu'].
long n_k() const
Number of k points in the grid.
The projector that downfolds the one-body dispersion (ν) onto local orbitals (m).
nda::array< dcomplex, 4 > P_k
Pk[alpha][k_idx, σ', m_alpha, nu].
A one-body elements struct where all of the underlying data exists on a fixed momentum grid.
C2PY_IGNORE std::optional< ibz_symmetry_ops > ibz_symm_ops
IBZ symmetrizer after a k-sum.