|
| Purification_sp2acc () |
|
virtual void | set_init_params () |
|
virtual void | get_poly (const int it, int &poly, real &alpha) |
|
virtual void | set_poly (const int it) |
|
virtual void | estimate_number_of_iterations (int &numit) |
|
virtual void | purify_X (const int it) |
|
virtual void | purify_bounds (const int it) |
|
virtual void | save_other_iter_info (IterationInfo &iter_info, int it) |
|
virtual void | apply_inverse_poly_vector (const int it, VectorTypeReal &bounds_from_it) |
|
virtual void | return_constant_C (const int it, real &Cval) |
|
virtual real | apply_poly (const int it, real x) |
|
virtual real | compute_derivative (const int it, real x, real &DDf) |
|
| 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 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...
|
|
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 |
|
MatrixType | F |
| Matrix F. More...
|
|
std::vector< MatrixType > | vec_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< VectorType > | eigVecOCC |
| Here we save eigenvectors corresponding to the occupied orbitals. More...
|
|
std::vector< VectorType > | eigVecUNOCC |
| Here we save eigenvectors corresponding to the unoccupied orbitals. More...
|
|
std::vector< real > | eigValOCC |
| Here we save eigenvalues corresponding to the occupied orbitals. More...
|
|
std::vector< real > | eigValUNOCC |
| 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...
|
|
template<typename MatrixType>
class Purification_sp2acc< MatrixType >
Purification_sp2acc is a class which provides an interface for SP2ACC recursive expansion.
- Template Parameters
-
MatrixType | Type of a matrix (ex. symmMatrix). |