Performs some simple tests of density matrix purification in orthogonal basis using artificialy generated input matrices. More...
#include <stdio.h>#include <unistd.h>#include <memory>#include <limits>#include "matrix_typedefs.h"#include "matrix_utilities.h"#include "utilities.h"Classes | |
| struct | DensMatInfo |
Functions | |
| static void | report_timing (Util::TimeMeter &tm, const char *s) |
| static void | get_Huckel_matrix_periodic (symmMatrix &F, int n, const std::vector< int > &perm) |
| static void | assign_from_full_matrix (symmMatrix &A, const ergo_real *A_full, int n, const std::vector< int > &perm) |
| static void | print_matrix (const symmMatrix &A, const char *A_name, int n, ergo_real scaleFactor=1.0) |
| static void | get_all_matrix_elements_nosymm (const normalMatrix &A, int n, std::vector< ergo_real > &result) |
| static void | get_all_matrix_elements_symm (const symmMatrix &A, int n, std::vector< ergo_real > &result) |
| static void | get_density_mat_by_diagonalization (const symmMatrix &F, symmMatrix &D, DensMatInfo &info, int n, int n_occ, const std::vector< int > &perm) |
| static void | print_DensMatInfo (const DensMatInfo &info) |
| static ergo_real | get_nnz_percentage (int n, const symmMatrix &X) |
| static void | update_nnz_percentages (int n, const symmMatrix &X, ergo_real &nnz_percentage_min, ergo_real &nnz_percentage_max) |
| static void | do_truncation (int n, symmMatrix &X, ergo_real truncation_threshold, const symmMatrix &D_in, bool use_alt_trunc, const std::vector< int > &perm) |
| static void | report_subspace_error (int currIterCount, int n, const symmMatrix &X, const symmMatrix &D) |
| static void | report_subspace_error_via_diagonalization (int currIterCount, int n, int n_occ, const symmMatrix &X, const symmMatrix &D_ref, const std::vector< int > &perm) |
| static void | get_density_mat_by_purification (const symmMatrix &F, symmMatrix &result_D, int n, int n_occ, const std::vector< int > &perm, const DensMatInfo &info, ergo_real truncation_threshold, const symmMatrix &D_ref, bool use_alt_trunc, bool verify_each_step) |
| static void | verify_idempotency (const symmMatrix &X) |
| static void | verify_gap (const DensMatInfo &info) |
| int | main (int argc, char *argv[]) |
Performs some simple tests of density matrix purification in orthogonal basis using artificialy generated input matrices.
Written by Elias in Nov 2016.
| static void assign_from_full_matrix | ( | symmMatrix & | A, | |
| const ergo_real * | A_full, | |||
| int | n, | |||
| const std::vector< int > & | perm | |||
| ) | [static] |
References cols, rows, template_blas_fabs(), and template_blas_sqrt().
Referenced by get_density_mat_by_diagonalization().
| static void do_truncation | ( | int | n, | |
| symmMatrix & | X, | |||
| ergo_real | truncation_threshold, | |||
| const symmMatrix & | D_in, | |||
| bool | use_alt_trunc, | |||
| const std::vector< int > & | perm | |||
| ) | [static] |
References mat::transpose().
Referenced by get_density_mat_by_purification().
| static void get_all_matrix_elements_nosymm | ( | const normalMatrix & | A, | |
| int | n, | |||
| std::vector< ergo_real > & | result | |||
| ) | [static] |
Referenced by get_all_matrix_elements_symm().
| static void get_all_matrix_elements_symm | ( | const symmMatrix & | A, | |
| int | n, | |||
| std::vector< ergo_real > & | result | |||
| ) | [static] |
References get_all_matrix_elements_nosymm().
Referenced by get_density_mat_by_diagonalization().
| static void get_density_mat_by_diagonalization | ( | const symmMatrix & | F, | |
| symmMatrix & | D, | |||
| DensMatInfo & | info, | |||
| int | n, | |||
| int | n_occ, | |||
| const std::vector< int > & | perm | |||
| ) | [static] |
| static void get_density_mat_by_purification | ( | const symmMatrix & | F, | |
| symmMatrix & | result_D, | |||
| int | n, | |||
| int | n_occ, | |||
| const std::vector< int > & | perm, | |||
| const DensMatInfo & | info, | |||
| ergo_real | truncation_threshold, | |||
| const symmMatrix & | D_ref, | |||
| bool | use_alt_trunc, | |||
| bool | verify_each_step | |||
| ) | [static] |
References do_truncation(), get_nnz_percentage(), Util::TimeMeter::get_start_time_wall_seconds(), Util::TimeMeter::get_wall_seconds(), DensMatInfo::lambda_max, DensMatInfo::lambda_min, report_subspace_error(), report_subspace_error_via_diagonalization(), mat::trace(), and update_nnz_percentages().
Referenced by main().
| static void get_Huckel_matrix_periodic | ( | symmMatrix & | F, | |
| int | n, | |||
| const std::vector< int > & | perm | |||
| ) | [static] |
| static ergo_real get_nnz_percentage | ( | int | n, | |
| const symmMatrix & | X | |||
| ) | [static] |
Referenced by get_density_mat_by_purification(), and update_nnz_percentages().
| int main | ( | int | argc, | |
| char * | argv[] | |||
| ) |
References get_density_mat_by_diagonalization(), get_density_mat_by_purification(), get_Huckel_matrix_periodic(), mat::Params::getMatrixParallelLevel(), mat::Params::getNProcs(), prepareMatrixSizesAndBlocks(), print_DensMatInfo(), print_matrix(), report_timing(), mat::Params::setMatrixParallelLevel(), mat::Params::setNProcs(), verify_gap(), and verify_idempotency().
| static void print_DensMatInfo | ( | const DensMatInfo & | info | ) | [static] |
References DensMatInfo::lambda_homo, DensMatInfo::lambda_lumo, DensMatInfo::lambda_max, and DensMatInfo::lambda_min.
Referenced by main().
| static void print_matrix | ( | const symmMatrix & | A, | |
| const char * | A_name, | |||
| int | n, | |||
| ergo_real | scaleFactor = 1.0 | |||
| ) | [static] |
| static void report_subspace_error | ( | int | currIterCount, | |
| int | n, | |||
| const symmMatrix & | X, | |||
| const symmMatrix & | D | |||
| ) | [static] |
References mat::transpose().
Referenced by get_density_mat_by_purification().
| static void report_subspace_error_via_diagonalization | ( | int | currIterCount, | |
| int | n, | |||
| int | n_occ, | |||
| const symmMatrix & | X, | |||
| const symmMatrix & | D_ref, | |||
| const std::vector< int > & | perm | |||
| ) | [static] |
References get_density_mat_by_diagonalization().
Referenced by get_density_mat_by_purification().
| static void report_timing | ( | Util::TimeMeter & | tm, | |
| const char * | s | |||
| ) | [static] |
References Util::TimeMeter::get_start_time_wall_seconds(), and Util::TimeMeter::get_wall_seconds().
Referenced by main().
| static void update_nnz_percentages | ( | int | n, | |
| const symmMatrix & | X, | |||
| ergo_real & | nnz_percentage_min, | |||
| ergo_real & | nnz_percentage_max | |||
| ) | [static] |
References get_nnz_percentage().
Referenced by get_density_mat_by_purification().
| static void verify_gap | ( | const DensMatInfo & | info | ) | [static] |
References DensMatInfo::lambda_homo, DensMatInfo::lambda_lumo, DensMatInfo::lambda_max, and DensMatInfo::lambda_min.
Referenced by main().
| static void verify_idempotency | ( | const symmMatrix & | X | ) | [static] |
References template_blas_sqrt().
Referenced by main().
1.6.1