ergo
|
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) |
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.
#define MAX_NO_OF_GROUPS_PER_CLUSTER 10 |
#define NO_OF_SORT_BUCKETS 30 |
void copy_vector | ( | std::vector< T > & | dest, |
std::vector< T > & | src, | ||
int | count | ||
) |
|
static |
Referenced by organize_distributions().
|
static |
References minimal_distr_struct::basisFuncPairIndex, minimal_distr_struct::coeff, distr_group_struct::distrCount, i_j_val_struct::i, i_j_val_struct::j, IntegralInfo::monomial_info, minimal_distr_struct::monomialIndex, monomial_info_struct::no_of_monomials_list, spmat_multiply_matrices(), distr_group_struct::startIndex, and i_j_val_struct::value.
Referenced by 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().