ergo
PurificationGeneral< MatrixType > Class Template Referenceabstract

PurificationGeneral is an abstract class which provides an interface for SP2, SP2ACC and possibly other recursive expansions. More...

#include <purification_general.h>

Inheritance diagram for PurificationGeneral< MatrixType >:
Purification_sp2< MatrixType > Purification_sp2acc< MatrixType >

Public Types

typedef ergo_real real
 
typedef intervalType IntervalType
 
typedef mat::normType NormType
 
typedef std::vector< int > VectorTypeInt
 
typedef std::vector< realVectorTypeReal
 
typedef generalVector VectorType
 
typedef MatrixType MatrixTypeWrapper
 

Public Member Functions

 PurificationGeneral ()
 
virtual void initialize (const MatrixType &F_, const IntervalType &lumo_bounds_, const IntervalType &homo_bounds_, int maxit_, real error_sub_, real error_eig_, bool use_new_stopping_criterion_, NormType norm_truncation, NormType norm_stop_crit, int nocc_)
 Set imporatant parameters for the recursive expansion. More...
 
virtual void PurificationStart ()
 Start recursive expansion. More...
 
virtual void clear ()
 Clear all matrices in the class. More...
 
void set_spectrum_bounds (real eigmin, real eigmax)
 Set spectrum bounds. More...
 
void get_spectrum_bounds (real &eigmin, real &eigmax)
 Get spectrum bounds. More...
 
int get_exact_number_of_puri_iterations ()
 
int get_est_number_of_puri_iterations ()
 
virtual real total_subspace_error (int it)
 
void set_eigenvectors_params (string eigenvectors_method_, string eigenvectors_iterative_method_, real eigensolver_accuracy_, int eigensolver_maxiter_, int scf_step_, bool try_eigv_on_next_iteration_if_fail_)
 Set parameters for computing eigenvectors. More...
 
void set_eigenvectors_params (string eigenvectors_method_, string eigenvectors_iterative_method_, real eigensolver_accuracy_, int eigensolver_maxiter_, int scf_step_, bool try_eigv_on_next_iteration_if_fail_, bool use_prev_vector_as_initial_guess_, const std::vector< VectorType > &eigVecOCCRef, const std::vector< VectorType > &eigVecUNOCCRef)
 Set parameters for computing eigenvectors - long version. More...
 
void extract_computed_eigenpairs (std::vector< VectorType > &eigVecUNOCCref, std::vector< VectorType > &eigVecOCCref, std::vector< real > &eigValUNOCCref, std::vector< real > &eigValOCCref)
 
void set_compute_eigenvectors_in_each_iteration ()
 
void unset_compute_eigenvectors_in_each_iteration ()
 
void set_number_of_eigenvectors_to_compute (const int occ, const int unocc)
 
int get_number_of_occ_eigenvectors_to_compute () const
 
int get_number_of_unocc_eigenvectors_to_compute () const
 
void set_jump_over_X_iter_proj_method (int val)
 
int get_jump_over_X_iter_proj_method () const
 
void set_go_back_X_iter_proj_method (int val)
 
int get_go_back_X_iter_proj_method () const
 
void compute_eigenvectors_without_diagonalization_on_F (const MatrixType &F, int eigensolver_maxiter_for_F)
 
void gen_matlab_file_norm_diff (const char *filename) const
 Create MATLAB .m file which plots the idempotency error in each recursive expansion iteration. More...
 
void gen_matlab_file_threshold (const char *filename) const
 Create MATLAB .m file which plots the actual introduced error after truncation of the matrix X_i in each recursive expansion iteration. More...
 
void gen_matlab_file_nnz (const char *filename) const
 Create MATLAB .m file which plots the number of non-zero elements in matrices X_i and X_i^2 in each recursive expansion iteration. More...
 
void gen_matlab_file_eigs (const char *filename) const
 Create MATLAB .m file which plots the homo and lumo bounds in each recursive expansion iteration. More...
 
void gen_matlab_file_time (const char *filename) const
 Create MATLAB .m file which creates a bar plot presenting time spent on various parts of the iteration (such as matrix square and computation of eigenvectors) in each recursive expansion iteration. More...
 
virtual ~PurificationGeneral ()
 Create MATLAB .m file which plots a condition number of a problem of computing the density matrix in each recursive expansion iteration. More...
 

Static Public Member Functions

static real get_epsilon ()
 Get machine epsilon. More...
 
static real get_max_double ()
 Get largest number. More...
 
static real get_min_double ()
 Get smallest number. More...
 

Public Attributes

PuriInfo info
 Fill in during purification with useful information. More...
 
MatrixType X
 Matrix X. More...
 
MatrixType Xsq
 Matrix X^2. More...
 

Protected Member Functions

virtual bool is_initialized () const
 Check is function initialize() is already called. More...
 
virtual bool puri_is_prepared () const
 Check is function prepare_to_purification() is already called. More...
 
virtual void prepare_to_purification ()
 Prepare data for recursive expansion. More...
 
virtual void prepare_to_purification_eigenvectors ()
 Prepare data related to the eigenvectors computations. More...
 
virtual void purification_process ()
 Run recursive expansion. More...
 
virtual void eigenvalue_bounds_estimation ()
 Estimate eigenvalues near homo-lumo gap. More...
 
void save_matrix_now (string str)
 
void save_matrix_A_now (const MatrixType &A, string str)
 
virtual void compute_spectrum_bounds ()
 Compute spectrum bounds. More...
 
virtual void compute_X ()
 Get matrix X0 by mapping spectrum of F into [0,1] in reverse order. More...
 
void map_bounds_to_0_1 ()
 Get eigenvalue bounds for X0. More...
 
virtual void check_standard_stopping_criterion (const real XmX2_norm, int &stop)
 Check stopping criterion (obsolete). More...
 
virtual void check_new_stopping_criterion (const int it, const real XmX2_norm_it, const real XmX2_norm_itm2, const real XmX2_trace, int &stop, real &estim_order)
 Check stopping criterion. More...
 
virtual void stopping_criterion (IterationInfo &iter_info, int &stop, real &estim_order)
 Choose stopping criterion and check it. More...
 
int get_int_eig_iter_method (string eigenvectors_iterative_method)
 
int get_int_eig_method (string eigenvectors_method)
 
void compute_eigenvectors_without_diagonalization (int it, IterationInfo &iter_info)
 Compute HOMO and LUMO eigenvalues and eigenvectors of the matrix F. More...
 
void compute_eigenvectors_without_diagonalization_last_iter_proj ()
 
void projection_method_one_puri_iter (int current_iteration)
 
void compute_eigenvector (MatrixType const &M, std::vector< VectorType > &eigVec, std::vector< real > &eigVal, int it, bool is_homo)
 
void set_eigenvectors_params_basic (string eigenvectors_method_, string eigenvectors_iterative_method_, real eigensolver_accuracy_, int eigensolver_maxiter_, int scf_step_, bool try_eigv_on_next_iteration_if_fail_, bool use_prev_vector_as_initial_guess_)
 Set parameters for computing eigenvectors. More...
 
double get_nnz_X (size_t &nnzX)
 Get nnz of X in %. More...
 
double get_nnz_X ()
 Get nnz of X in %. More...
 
double get_nnz_Xsq (size_t &nnzXsq)
 Get nnz of X^2 in %. More...
 
double get_nnz_Xsq ()
 Get nnz of X^2 in %. More...
 
void estimate_homo_lumo (const VectorTypeReal &XmX2_norm_mixed, const VectorTypeReal &XmX2_norm_frob, const VectorTypeReal &XmX2_trace)
 Get homo and lumo bounds from traces and norms of Xi-Xi^2. More...
 
void get_eigenvalue_estimates (const VectorTypeReal &XmX2_norm_mixed, const VectorTypeReal &XmX2_norm_frob, const VectorTypeReal &XmX2_trace)
 Get homo and lumo bounds from traces and norms of Xi-Xi^2. More...
 
virtual void determine_iteration_for_eigenvectors ()
 Determine in which iterations will be computed homo and lumo eigenvectors. More...
 
virtual void get_iterations_for_lumo_and_homo (int &chosen_iter_lumo, int &chosen_iter_homo)
 Find the best iterations for computing eigenvectors. More...
 
virtual void check_eigenvectors_at_the_end ()
 
virtual void discard_homo_eigenvector ()
 
virtual void discard_lumo_eigenvector ()
 
void output_norms_and_traces (IterationInfo &iter_info) const
 
void output_separate_total_times (PuriInfo &info) const
 
void output_time_WriteAndReadAll () const
 
void check_homo_lumo_eigenvalues (real &eigVal, VectorType &eigVec, bool &is_homo, bool &is_lumo, const int iter)
 
void get_eigenvalue_of_F_from_eigv_of_Xi (real &eigVal, const VectorType &eigVec)
 
void save_selected_eigenvector_to_file (const VectorType &v, int num, bool is_homo, int it=-1)
 
virtual void truncate_matrix (real &thresh, int it)
 
virtual void set_truncation_parameters ()
 
void find_shifts_every_iter ()
 /brief Find shifts sigma which will be used for construction of the filtering polynomial for computing eigenvectors. More...
 
void writeToTmpFile (MatrixType &A) const
 
void readFromTmpFile (MatrixType &A) const
 
virtual void set_init_params ()=0
 
virtual void estimate_number_of_iterations (int &estim_num_iter)=0
 
virtual void purify_X (const int it)=0
 
virtual void purify_bounds (const int it)=0
 
virtual void save_other_iter_info (IterationInfo &iter_info, int it)=0
 
virtual void apply_inverse_poly_vector (const int it, VectorTypeReal &bounds_from_it)=0
 
virtual void return_constant_C (const int it, real &Cval)=0
 
virtual real apply_poly (const int it, real x)=0
 
virtual real compute_derivative (const int it, real x, real &DDf)=0
 

Protected Attributes

MatrixType F
 Matrix F. More...
 
std::vector< MatrixTypevec_matrices_Xi
 Save matrices Xi in each iteration (if used projection method for computing eigenvectors). More...
 
bool initialized_flag
 
bool puri_is_prepared_flag
 
bool use_new_stopping_criterion
 True for new stopping criterion. More...
 
int additional_iterations
 Do a few more iterations after convergence. More...
 
int maxit
 Maximum number of iterations. More...
 
int check_stopping_criterion_iter
 Iteration when to start to check stopping criterion. More...
 
int nocc
 Number of occupied orbitals. More...
 
NormType normPuriTrunc
 Norm used for the truncation of matrices. More...
 
NormType normPuriStopCrit
 Norm used in the stopping criterion Can be mat::frobNorm, mat::mixedNorm, or mat::euclNorm. More...
 
real error_sub
 Allowed error in invariant subspaces. More...
 
real error_eig
 Error in eigenvalues (used just in old stopping criterion). More...
 
real error_per_it
 Error allowed in each iteration due to truncation. More...
 
real constant_C
 Asymptotic constant C needed for the new stopping criterion. More...
 
real gammaStopEstim
 Used on the stopping criterion for estimation of eigenvalues from purification. More...
 
