ergo
|
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 |
References A, cols, rows, template_blas_fabs(), and template_blas_sqrt().
Referenced by get_density_mat_by_diagonalization().
|
static |
References A, and mat::transpose().
Referenced by get_density_mat_by_purification().
|
static |
Referenced by get_all_matrix_elements_symm().
|
static |
References A, and get_all_matrix_elements_nosymm().
Referenced by get_density_mat_by_diagonalization().
|
static |
|
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 |
|
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 |
References DensMatInfo::lambda_homo, DensMatInfo::lambda_lumo, DensMatInfo::lambda_max, and DensMatInfo::lambda_min.
Referenced by main().
|
static |
|
static |
References mat::transpose().
Referenced by get_density_mat_by_purification().
|
static |
References get_density_mat_by_diagonalization().
Referenced by get_density_mat_by_purification().
|
static |
References Util::TimeMeter::get_start_time_wall_seconds(), and Util::TimeMeter::get_wall_seconds().
Referenced by main().
|
static |
References get_nnz_percentage().
Referenced by get_density_mat_by_purification().
|
static |
References DensMatInfo::lambda_homo, DensMatInfo::lambda_lumo, DensMatInfo::lambda_max, and DensMatInfo::lambda_min.
Referenced by main().
|
static |
References template_blas_sqrt().
Referenced by main().