ergo
organize_distrs.cc File Reference

Code for organizing a given set of primitive Gaussian distributions (typically coming from basis function products); the distributions are grouped according to their location in space, their exponents, etc. More...

#include <stdlib.h>
#include <memory.h>
#include <algorithm>
#include "organize_distrs.h"
#include "pi.h"
#include "serialization_tools.h"
#include <cstdio>

Macros

#define NO_OF_SORT_BUCKETS   30
 
#define MAX_NO_OF_GROUPS_PER_CLUSTER   10
 

Functions

static void do_sort_int_list (int *list, int n)
 
static void get_conversion_matrix_for_group (const IntegralInfo &integralInfo, const distr_group_struct &group, int n1max, const minimal_distr_struct *minimalDistrList_1, int noOfBasisFuncPairs_1, const i_j_val_struct *convMat1_sp, int convMat1_nnz, i_j_val_struct *BB1_x_Ai1_x_convMat1_sp_result, int &BB1_x_Ai1_x_convMat1_nnz_result)
 
template<typename T >
void copy_vector (std::vector< T > &dest, std::vector< T > &src, int count)
 
int organize_distributions (const IntegralInfo &integralInfo, DistributionSpecStructLabeled *distrList_in, int distrCount, distr_org_struct *result, const ergo_real *boxCenterCoords, ergo_real boxWidth)
 

Detailed Description

Code for organizing a given set of primitive Gaussian distributions (typically coming from basis function products); the distributions are grouped according to their location in space, their exponents, etc.

Author
: Elias Rudberg responsible

Macro Definition Documentation

◆ MAX_NO_OF_GROUPS_PER_CLUSTER

#define MAX_NO_OF_GROUPS_PER_CLUSTER   10

Referenced by organize_distributions().

◆ NO_OF_SORT_BUCKETS

#define NO_OF_SORT_BUCKETS   30

Referenced by organize_distributions().

Function Documentation

◆ copy_vector()

template<typename T >
void copy_vector ( std::vector< T > &  dest,
std::vector< T > &  src,
int  count 
)

◆ do_sort_int_list()

static void do_sort_int_list ( int *  list,
int  n 
)
static

Referenced by organize_distributions().

◆ get_conversion_matrix_for_group()

static void get_conversion_matrix_for_group ( const IntegralInfo integralInfo,
const distr_group_struct group,
int  n1max,
const minimal_distr_struct minimalDistrList_1,
int  noOfBasisFuncPairs_1,
const i_j_val_struct convMat1_sp,
int  convMat1_nnz,
i_j_val_struct BB1_x_Ai1_x_convMat1_sp_result,
int &  BB1_x_Ai1_x_convMat1_nnz_result 
)
static

◆ organize_distributions()

int organize_distributions ( const IntegralInfo integralInfo,
DistributionSpecStructLabeled distrList_in,
int  distrCount,
distr_org_struct result,
const ergo_real boxCenterCoords,
ergo_real  boxWidth 
)

References A, distr_org_struct::basisFuncList, distr_org_struct::basisFuncListForBatchs, distr_org_struct::basisFuncListForBatchs_map, distr_org_struct::basisFuncPairList, batch_struct::basisFuncPairListIndex, distr_org_struct::batchList, DistributionSpecStruct::centerCoords, distr_group_struct::centerCoords, distr_org_struct::clusterList, batch_struct::clusterStartIndex, DistributionSpecStruct::coeff, minimal_distr_struct::coeff, compute_multipole_moments(), distr_org_struct::data, multipole_struct_small::degree, DistributionSpecStructLabeled::distr, distr_group_struct::distrCount, do_output(), do_sort_int_list(), DistributionSpecStruct::exponent, distr_group_struct::exponent, get_conversion_matrix_for_group(), IntegralInfo::get_hermite_conversion_matrix_right_sparse(), distr_org_struct::groupList, monomial_struct::ix, monomial_struct::iy, monomial_struct::iz, LOG_AREA_INTEGRALS, LOG_CAT_ERROR, MAX_MULTIPOLE_DEGREE_BASIC, MAX_NO_OF_BASIS_FUNC_PAIRS_PER_BATCH, MAX_NO_OF_GROUPS_PER_CLUSTER, distr_org_struct::Data::maxDistanceOutsideBox, distr_org_struct::Data::maxExtent, distr_org_struct::Data::maxNoOfMonomials, distr_org_struct::minimalDistrList, multipole_struct_small::momentList, monomial_info_struct::monomial_index_list, IntegralInfo::monomial_info, monomial_info_struct::monomial_list, DistributionSpecStruct::monomialInts, distr_group_struct::multipoleEuclNormListForK, monomial_info_struct::no_of_monomials_list, NO_OF_SORT_BUCKETS, batch_struct::noOfBasisFuncPairs, batch_struct::noOfClusters, pi, spmat_sort_elements(), distr_org_struct::spMatCountList, distr_org_struct::spMatElementList, distr_org_struct::spMatIdxList, distr_group_struct::startIndex, template_blas_fabs(), template_blas_pow(), and template_blas_sqrt().

Referenced by compute_J_by_boxes_linear(), compute_JK_single_box(), and compute_K_by_boxes().