#include <subspace_disentangler.hpp>
Public Member Functions | |
| SubspaceDisentangler (const KPointStencil &stencil, const std::vector< KPointBandClassification > &classification, int number_of_wannier_functions, DisentanglementSettings settings) | |
| DisentanglementResult | run (const BlochOverlaps &overlaps, std::vector< DenseMatrix< Complex > > initial_subspaces) const |
Definition at line 75 of file subspace_disentangler.hpp.
|
inline |
classification is one verdict per k-point of the stencil: the kept bands and the frozen ones. number_of_wannier_functions is the dimension of the subspace chosen at every one of them.
Definition at line 82 of file subspace_disentangler.hpp.
References q3::DisentanglementSettings::damping, q3::DisentanglementSettings::maximum_iterations, and q3::KPointStencil::number_of_kpoints().
|
inline |
overlaps are M_mn(k,b) over the CAPTURED bands, exactly as the record stores them; they are sliced to the keep-lists here, once. initial_subspaces[k] is kept(k) x N, the orthonormalised column space of A(k) restricted to the kept bands.
The spread accumulated above belongs to the subspaces this iteration STARTED from, because those are what Z was built against; the subspaces about to be returned are one update further on. At convergence the two differ by less than the tolerance, but "within tolerance" is not "the same number", and a caller that prints Omega_I beside a model is entitled to the Omega_I of THAT model. One extra pass, once.
Definition at line 119 of file subspace_disentangler.hpp.
References q3::DisentanglementSettings::convergence_tolerance, q3::DisentanglementSettings::convergence_window, q3::disentanglement_unconverged, q3::DenseMatrix< T >::empty(), q3::ConvergenceWindow::has_converged(), q3::log::info(), q3::DisentanglementSettings::maximum_iterations, q3::KPointStencil::number_of_kpoints(), q3::ConvergenceWindow::recent_history(), q3::ConvergenceWindow::recent_history_text(), q3::ConvergenceWindow::record(), and q3::BlochOverlaps::restricted_to().
Referenced by q3::ProjectabilityDisentanglementSelection::choose().