VectorTypeInt VecPoly
 Polynomials computed in the function estimated_number_of_iterations() VecPoly[i] = 1 if we use X=X^2 VecPoly[i] = 0 if we use X=2X-X^2 (or their accelerated versions) More...
 
VectorTypeReal VecGap
 Gap computed using inner homo and lumo bounds on each iteration. More...
 
VectorTypeReal ITER_ERROR_VEC
 (Eigenvectors) Maximum error introduced in each iteration. More...
 
VectorTypeReal SIGMA_HOMO_VEC
 
VectorTypeReal SIGMA_LUMO_VEC
 (Eigenvectors) Approximation of shifts in each iteration. More...
 
VectorTypeReal EIG_ABS_GAP_LUMO_VEC
 
VectorTypeReal EIG_ABS_GAP_HOMO_VEC
 (Eigenvectors) Absolute and relative gap in filter for lumo eigenvalue. More...
 
VectorTypeReal EIG_REL_GAP_LUMO_VEC
 
VectorTypeReal EIG_REL_GAP_HOMO_VEC
 (Eigenvectors) Absolute and relative gap in filter for homo eigenvalue. More...
 
int number_of_occ_eigenvectors
 
int number_of_unocc_eigenvectors
 
int jump_over_X_iter_proj_method
 
int go_back_X_iter_proj_method
 
IntervalType homo_bounds
 (1-homo) bounds for Xi in iteration i More...
 
IntervalType lumo_bounds
 Lumo bounds for Xi in iteration i. More...
 
IntervalType homo_bounds_X0
 Initial lumo bounds for X. More...
 
IntervalType lumo_bounds_X0
 Initial lumo bounds for X. More...
 
IntervalType homo_bounds_F
 Initial lumo bounds for F. More...
 
IntervalType lumo_bounds_F
 Initial homo bounds for F. More...
 
IntervalType homo_bounds_F_new
 
IntervalType lumo_bounds_F_new
 
IntervalType spectrum_bounds
 Outer bounds for the whole spectrum of F/Xi. More...
 
bool computed_spectrum_bounds
 
int eigenvectors_method
 Chosen method for computing eigenvectors. More...
 
int eigenvectors_iterative_method
 Chosen eigensolver. More...
 
real eigensolver_accuracy
 Accuracy of the eigenvalue problem solver. More...
 
int eigensolver_maxiter
 Maximum number of iterations for eigensolver. More...
 
string eigenvectors_method_str
 
string eigenvectors_iterative_method_str
 
bool use_prev_vector_as_initial_guess
 
bool compute_eigenvectors_in_this_SCF_cycle
 
bool try_eigv_on_next_iteration_if_fail
 
VectorType eigVecLUMORef
 
VectorType eigVecHOMORef
 
std::vector< VectorTypeeigVecOCC
 Here we save eigenvectors corresponding to the occupied orbitals. More...
 
std::vector< VectorTypeeigVecUNOCC
 Here we save eigenvectors corresponding to the unoccupied orbitals. More...
 
std::vector< realeigValOCC
 Here we save eigenvalues corresponding to the occupied orbitals. More...
 
std::vector< realeigValUNOCC
 Here we save eigenvalues corresponding to the unoccupied orbitals. More...
 
real eigValLUMO
 
real eigValHOMO
 
int iter_for_homo
 
int iter_for_lumo
 
VectorTypeInt good_iterations_homo
 Iterations where homo eigenvector can be computed. More...
 
VectorTypeInt good_iterations_lumo
 Iterations where homo eigenvector can be computed. More...
 
VectorTypeInt really_good_iterations_homo
 Iterations where homo eigenvector is actually computed. More...
 
VectorTypeInt really_good_iterations_lumo
 Iterations where lumo eigenvector is actually computed. More...
 
int scf_step
 
bool compute_eigenvectors_in_each_iteration
 Compute homo and lumo eigenpairs in every iteration and save eigenvectors in txt files. More...
 

Detailed Description

template<typename MatrixType>
class PurificationGeneral< MatrixType >

PurificationGeneral is an abstract class which provides an interface for SP2, SP2ACC and possibly other recursive expansions.

Template Parameters
MatrixTypeType of a matrix (ex. symmMatrix).

Member Typedef Documentation

◆ IntervalType

template<typename MatrixType >
typedef intervalType PurificationGeneral< MatrixType >::IntervalType

◆ MatrixTypeWrapper

template<typename MatrixType >
typedef MatrixType PurificationGeneral< MatrixType >::MatrixTypeWrapper

◆ NormType

template<typename MatrixType >
typedef mat::normType PurificationGeneral< MatrixType >::NormType

◆ real

template<typename MatrixType >
typedef ergo_real PurificationGeneral< MatrixType >::real

◆ VectorType

template<typename MatrixType >
typedef generalVector PurificationGeneral< MatrixType >::VectorType

◆ VectorTypeInt

template<typename MatrixType >
typedef std::vector<int> PurificationGeneral< MatrixType >::VectorTypeInt

◆ VectorTypeReal

template<typename MatrixType >
typedef std::vector<real> PurificationGeneral< MatrixType >::VectorTypeReal

Constructor & Destructor Documentation

◆ PurificationGeneral()

◆ ~PurificationGeneral()

template<typename MatrixType >
virtual PurificationGeneral< MatrixType >::~PurificationGeneral ( )
inlinevirtual

Create MATLAB .m file which plots a condition number of a problem of computing the density matrix in each recursive expansion iteration.

The condition number is equal to inverse of the homo-lumo gap approximation. Create PYTHON .py file which plots number of non-zero elements in matrices X_i and X_i^2 in each recursive expansion iteration.

Member Function Documentation

