Loading...
Searching...
No Matches
q3::SubspaceDisentangler Class Reference

#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
 

Detailed Description

Definition at line 75 of file subspace_disentangler.hpp.

Constructor & Destructor Documentation

◆ SubspaceDisentangler()

q3::SubspaceDisentangler::SubspaceDisentangler ( const KPointStencil &  stencil,
const std::vector< KPointBandClassification > &  classification,
int  number_of_wannier_functions,
DisentanglementSettings  settings 
)
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().

Member Function Documentation

◆ run()

DisentanglementResult q3::SubspaceDisentangler::run ( const BlochOverlaps &  overlaps,
std::vector< DenseMatrix< Complex > >  initial_subspaces 
) const
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().


The documentation for this class was generated from the following file: