|
| | Purification_sp2 () |
| void | set_init_params () |
| void | get_poly (const int it, int &poly) |
| void | set_poly (const int it) |
| void | estimate_number_of_iterations (int &numit) |
| void | purify_X (const int it) |
| void | purify_bounds (const int it) |
| void | save_other_iter_info (IterationInfo &iter_info, int it) |
| void | apply_inverse_poly_vector (const int it, VectorTypeReal &bounds_from_it) |
| void | return_constant_C (const int it, real &Cval) |
| real | apply_poly (const int it, real x) |
| 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.
|
| virtual void | PurificationStart () |
| | Start recursive expansion.
|
| virtual void | clear () |
| | Clear all matrices in the class.
|
| void | set_spectrum_bounds (real eigmin, real eigmax) |
| | Set spectrum bounds.
|
| void | get_spectrum_bounds (real &eigmin, real &eigmax) |
| | Get spectrum bounds.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| virtual | ~PurificationGeneral () |
| | Create MATLAB .m file which plots a condition number of a problem of computing the density matrix in each recursive expansion iteration.
|
|
| static real | get_epsilon () |
| | Get machine epsilon.
|
| static real | get_max_double () |
| | Get largest number.
|
| static real | get_min_double () |
| | Get smallest number.
|
| PuriInfo | info |
| | Fill in during purification with useful information.
|
| MatrixType | X |
| | Matrix X.
|
| MatrixType | Xsq |
| | Matrix X^2.
|
| virtual bool | is_initialized () const |
| | Check is function initialize() is already called.
|
| virtual bool | puri_is_prepared () const |
| | Check is function prepare_to_purification() is already called.
|
| virtual void | prepare_to_purification () |
| | Prepare data for recursive expansion.
|
| virtual void | prepare_to_purification_eigenvectors () |
| | Prepare data related to the eigenvectors computations.
|
| virtual void | purification_process () |
| | Run recursive expansion.
|
| virtual void | eigenvalue_bounds_estimation () |
| | Estimate eigenvalues near homo-lumo gap.
|
| void | save_matrix_now (string str) |
| void | save_matrix_A_now (const MatrixType &A, string str) |
| virtual void | compute_spectrum_bounds () |
| | Compute spectrum bounds.
|
| virtual void | compute_X () |
| | Get matrix X0 by mapping spectrum of F into [0,1] in reverse order.
|
| void | map_bounds_to_0_1 () |
| | Get eigenvalue bounds for X0.
|
| virtual void | check_standard_stopping_criterion (const real XmX2_norm, int &stop) |
| | Check stopping criterion (obsolete).
|
| 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.
|
| virtual void | stopping_criterion (IterationInfo &iter_info, int &stop, real &estim_order) |
| | Choose stopping criterion and check it.
|
| 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.
|
| 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.
|
| double | get_nnz_X (size_t &nnzX) |
| | Get nnz of X in %.
|
| double | get_nnz_X () |
| | Get nnz of X in %.
|
| double | get_nnz_Xsq (size_t &nnzXsq) |
| | Get nnz of X^2 in %.
|
| double | get_nnz_Xsq () |
| | Get nnz of X^2 in %.
|
| 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.
|
| 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.
|
| virtual void | determine_iteration_for_eigenvectors () |
| | Determine in which iterations will be computed homo and lumo eigenvectors.
|
| virtual void | get_iterations_for_lumo_and_homo (int &chosen_iter_lumo, int &chosen_iter_homo) |
| | Find the best iterations for computing eigenvectors.
|
| 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.
|
| void | writeToTmpFile (MatrixType &A) const |
| void | readFromTmpFile (MatrixType &A) const |
| 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 |
| MatrixType | F |
| | Matrix F.
|
| std::vector< MatrixType > | vec_matrices_Xi |
| | Save matrices Xi in each iteration (if used projection method for computing eigenvectors).
|
| bool | initialized_flag |
| bool | puri_is_prepared_flag |
| bool | use_new_stopping_criterion |
| | True for new stopping criterion.
|
| int | additional_iterations |
| | Do a few more iterations after convergence.
|
| int | maxit |
| | Maximum number of iterations.
|
| int | check_stopping_criterion_iter |
| | Iteration when to start to check stopping criterion.
|
| int | nocc |
| | Number of occupied orbitals.
|
| NormType | normPuriTrunc |
| | Norm used for the truncation of matrices.
|
| NormType | normPuriStopCrit |
| | Norm used in the stopping criterion Can be mat::frobNorm, mat::mixedNorm, or mat::euclNorm.
|
| real | error_sub |
| | Allowed error in invariant subspaces.
|
| real | error_eig |
| | Error in eigenvalues (used just in old stopping criterion).
|
| real | error_per_it |
| | Error allowed in each iteration due to truncation.
|
| real | constant_C |
| | Asymptotic constant C needed for the new stopping criterion.
|
| real | gammaStopEstim |
| | Used on the stopping criterion for estimation of eigenvalues from purification.
|
| 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)
|
| VectorTypeReal | VecGap |
| | Gap computed using inner homo and lumo bounds on each iteration.
|
| VectorTypeReal | ITER_ERROR_VEC |
| | (Eigenvectors) Maximum error introduced in each iteration.
|
| VectorTypeReal | SIGMA_HOMO_VEC |
| VectorTypeReal | SIGMA_LUMO_VEC |
| | (Eigenvectors) Approximation of shifts in each iteration.
|
| VectorTypeReal | EIG_ABS_GAP_LUMO_VEC |
| VectorTypeReal | EIG_ABS_GAP_HOMO_VEC |
| | (Eigenvectors) Absolute and relative gap in filter for lumo eigenvalue.
|
| VectorTypeReal | EIG_REL_GAP_LUMO_VEC |
| VectorTypeReal | EIG_REL_GAP_HOMO_VEC |
| | (Eigenvectors) Absolute and relative gap in filter for homo eigenvalue.
|
| 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
|
| IntervalType | lumo_bounds |
| | Lumo bounds for Xi in iteration i.
|
| IntervalType | homo_bounds_X0 |
| | Initial lumo bounds for X.
|
| IntervalType | lumo_bounds_X0 |
| | Initial lumo bounds for X.
|
| IntervalType | homo_bounds_F |
| | Initial lumo bounds for F.
|
| IntervalType | lumo_bounds_F |
| | Initial homo bounds for F.
|
| IntervalType | homo_bounds_F_new |
| IntervalType | lumo_bounds_F_new |
| IntervalType | spectrum_bounds |
| | Outer bounds for the whole spectrum of F/Xi.
|
| bool | computed_spectrum_bounds |
| int | eigenvectors_method |
| | Chosen method for computing eigenvectors.
|
| int | eigenvectors_iterative_method |
| | Chosen eigensolver.
|
| real | eigensolver_accuracy |
| | Accuracy of the eigenvalue problem solver.
|
| int | eigensolver_maxiter |
| | Maximum number of iterations for eigensolver.
|
| 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.
|
| std::vector< VectorType > | eigVecUNOCC |
| | Here we save eigenvectors corresponding to the unoccupied orbitals.
|
| std::vector< real > | eigValOCC |
| | Here we save eigenvalues corresponding to the occupied orbitals.
|
| std::vector< real > | eigValUNOCC |
| | Here we save eigenvalues corresponding to the unoccupied orbitals.
|
| real | eigValLUMO |
| real | eigValHOMO |
| int | iter_for_homo |
| int | iter_for_lumo |
| VectorTypeInt | good_iterations_homo |
| | Iterations where homo eigenvector can be computed.
|
| VectorTypeInt | good_iterations_lumo |
| | Iterations where homo eigenvector can be computed.
|
| VectorTypeInt | really_good_iterations_homo |
| | Iterations where homo eigenvector is actually computed.
|
| VectorTypeInt | really_good_iterations_lumo |
| | Iterations where lumo eigenvector is actually computed.
|
| int | scf_step |
| bool | compute_eigenvectors_in_each_iteration |
| | Compute homo and lumo eigenpairs in every iteration and save eigenvectors in txt files.
|
template<typename
MatrixType>
class Purification_sp2< MatrixType >
Purification_sp2acc is a class which provides an interface for SP2 recursive expansion.
- Template Parameters
-