◆ apply_inverse_poly_vector()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::apply_inverse_poly_vector ( const int  it,
VectorTypeReal bounds_from_it 
)
protectedpure virtual

◆ apply_poly()

template<typename MatrixType >
virtual real PurificationGeneral< MatrixType >::apply_poly ( const int  it,
real  x 
)
protectedpure virtual

◆ check_eigenvectors_at_the_end()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::check_eigenvectors_at_the_end
protectedvirtual

◆ check_homo_lumo_eigenvalues()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::check_homo_lumo_eigenvalues ( real eigVal,
VectorType eigVec,
bool &  is_homo,
bool &  is_lumo,
const int  iter 
)
protected

◆ check_new_stopping_criterion()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::check_new_stopping_criterion ( const int  it,
const real  XmX2_norm_it,
const real  XmX2_norm_itm2,
const real  XmX2_trace,
int &  stop,
real estim_order 
)
protectedvirtual

Check stopping criterion.

The new stopping criterion based on the order of convergence is used, see article "Parameterless Stopping Criteria for Recursive Density Matrix Expansions", J. Chem. Theory Comput., 2016, 12 (12), pp 5788–5802 DOI: 10.1021/acs.jctc.6b00626

References do_output(), LOG_AREA_DENSFROMF, LOG_CAT_INFO, ORDER, template_blas_log(), template_blas_pow(), and template_blas_sqrt().

◆ check_standard_stopping_criterion()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::check_standard_stopping_criterion ( const real  XmX2_norm,
int &  stop 
)
protectedvirtual

Check stopping criterion (obsolete).

Use stopping criterion based on user defined threshold values.

References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ clear()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::clear ( )
inlinevirtual

Clear all matrices in the class.

Needed to be called if Chunks and Tasks are used, since we need to delete all ChunkIDs before exiting the program.

References PurificationGeneral< MatrixType >::X, and PurificationGeneral< MatrixType >::Xsq.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and main().

◆ compute_derivative()

template<typename MatrixType >
virtual real PurificationGeneral< MatrixType >::compute_derivative ( const int  it,
real  x,
real DDf 
)
protectedpure virtual

◆ compute_eigenvector()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_eigenvector ( MatrixType const &  M,
std::vector< VectorType > &  eigVec,
std::vector< real > &  eigVal,
int  it,
bool  is_homo 
)
protected

◆ compute_eigenvectors_without_diagonalization()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_eigenvectors_without_diagonalization ( int  it,
IterationInfo iter_info 
)
protected

Compute HOMO and LUMO eigenvalues and eigenvectors of the matrix F.

The method uses the polynomial constructed during the recursive expansion, so no additional matrix multiplications are required. See article J. Chem. Theory Comput., Just Accepted Manuscript, DOI: 10.1021/acs.jctc.7b00968

References do_output(), EIG_PROJECTION_INT, EIG_SQUARE_INT, Util::TimeMeter::get_elapsed_wall_seconds(), IterationInfo::homo_eig_solver_time, LOG_AREA_DENSFROMF, LOG_CAT_INFO, IterationInfo::lumo_eig_solver_time, IterationInfo::orbital_homo_time, IterationInfo::orbital_lumo_time, output_current_memory_usage(), Util::TimeMeter::print(), and rows.

◆ compute_eigenvectors_without_diagonalization_last_iter_proj()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_eigenvectors_without_diagonalization_last_iter_proj
protected

◆ compute_eigenvectors_without_diagonalization_on_F()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_eigenvectors_without_diagonalization_on_F ( const MatrixType F,
int  eigensolver_maxiter_for_F 
)

◆ compute_spectrum_bounds()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_spectrum_bounds
protectedvirtual

◆ compute_X()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::compute_X
protectedvirtual

Get matrix X0 by mapping spectrum of F into [0,1] in reverse order.

References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ determine_iteration_for_eigenvectors()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::determine_iteration_for_eigenvectors
protectedvirtual

Determine in which iterations will be computed homo and lumo eigenvectors.

Calling get_iterations_for_lumo_and_homo().

References do_output(), EIG_SQUARE_INT, LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ discard_homo_eigenvector()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::discard_homo_eigenvector
protectedvirtual

◆ discard_lumo_eigenvector()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::discard_lumo_eigenvector
protectedvirtual

◆ eigenvalue_bounds_estimation()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::eigenvalue_bounds_estimation
protectedvirtual

Estimate eigenvalues near homo-lumo gap.

References do_output(), LOG_AREA_DENSFROMF, LOG_CAT_INFO, and mat::mixedNorm.

◆ estimate_homo_lumo()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::estimate_homo_lumo ( const VectorTypeReal XmX2_norm_mixed,
const VectorTypeReal XmX2_norm_frob,
const VectorTypeReal XmX2_trace 
)
protected

Get homo and lumo bounds from traces and norms of Xi-Xi^2.

Called by get_eigenvalue_estimates().

Used at the end of the recursive expansion. See article SIAM J. Sci. Comput., 36(2), B147–B170.

References min(), and template_blas_sqrt().

◆ estimate_number_of_iterations()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::estimate_number_of_iterations ( int &  estim_num_iter)
protectedpure virtual

◆ extract_computed_eigenpairs()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::extract_computed_eigenpairs ( std::vector< VectorType > &  eigVecUNOCCref,
std::vector< VectorType > &  eigVecOCCref,
std::vector< real > &  eigValUNOCCref,
std::vector< real > &  eigValOCCref 
)
inline

◆ find_shifts_every_iter()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::find_shifts_every_iter
protected

/brief Find shifts sigma which will be used for construction of the filtering polynomial for computing eigenvectors.

◆ gen_matlab_file_eigs()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::gen_matlab_file_eigs ( const char *  filename) const

