ergo
simple_ort_puri_test.cc File Reference
#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[])
 

Detailed Description

Performs some simple tests of density matrix purification in orthogonal basis using artificialy generated input matrices. Written by Elias in Nov 2016.

Function Documentation

◆ assign_from_full_matrix()

static void assign_from_full_matrix ( symmMatrix A,
const ergo_real A_full,
int  n,
const std::vector< int > &  perm 
)
static

◆ do_truncation()

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 A, and mat::transpose().

Referenced by get_density_mat_by_purification().

◆ get_all_matrix_elements_nosymm()

static void get_all_matrix_elements_nosymm ( const normalMatrix A,
int  n,
std::vector< ergo_real > &  result 
)
static

References A, cols, and rows.

Referenced by get_all_matrix_elements_symm().

◆ get_all_matrix_elements_symm()

static void get_all_matrix_elements_symm ( const symmMatrix A,
int  n,
std::vector< ergo_real > &  result 
)
static

◆ 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

◆ get_density_mat_by_purification()

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

◆ get_Huckel_matrix_periodic()

static void get_Huckel_matrix_periodic ( symmMatrix F,
int  n,
const std::vector< int > &  perm 
)
static

References cols, and rows.

Referenced by main().

◆ get_nnz_percentage()

static ergo_real get_nnz_percentage ( int  n,
const symmMatrix X 
)
static

◆ main()

◆ print_DensMatInfo()

static void print_DensMatInfo ( const DensMatInfo info)
static

◆ print_matrix()

static void print_matrix ( const symmMatrix A,
const char *  A_name,
int  n,
ergo_real  scaleFactor = 1.0 
)
static

References A, cols, and rows.

Referenced by main().

◆ report_subspace_error()

static void report_subspace_error ( int  currIterCount,
int  n,
const symmMatrix X,
const symmMatrix D 
)
static

◆ report_subspace_error_via_diagonalization()

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

◆ report_timing()

static void report_timing ( Util::TimeMeter tm,
const char *  s 
)
static

◆ update_nnz_percentages()

static void update_nnz_percentages ( int  n,
const symmMatrix X,
ergo_real nnz_percentage_min,
ergo_real nnz_percentage_max 
)
static

◆ verify_gap()

static void verify_gap ( const DensMatInfo info)
static

◆ verify_idempotency()

static void verify_idempotency ( const symmMatrix X)
static

References template_blas_sqrt().

Referenced by main().