ergo
matrix_utilities.cc File Reference
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include "matrix_utilities.h"
#include "output.h"

Classes

struct  CompareClass< RandomAccessIterator >
 

Functions

mat::SizesAndBlocks prepareMatrixSizesAndBlocks (int n_basis_functions, int sparse_block_size, int factor1, int factor2, int factor3)
 
template<typename Treal , typename TIndexIterator >
void sortCoord (std::vector< Treal > const &xpos, std::vector< Treal > const &ypos, std::vector< Treal > const &zpos, TIndexIterator first, TIndexIterator last) throw (std::exception)
 
template<typename Treal >
void permuteAndRecurse (std::vector< Treal > const &xpos, std::vector< Treal > const &ypos, std::vector< Treal > const &zpos, std::vector< int > &index, int const first, int const last, std::vector< int > const &blockSizes, int bSizeIndex)
 
template<typename Treal >
void getPermutation (std::vector< Treal > const &xpos, std::vector< Treal > const &ypos, std::vector< Treal > const &zpos, std::vector< int > &permutation, std::vector< int > const &blockSizes)
 
void getMatrixPermutation (const BasisInfoStruct &basisInfo, int sparse_block_size, int factor1, int factor2, int factor3, std::vector< int > &permutation, std::vector< int > &inversePermutation)
 
void getMatrixPermutation (const BasisInfoStruct &basisInfo, int sparse_block_size, int factor1, int factor2, int factor3, std::vector< int > &permutation)
 
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_in, 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)
 
static ergo_real rand_minus1_to_1 ()
 
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)
 

Function Documentation

◆ add_random_diag_perturbation()

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

◆ 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.

References mat::MatrixSymmetric< Treal, Tmatrix >::get_all_values(), and max.

Referenced by SCF_restricted::get_2e_part_and_energy().

◆ fill_matrix_with_random_numbers()

void fill_matrix_with_random_numbers ( int  n,
symmMatrix M 
)

◆ getMatrixPermutation() [1/2]

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

◆ getMatrixPermutation() [2/2]

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

◆ 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_in,
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 
)

◆ getPermutation()

template<typename Treal >
void getPermutation ( std::vector< Treal > const &  xpos,
std::vector< Treal > const &  ypos,
std::vector< Treal > const &  zpos,
std::vector< int > &  permutation,
std::vector< int > const &  blockSizes 
)

◆ output_matrix()

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

Referenced by dft_get_uxc(), and dft_get_xc().

◆ permuteAndRecurse()

template<typename Treal >
void permuteAndRecurse ( std::vector< Treal > const &  xpos,
std::vector< Treal > const &  ypos,
std::vector< Treal > const &  zpos,
std::vector< int > &  index,
int const  first,
int const  last,
std::vector< int > const &  blockSizes,
int  bSizeIndex 
)

◆ prepareMatrixSizesAndBlocks()

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

◆ rand_minus1_to_1()

static ergo_real rand_minus1_to_1 ( )
static

◆ sortCoord()

template<typename Treal , typename TIndexIterator >
void sortCoord ( std::vector< Treal > const &  xpos,
std::vector< Treal > const &  ypos,
std::vector< Treal > const &  zpos,
TIndexIterator  first,
TIndexIterator  last 
)
throw (std::exception
)