Create MATLAB .m file which plots the homo and lumo bounds in each recursive expansion iteration.


References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and plot_results().

◆ gen_matlab_file_nnz()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::gen_matlab_file_nnz ( const char *  filename) const

Create MATLAB .m file which plots the number of non-zero elements in matrices X_i and X_i^2 in each recursive expansion iteration.


References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and plot_results().

◆ gen_matlab_file_norm_diff()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::gen_matlab_file_norm_diff ( const char *  filename) const

Create MATLAB .m file which plots the idempotency error in each recursive expansion iteration.


References do_output(), mat::euclNorm, mat::frobNorm, LOG_AREA_DENSFROMF, LOG_CAT_INFO, and mat::mixedNorm.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and plot_results().

◆ gen_matlab_file_threshold()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::gen_matlab_file_threshold ( const char *  filename) const

Create MATLAB .m file which plots the actual introduced error after truncation of the matrix X_i in each recursive expansion iteration.


References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and plot_results().

◆ gen_matlab_file_time()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::gen_matlab_file_time ( const char *  filename) const

Create MATLAB .m file which creates a bar plot presenting time spent on various parts of the iteration (such as matrix square and computation of eigenvectors) in each recursive expansion iteration.


References do_output(), EIG_SQUARE_INT, LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), and plot_results().

◆ get_eigenvalue_estimates()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::get_eigenvalue_estimates ( const VectorTypeReal XmX2_norm_mixed,
const VectorTypeReal XmX2_norm_frob,
const VectorTypeReal XmX2_trace 
)
protected

Get homo and lumo bounds from traces and norms of Xi-Xi^2.

Used at the end of the recursive expansion. See article SIAM J. Sci. Comput., 36(2), B147–B170.

◆ get_eigenvalue_of_F_from_eigv_of_Xi()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::get_eigenvalue_of_F_from_eigv_of_Xi ( real eigVal,
const VectorType eigVec 
)
protected

◆ get_epsilon()

template<typename MatrixType >
static real PurificationGeneral< MatrixType >::get_epsilon ( )
inlinestatic

Get machine epsilon.

◆ get_est_number_of_puri_iterations()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_est_number_of_puri_iterations

◆ get_exact_number_of_puri_iterations()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_exact_number_of_puri_iterations

◆ get_go_back_X_iter_proj_method()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_go_back_X_iter_proj_method ( ) const
inline

◆ get_int_eig_iter_method()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_int_eig_iter_method ( string  eigenvectors_iterative_method)
protected

◆ get_int_eig_method()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_int_eig_method ( string  eigenvectors_method)
protected

◆ get_iterations_for_lumo_and_homo()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::get_iterations_for_lumo_and_homo ( int &  chosen_iter_lumo,
int &  chosen_iter_homo 
)
protectedvirtual

Find the best iterations for computing eigenvectors.

The best iteration defined by both a small error in the eigenvector and a small number of iterations of an iterative method.

References template_blas_fabs().

◆ get_jump_over_X_iter_proj_method()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_jump_over_X_iter_proj_method ( ) const
inline

◆ get_max_double()

template<typename MatrixType >
static real PurificationGeneral< MatrixType >::get_max_double ( )
inlinestatic

Get largest number.

References max.

◆ get_min_double()

template<typename MatrixType >
static real PurificationGeneral< MatrixType >::get_min_double ( )
inlinestatic

Get smallest number.

References min().

◆ get_nnz_X() [1/2]

template<typename MatrixType >
double PurificationGeneral< MatrixType >::get_nnz_X ( )
inlineprotected

Get nnz of X in %.

References PurificationGeneral< MatrixType >::X.

◆ get_nnz_X() [2/2]

template<typename MatrixType >
double PurificationGeneral< MatrixType >::get_nnz_X ( size_t &  nnzX)
inlineprotected

Get nnz of X in %.

Parameters
nnzXNumber of nz of X

References PurificationGeneral< MatrixType >::X.

◆ get_nnz_Xsq() [1/2]

template<typename MatrixType >
double PurificationGeneral< MatrixType >::get_nnz_Xsq ( )
inlineprotected

Get nnz of X^2 in %.

References PurificationGeneral< MatrixType >::Xsq.

◆ get_nnz_Xsq() [2/2]

template<typename MatrixType >
double PurificationGeneral< MatrixType >::get_nnz_Xsq ( size_t &  nnzXsq)
inlineprotected

Get nnz of X^2 in %.

Parameters
nnzXsqNumber of nz of X^2

References PurificationGeneral< MatrixType >::Xsq.

◆ get_number_of_occ_eigenvectors_to_compute()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_number_of_occ_eigenvectors_to_compute ( ) const
inline

◆ get_number_of_unocc_eigenvectors_to_compute()

template<typename MatrixType >
int PurificationGeneral< MatrixType >::get_number_of_unocc_eigenvectors_to_compute ( ) const
inline

◆ get_spectrum_bounds()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::get_spectrum_bounds ( real eigmin,
real eigmax 
)

Get spectrum bounds.

Return spectrum bounds for the matrix F. If not computed before, compute them.

◆ initialize()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::initialize ( const MatrixType F_,
const IntervalType lumo_bounds_,
const IntervalType homo_bounds_,
int  maxit_,
real  error_sub_,
real  error_eig_,
bool  use_new_stopping_criterion_,
NormType  norm_truncation,
NormType  norm_stop_crit,
int  nocc_ 
)
virtual

Set imporatant parameters for the recursive expansion.

