ergo
matrix_utilities.h File Reference

Utilities related to the hierarchical matrix library (HML), including functions for setting up permutations of basis functions to increase data locality in the hierarchical matrix data structure. More...

#include "matrix_typedefs.h"
#include "basisinfo.h"

Go to the source code of this file.

Classes

struct  matrix_utilities_CompareClass< RandomAccessIterator >
 

Functions

mat::SizesAndBlocks prepareMatrixSizesAndBlocks (int n_basis_functions, int sparse_block_size, int factor1, int factor2, int factor3)
 
void getMatrixPermutation (const BasisInfoStruct &basisInfo, int sparse_block_size, int factor1, int factor2, int factor3, std::vector< int > &permutation)
 
void getMatrixPermutation (const BasisInfoStruct &basisInfo, int sparse_block_size, int factor1, int factor2, int factor3, std::vector< int > &permutation, std::vector< int > &inversePermutation)
 
void getMatrixPermutationOnlyFactor2 (const std::vector< ergo_real > &xcoords, const std::vector< ergo_real > &ycoords, const std::vector< ergo_real > &zcoords, int sparse_block_size_lowest, int first_factor, std::vector< int > &permutation, std::vector< int > &inversePermutation)
 
void getMatrixPermutationOnlyFactor2 (const BasisInfoStruct &basisInfo, int sparse_block_size_lowest, int first_factor, std::vector< int > &permutation, std::vector< int > &inversePermutation)
 
void fill_matrix_with_random_numbers (int n, symmMatrix &M)
 
void add_random_diag_perturbation (int n, symmMatrix &M, ergo_real eps)
 
bool check_if_matrix_contains_strange_elements (const symmMatrix &M, std::vector< int > const &inversePermutationHML)
 This function is supposed to check if a matrix contains any strange numbers such as "inf" or "nan". More...
 
void output_matrix (int n, const ergo_real *matrix, const char *matrixName)
 
template<class Tmatrix >
ergo_real compute_maxabs_sparse (const Tmatrix &M)
 
template<typename Tmatrix >
void get_all_nonzeros (Tmatrix const &A, std::vector< int > const &inversePermutation, std::vector< int > &rowind, std::vector< int > &colind, std::vector< ergo_real > &values)
 
template<typename Tmatrix >
void write_matrix_in_matrix_market_format (Tmatrix const &A, std::vector< int > const &inversePermutation, std::string filename, std::string identifier, std::string method_and_basis)
 

Detailed Description

Utilities related to the hierarchical matrix library (HML), including functions for setting up permutations of basis functions to increase data locality in the hierarchical matrix data structure.

Function Documentation

◆ add_random_diag_perturbation()

void add_random_diag_perturbation ( int  n,
symmMatrix M,
ergo_real  eps 
)

References rand_minus1_to_1().

◆ check_if_matrix_contains_strange_elements()

bool check_if_matrix_contains_strange_elements ( const symmMatrix M,
std::vector< int > const &  inversePermutationHML 
)

This function is supposed to check if a matrix contains any strange numbers such as "inf" or "nan".

The function returns true is any strange numbers are found, and false if the matrix seems ok.

Referenced by SCF_restricted::get_2e_part_and_energy().

◆ compute_maxabs_sparse()

◆ fill_matrix_with_random_numbers()

void fill_matrix_with_random_numbers ( int  n,
symmMatrix M 
)

◆ get_all_nonzeros()

template<typename Tmatrix >
void get_all_nonzeros ( Tmatrix const &  A,
std::vector< int > const &  inversePermutation,
std::vector< int > &  rowind,
std::vector< int > &  colind,
std::vector< ergo_real > &  values 
)

References A.

Referenced by write_matrix_in_matrix_market_format().

◆ getMatrixPermutation() [1/2]

void getMatrixPermutation ( const BasisInfoStruct basisInfo,
int  sparse_block_size,
int  factor1,
int  factor2,
int  factor3,
std::vector< int > &  permutation 
)

◆ getMatrixPermutation() [2/2]

void getMatrixPermutation ( const BasisInfoStruct basisInfo,
int  sparse_block_size,
int  factor1,
int  factor2,
int  factor3,
std::vector< int > &  permutation,
std::vector< int > &  inversePermutation 
)

◆ getMatrixPermutationOnlyFactor2() [1/2]

void getMatrixPermutationOnlyFactor2 ( const std::vector< ergo_real > &  xcoords,
const std::vector< ergo_real > &  ycoords,
const std::vector< ergo_real > &  zcoords,
int  sparse_block_size_lowest,
int  first_factor,
std::vector< int > &  permutation,
std::vector< int > &  inversePermutation 
)

◆ getMatrixPermutationOnlyFactor2() [2/2]

void getMatrixPermutationOnlyFactor2 ( const BasisInfoStruct basisInfo,
int  sparse_block_size_lowest,
int  first_factor,
std::vector< int > &  permutation,
std::vector< int > &  inversePermutation 
)

◆ output_matrix()

void output_matrix ( int  n,
const ergo_real matrix,
const char *  matrixName 
)

Referenced by dft_get_uxc(), and dft_get_xc().

◆ prepareMatrixSizesAndBlocks()

mat::SizesAndBlocks prepareMatrixSizesAndBlocks ( int  n_basis_functions,
int  sparse_block_size,
int  factor1,
int  factor2,
int  factor3 
)

◆ write_matrix_in_matrix_market_format()

template<typename Tmatrix >
void write_matrix_in_matrix_market_format ( Tmatrix const &  A,
std::vector< int > const &  inversePermutation,
std::string  filename,
std::string  identifier,
std::string  method_and_basis 
)