ergo
integral_matrix_wrappers.cc File Reference

Wrapper routines for different parts of the integral code, including conversion of matrices from/to the hierarchical matrix library (HML) format. More...

#include <string.h>
#include "integral_matrix_wrappers.h"
#include "output.h"
#include "basis_func_pair_list_1el.h"
#include "integrals_1el_kinetic.h"
#include "integrals_1el_potential.h"
#include "operator_matrix.h"
#include "basis_func_pair_list.h"
#include "integrals_2el_boxed.h"
#include "integrals_2el_J.h"
#include "integrals_2el_K.h"
#include "integrals_2el_K_prep.h"
#include "utilities.h"
#include "memorymanag.h"

Typedefs

typedef int * int_ptr
 
typedef ergo_realergo_real_ptr
 

Functions

static ergo_real get_max_charge (const Molecule &molecule)
 
static void convert_symm_CSR_to_HML_and_destroy_CSR (csr_matrix_struct &M_CSR, symmMatrix &M_HML, std::vector< int > const &permutationHML)
 
int compute_V_sparse (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, symmMatrix &V, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
 
int compute_V_sparse_hierarchical (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, symmMatrix &V, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
 
int compute_gradient_of_nucl_and_trDV (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, ergo_real *result_gradient_list)
 
ergo_real get_electron_nuclear_attraction_energy (const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, const symmMatrix &D, ergo_real threshold_integrals_1el, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML)
 
int compute_T_sparse_linear (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real threshold, ergo_real boxSize, symmMatrix &T, std::vector< int > const &permutationHML)
 
static int check_diagonal_elements_of_overlap_matrix (int n, const symmMatrix &S_symm)
 
int compute_overlap_matrix_sparse (const BasisInfoStruct &basisInfo, symmMatrix &S_symm, std::vector< int > const &permutationHML)
 
int compute_R_matrix_sparse (const BasisInfoStruct &basisInfo_A, const BasisInfoStruct &basisInfo_B, normalMatrix &result_R, ergo_real sparse_threshold, std::vector< int > const &matrixPermutationVec_A, std::vector< int > const &matrixPermutationVec_B)
 compute_R_matrix_sparse computes the overlap matrix between two different basis sets.
 
int compute_operator_matrix_sparse_symm (const BasisInfoStruct &basisInfo, int pow_x, int pow_y, int pow_z, symmMatrix &A_symm, std::vector< int > const &permutationHML)
 
int compute_J_by_boxes_sparse (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::Params &J_K_params, symmMatrix &J, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML)
 
static int get_CSR_from_symmMatrix (int n, const symmMatrix &A, std::vector< int > const &inversePermutationHML, csr_matrix_struct &CSR)
 
static int get_CSR_from_normalMatrix (int n, const normalMatrix &A, std::vector< int > const &inversePermutationHML, csr_matrix_struct &CSR)
 
int compute_K_by_boxes_sparse (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, symmMatrix &K, symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML)
 Returns the exchange matrix multiplied by 0.5.
 
int compute_K_by_boxes_sparse_nosymm (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, normalMatrix &K, normalMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML)
 

Detailed Description

Wrapper routines for different parts of the integral code, including conversion of matrices from/to the hierarchical matrix library (HML) format.

Author
: Elias Rudberg responsible

Typedef Documentation

◆ ergo_real_ptr

◆ int_ptr

typedef int* int_ptr

Function Documentation

◆ check_diagonal_elements_of_overlap_matrix()

static int check_diagonal_elements_of_overlap_matrix ( int n,
const symmMatrix & S_symm )
static

◆ compute_gradient_of_nucl_and_trDV()

int compute_gradient_of_nucl_and_trDV ( const BasisInfoStruct & basisInfo,
const IntegralInfo & integralInfo,
const Molecule & molecule,
ergo_real threshold,
ergo_real boxSize,
const symmMatrix & densityMatrix_sparse,
std::vector< int > const & permutationHML,
ergo_real * result_gradient_list )

◆ compute_J_by_boxes_sparse()

◆ compute_K_by_boxes_sparse()

◆ compute_K_by_boxes_sparse_nosymm()

int compute_K_by_boxes_sparse_nosymm ( const BasisInfoStruct & basisInfo,
const IntegralInfo & integralInfo,
const JK::ExchWeights & CAM_params,
const JK::Params & J_K_params,
normalMatrix & K,
normalMatrix & densityMatrix_sparse,
std::vector< int > const & permutationHML,
std::vector< int > const & inversePermutationHML )

◆ compute_operator_matrix_sparse_symm()

int compute_operator_matrix_sparse_symm ( const BasisInfoStruct & basisInfo,
int pow_x,
int pow_y,
int pow_z,
symmMatrix & A_symm,
std::vector< int > const & permutationHML )

◆ compute_overlap_matrix_sparse()

int compute_overlap_matrix_sparse ( const BasisInfoStruct & basisInfo,
symmMatrix & S_symm,
std::vector< int > const & permutationHML )

◆ compute_R_matrix_sparse()

int compute_R_matrix_sparse ( const BasisInfoStruct & basisInfo_A,
const BasisInfoStruct & basisInfo_B,
normalMatrix & result_R,
ergo_real sparse_threshold,
std::vector< int > const & matrixPermutationVec_A,
std::vector< int > const & matrixPermutationVec_B )

compute_R_matrix_sparse computes the overlap matrix between two different basis sets.

References compute_operator_matrix_sparse(), do_output(), LOG_AREA_UNDEFINED, LOG_CAT_ERROR, and BasisInfoStruct::noOfBasisFuncs.

Referenced by load_density_and_project_sparse().

◆ compute_T_sparse_linear()

int compute_T_sparse_linear ( const BasisInfoStruct & basisInfo,
const IntegralInfo & integralInfo,
ergo_real threshold,
ergo_real boxSize,
symmMatrix & T,
std::vector< int > const & permutationHML )

◆ compute_V_sparse()

◆ compute_V_sparse_hierarchical()

int compute_V_sparse_hierarchical ( const BasisInfoStruct & basisInfo,
const IntegralInfo & integralInfo,
const Molecule & molecule,
ergo_real threshold,
ergo_real boxSize,
symmMatrix & V,
std::vector< int > const & permutationHML,
ergo_real & result_nuclearRepulsionEnergy )

◆ convert_symm_CSR_to_HML_and_destroy_CSR()

static void convert_symm_CSR_to_HML_and_destroy_CSR ( csr_matrix_struct & M_CSR,
symmMatrix & M_HML,
std::vector< int > const & permutationHML )
static

◆ get_CSR_from_normalMatrix()

static int get_CSR_from_normalMatrix ( int n,
const normalMatrix & A,
std::vector< int > const & inversePermutationHML,
csr_matrix_struct & CSR )
static

◆ get_CSR_from_symmMatrix()

static int get_CSR_from_symmMatrix ( int n,
const symmMatrix & A,
std::vector< int > const & inversePermutationHML,
csr_matrix_struct & CSR )
static

◆ get_electron_nuclear_attraction_energy()

ergo_real get_electron_nuclear_attraction_energy ( const IntegralInfo & integralInfo,
const Molecule & molecule,
const BasisInfoStruct & basisInfo,
const symmMatrix & D,
ergo_real threshold_integrals_1el,
mat::SizesAndBlocks const & matrix_size_block_info,
std::vector< int > const & permutationHML )

◆ get_max_charge()