Parameters
[in]F_[in] Effective Hamiltonian matrix.
[in]lumo_bounds_[in] Bounds for lumo eigenvalue.
[in]homo_bounds_[in] Bounds for homo eigenvalue.
[in]maxit_[in] Maximum number of recursive expansion iterations.
[in]error_sub_[in] Allowed error in invariant subspaces.
[in]error_eig_[in] Error in eigenvalues (used just in old stopping criterion).
[in]use_new_stopping_criterion_[in] Set if want to use new stopping criterion.
[in]norm_truncation[in] Truncation norm.
[in]norm_stop_crit[in] Stopping criterion norm.
[in]nocc_[in] Number of occupied orbitals.

References do_output(), enable_printf_output(), mat::euclNorm, mat::frobNorm, LOG_AREA_DENSFROMF, LOG_CAT_INFO, mat::mixedNorm, and NUM_ADDITIONAL_ITERATIONS.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), main(), test1(), test2(), test3(), and test4().

◆ is_initialized()

template<typename MatrixType >
virtual bool PurificationGeneral< MatrixType >::is_initialized ( ) const
inlineprotectedvirtual

Check is function initialize() is already called.

References PurificationGeneral< MatrixType >::initialized_flag.

◆ map_bounds_to_0_1()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::map_bounds_to_0_1
protected

Get eigenvalue bounds for X0.

References do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ output_norms_and_traces()

◆ output_separate_total_times()

◆ output_time_WriteAndReadAll()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::output_time_WriteAndReadAll
protected

◆ prepare_to_purification()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::prepare_to_purification
protectedvirtual

◆ prepare_to_purification_eigenvectors()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::prepare_to_purification_eigenvectors
protectedvirtual

Prepare data related to the eigenvectors computations.

References do_output(), EIG_PROJECTION_INT, LOG_AREA_DENSFROMF, LOG_CAT_INFO, max, and TOL_OVERLAPPING_BOUNDS.

◆ projection_method_one_puri_iter()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::projection_method_one_puri_iter ( int  current_iteration)
protected

◆ puri_is_prepared()

template<typename MatrixType >
virtual bool PurificationGeneral< MatrixType >::puri_is_prepared ( ) const
inlineprotectedvirtual

◆ purification_process()

◆ PurificationStart()

◆ purify_bounds()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::purify_bounds ( const int  it)
protectedpure virtual

◆ purify_X()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::purify_X ( const int  it)
protectedpure virtual

◆ readFromTmpFile()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::readFromTmpFile ( MatrixType A) const
protected

References A.

◆ return_constant_C()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::return_constant_C ( const int  it,
real Cval 
)
protectedpure virtual

◆ save_matrix_A_now()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::save_matrix_A_now ( const MatrixType A,
string  str 
)
protected

References A, and write_matrix_to_mtx().

◆ save_matrix_now()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::save_matrix_now ( string  str)
protected

◆ save_other_iter_info()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::save_other_iter_info ( IterationInfo iter_info,
int  it 
)
protectedpure virtual

◆ save_selected_eigenvector_to_file()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::save_selected_eigenvector_to_file ( const VectorType v,
int  num,
bool  is_homo,
int  it = -1 
)
protected

◆ set_compute_eigenvectors_in_each_iteration()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_compute_eigenvectors_in_each_iteration ( )
inline

◆ set_eigenvectors_params() [1/2]

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_eigenvectors_params ( string  eigenvectors_method_,
string  eigenvectors_iterative_method_,
real  eigensolver_accuracy_,
int  eigensolver_maxiter_,
int  scf_step_,
bool  try_eigv_on_next_iteration_if_fail_ 
)

Set parameters for computing eigenvectors.

Referenced by GetDensFromFock::get_dens_from_fock_sparse(), main(), test1(), test2(), test3(), and test4().

◆ set_eigenvectors_params() [2/2]

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_eigenvectors_params ( string  eigenvectors_method_,
string  eigenvectors_iterative_method_,
real  eigensolver_accuracy_,
int  eigensolver_maxiter_,
int  scf_step_,
bool  try_eigv_on_next_iteration_if_fail_,
bool  use_prev_vector_as_initial_guess_,
const std::vector< VectorType > &  eigVecOCCRef,
const std::vector< VectorType > &  eigVecUNOCCRef 
)

Set parameters for computing eigenvectors - long version.

References cols, do_output(), LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ set_eigenvectors_params_basic()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_eigenvectors_params_basic ( string  eigenvectors_method_,
string  eigenvectors_iterative_method_,
real  eigensolver_accuracy_,
int  eigensolver_maxiter_,
int  scf_step_,
bool  try_eigv_on_next_iteration_if_fail_,
bool  use_prev_vector_as_initial_guess_ 
)
protected

Set parameters for computing eigenvectors.

References do_output(), EIG_EMPTY, LOG_AREA_DENSFROMF, and LOG_CAT_INFO.

◆ set_go_back_X_iter_proj_method()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_go_back_X_iter_proj_method ( int  val)
inline

◆ set_init_params()

template<typename MatrixType >
virtual void PurificationGeneral< MatrixType >::set_init_params ( )
protectedpure virtual

◆ set_jump_over_X_iter_proj_method()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_jump_over_X_iter_proj_method ( int  val)
inline

◆ set_number_of_eigenvectors_to_compute()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_number_of_eigenvectors_to_compute ( const int  occ,
const int  unocc 
)
inline

◆ set_spectrum_bounds()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_spectrum_bounds ( real  eigmin,
real  eigmax 
)

Set spectrum bounds.

Used if we know spectrum bounds or want to compute them outside the class.

◆ set_truncation_parameters()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::set_truncation_parameters
protectedvirtual

◆ stopping_criterion()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::stopping_criterion ( IterationInfo iter_info,
int &  stop,
real estim_order 
)
protectedvirtual

◆ total_subspace_error()

template<typename MatrixType >
PurificationGeneral< MatrixType >::real PurificationGeneral< MatrixType >::total_subspace_error ( int  it)
virtual

◆ truncate_matrix()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::truncate_matrix ( real thresh,
int  it 
)
protectedvirtual

◆ unset_compute_eigenvectors_in_each_iteration()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::unset_compute_eigenvectors_in_each_iteration ( )
inline

◆ writeToTmpFile()

template<typename MatrixType >
void PurificationGeneral< MatrixType >::writeToTmpFile ( MatrixType A) const
protected

References A.

Member Data Documentation

◆ additional_iterations

template<typename MatrixType >
int PurificationGeneral< MatrixType >::additional_iterations
protected

Do a few more iterations after convergence.

◆ check_stopping_criterion_iter

template<typename MatrixType >
int PurificationGeneral< MatrixType >::check_stopping_criterion_iter
protected

Iteration when to start to check stopping criterion.

Referenced by Purification_sp2acc< MatrixType >::set_init_params().

◆ compute_eigenvectors_in_each_iteration

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::compute_eigenvectors_in_each_iteration
protected

Compute homo and lumo eigenpairs in every iteration and save eigenvectors in txt files.

NOTE: if we are computing eigenvector in every iteration, we will save eigenvector computed in the last iteration, and it is most probably the wrong eigenvector.

Referenced by PurificationGeneral< MatrixType >::PurificationGeneral(), PurificationGeneral< MatrixType >::set_compute_eigenvectors_in_each_iteration(), and PurificationGeneral< MatrixType >::unset_compute_eigenvectors_in_each_iteration().

◆ compute_eigenvectors_in_this_SCF_cycle

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::compute_eigenvectors_in_this_SCF_cycle
protected

◆ computed_spectrum_bounds

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::computed_spectrum_bounds
protected

◆ constant_C

template<typename MatrixType >
real PurificationGeneral< MatrixType >::constant_C
protected

Asymptotic constant C needed for the new stopping criterion.

◆ EIG_ABS_GAP_HOMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::EIG_ABS_GAP_HOMO_VEC
protected

(Eigenvectors) Absolute and relative gap in filter for lumo eigenvalue.

◆ EIG_ABS_GAP_LUMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::EIG_ABS_GAP_LUMO_VEC
protected

◆ EIG_REL_GAP_HOMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::EIG_REL_GAP_HOMO_VEC
protected

(Eigenvectors) Absolute and relative gap in filter for homo eigenvalue.

◆ EIG_REL_GAP_LUMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::EIG_REL_GAP_LUMO_VEC
protected

◆ eigensolver_accuracy

template<typename MatrixType >
real PurificationGeneral< MatrixType >::eigensolver_accuracy
protected

Accuracy of the eigenvalue problem solver.

When residual is less then this value, stop.

◆ eigensolver_maxiter

template<typename MatrixType >
int PurificationGeneral< MatrixType >::eigensolver_maxiter
protected

Maximum number of iterations for eigensolver.

◆ eigenvectors_iterative_method

template<typename MatrixType >
int PurificationGeneral< MatrixType >::eigenvectors_iterative_method
protected

Chosen eigensolver.

◆ eigenvectors_iterative_method_str

template<typename MatrixType >
string PurificationGeneral< MatrixType >::eigenvectors_iterative_method_str
protected

◆ eigenvectors_method

template<typename MatrixType >
int PurificationGeneral< MatrixType >::eigenvectors_method
protected

Chosen method for computing eigenvectors.

◆ eigenvectors_method_str

template<typename MatrixType >
string PurificationGeneral< MatrixType >::eigenvectors_method_str
protected

◆ eigValHOMO

template<typename MatrixType >
real PurificationGeneral< MatrixType >::eigValHOMO
protected

◆ eigValLUMO

template<typename MatrixType >
real PurificationGeneral< MatrixType >::eigValLUMO
protected

◆ eigValOCC

template<typename MatrixType >
std::vector<real> PurificationGeneral< MatrixType >::eigValOCC
protected

Here we save eigenvalues corresponding to the occupied orbitals.

Referenced by PurificationGeneral< MatrixType >::extract_computed_eigenpairs().

◆ eigValUNOCC

template<typename MatrixType >
std::vector<real> PurificationGeneral< MatrixType >::eigValUNOCC
protected

Here we save eigenvalues corresponding to the unoccupied orbitals.

Referenced by PurificationGeneral< MatrixType >::extract_computed_eigenpairs().

◆ eigVecHOMORef

template<typename MatrixType >
VectorType PurificationGeneral< MatrixType >::eigVecHOMORef
protected

◆ eigVecLUMORef

template<typename MatrixType >
VectorType PurificationGeneral< MatrixType >::eigVecLUMORef
protected

◆ eigVecOCC

template<typename MatrixType >
std::vector<VectorType> PurificationGeneral< MatrixType >::eigVecOCC
protected

Here we save eigenvectors corresponding to the occupied orbitals.

Referenced by PurificationGeneral< MatrixType >::extract_computed_eigenpairs().

◆ eigVecUNOCC

template<typename MatrixType >
std::vector<VectorType> PurificationGeneral< MatrixType >::eigVecUNOCC
protected

Here we save eigenvectors corresponding to the unoccupied orbitals.

Referenced by PurificationGeneral< MatrixType >::extract_computed_eigenpairs().

◆ error_eig

template<typename MatrixType >
real PurificationGeneral< MatrixType >::error_eig
protected

Error in eigenvalues (used just in old stopping criterion).

◆ error_per_it

template<typename MatrixType >
real PurificationGeneral< MatrixType >::error_per_it
protected

Error allowed in each iteration due to truncation.

◆ error_sub

template<typename MatrixType >
real PurificationGeneral< MatrixType >::error_sub
protected

Allowed error in invariant subspaces.

◆ F

template<typename MatrixType >
MatrixType PurificationGeneral< MatrixType >::F
protected

Matrix F.

Needed for computation of eigenvectors.

◆ gammaStopEstim

template<typename MatrixType >
real PurificationGeneral< MatrixType >::gammaStopEstim
protected

Used on the stopping criterion for estimation of eigenvalues from purification.

Referenced by Purification_sp2< MatrixType >::set_init_params(), and Purification_sp2acc< MatrixType >::set_init_params().

◆ go_back_X_iter_proj_method

◆ good_iterations_homo

template<typename MatrixType >
VectorTypeInt PurificationGeneral< MatrixType >::good_iterations_homo
protected

Iterations where homo eigenvector can be computed.

◆ good_iterations_lumo

template<typename MatrixType >
VectorTypeInt PurificationGeneral< MatrixType >::good_iterations_lumo
protected

Iterations where homo eigenvector can be computed.

◆ homo_bounds

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::homo_bounds
protected

(1-homo) bounds for Xi in iteration i

◆ homo_bounds_F

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::homo_bounds_F
protected

Initial lumo bounds for F.

◆ homo_bounds_F_new

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::homo_bounds_F_new
protected

◆ homo_bounds_X0

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::homo_bounds_X0
protected

Initial lumo bounds for X.

◆ info

◆ initialized_flag

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::initialized_flag
protected

◆ ITER_ERROR_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::ITER_ERROR_VEC
protected

(Eigenvectors) Maximum error introduced in each iteration.

◆ iter_for_homo

template<typename MatrixType >
int PurificationGeneral< MatrixType >::iter_for_homo
protected

◆ iter_for_lumo

template<typename MatrixType >
int PurificationGeneral< MatrixType >::iter_for_lumo
protected

◆ jump_over_X_iter_proj_method

◆ lumo_bounds

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::lumo_bounds
protected

Lumo bounds for Xi in iteration i.

◆ lumo_bounds_F

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::lumo_bounds_F
protected

Initial homo bounds for F.

◆ lumo_bounds_F_new

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::lumo_bounds_F_new
protected

◆ lumo_bounds_X0

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::lumo_bounds_X0
protected

Initial lumo bounds for X.

◆ maxit

template<typename MatrixType >
int PurificationGeneral< MatrixType >::maxit
protected

Maximum number of iterations.

◆ nocc

template<typename MatrixType >
int PurificationGeneral< MatrixType >::nocc
protected

Number of occupied orbitals.

◆ normPuriStopCrit

template<typename MatrixType >
NormType PurificationGeneral< MatrixType >::normPuriStopCrit
protected

Norm used in the stopping criterion Can be mat::frobNorm, mat::mixedNorm, or mat::euclNorm.

◆ normPuriTrunc

template<typename MatrixType >
NormType PurificationGeneral< MatrixType >::normPuriTrunc
protected

Norm used for the truncation of matrices.

Can be mat::frobNorm, mat::mixedNorm, or mat::euclNorm.

◆ number_of_occ_eigenvectors

◆ number_of_unocc_eigenvectors

◆ puri_is_prepared_flag

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::puri_is_prepared_flag
protected

◆ really_good_iterations_homo

template<typename MatrixType >
VectorTypeInt PurificationGeneral< MatrixType >::really_good_iterations_homo
protected

Iterations where homo eigenvector is actually computed.

◆ really_good_iterations_lumo

template<typename MatrixType >
VectorTypeInt PurificationGeneral< MatrixType >::really_good_iterations_lumo
protected

Iterations where lumo eigenvector is actually computed.


◆ scf_step

template<typename MatrixType >
int PurificationGeneral< MatrixType >::scf_step
protected

◆ SIGMA_HOMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::SIGMA_HOMO_VEC
protected

◆ SIGMA_LUMO_VEC

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::SIGMA_LUMO_VEC
protected

(Eigenvectors) Approximation of shifts in each iteration.

◆ spectrum_bounds

template<typename MatrixType >
IntervalType PurificationGeneral< MatrixType >::spectrum_bounds
protected

Outer bounds for the whole spectrum of F/Xi.

◆ try_eigv_on_next_iteration_if_fail

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::try_eigv_on_next_iteration_if_fail
protected

◆ use_new_stopping_criterion

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::use_new_stopping_criterion
protected

True for new stopping criterion.

Referenced by PurificationGeneral< MatrixType >::PurificationGeneral().

◆ use_prev_vector_as_initial_guess

template<typename MatrixType >
bool PurificationGeneral< MatrixType >::use_prev_vector_as_initial_guess
protected

◆ vec_matrices_Xi

template<typename MatrixType >
std::vector<MatrixType> PurificationGeneral< MatrixType >::vec_matrices_Xi
protected

Save matrices Xi in each iteration (if used projection method for computing eigenvectors).

If ergo input file mat.write_to_file=1 than matrices are saved to the file to save memory.

◆ VecGap

template<typename MatrixType >
VectorTypeReal PurificationGeneral< MatrixType >::VecGap
protected

Gap computed using inner homo and lumo bounds on each iteration.

◆ VecPoly

template<typename MatrixType >
VectorTypeInt PurificationGeneral< MatrixType >::VecPoly
protected

Polynomials computed in the function estimated_number_of_iterations() VecPoly[i] = 1 if we use X=X^2 VecPoly[i] = 0 if we use X=2X-X^2 (or their accelerated versions)

◆ X

◆ Xsq


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