ergo
|
Code for computing multipole moments, and multipole interaction and translation matrices. More...
#include <memory.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "multipole.h"
#include "output.h"
#include "integrals_general.h"
Classes | |
struct | l_m_struct |
Functions | |
static ergo_real | slow_factorial (int n) |
static ergo_real | get_lm_factor_slow (int l, int m) |
static ergo_real | get_lm_factor (int l, int m) |
static void | get_l_m_from_index (int index, int *result_l, int *result_m) |
int | init_multipole_code () |
int | compute_multipole_moments (const IntegralInfo &integralInfo, const DistributionSpecStruct *distr, multipole_struct_small *result) |
int | setup_multipole_maxAbsMomentList (multipole_struct_large *multipole) |
Variables | |
static int | global_initialized_flag = 0 |
static ergo_real | global_lm_factor_list [MAX_MULTIPOLE_DEGREE+1][MAX_MULTIPOLE_DEGREE+1] |
static l_m_struct | global_l_m_list [MAX_NO_OF_MOMENTS_PER_MULTIPOLE] |
Code for computing multipole moments, and multipole interaction and translation matrices.
int compute_multipole_moments | ( | const IntegralInfo & | integralInfo, |
const DistributionSpecStruct * | distr, | ||
multipole_struct_small * | result | ||
) |
References DistributionSpecStruct_::monomialInts, multipole_struct_small::noOfMoments, MAX_NO_OF_MOMENTS_PER_MULTIPOLE_BASIC, IntegralInfo::no_of_basis_func_polys, IntegralInfo::basis_func_poly_list, basis_func_poly_struct::noOfTerms, basis_func_poly_struct::termList, basis_func_term_struct::monomialInts, DistributionSpecStruct_::coeff, basis_func_term_struct::coeff, compute_integral_of_simple_prim(), multipole_struct_small::momentList, basis_func_poly_struct::scaledSolidHarmonicPrefactor, do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, MAX_MULTIPOLE_DEGREE_BASIC, multipole_struct_small::degree, multipole_struct_small::centerCoords, and DistributionSpecStruct_::centerCoords.
Referenced by compute_V_linear(), execute_joblist_J_fmm_shared(), compute_J_by_boxes_linear(), and compute_K_by_boxes().
static void get_l_m_from_index | ( | int | index, |
int * | result_l, | ||
int * | result_m | ||
) | [static] |
Referenced by init_multipole_code().
static ergo_real get_lm_factor | ( | int | l, |
int | m | ||
) | [static] |
References global_lm_factor_list.
Referenced by MMTranslator::getTranslationMatrix(), and MMInteractor::getInteractionMatrix().
static ergo_real get_lm_factor_slow | ( | int | l, |
int | m | ||
) | [static] |
References slow_factorial().
Referenced by init_multipole_code().
int init_multipole_code | ( | ) |
References global_initialized_flag, MAX_MULTIPOLE_DEGREE, global_lm_factor_list, get_lm_factor_slow(), A, MAX_NO_OF_MOMENTS_PER_MULTIPOLE, and get_l_m_from_index().
Referenced by compute_V_linear(), compute_J_by_boxes_linear(), and MMLimitTable::init().
int setup_multipole_maxAbsMomentList | ( | multipole_struct_large * | multipole | ) |
static ergo_real slow_factorial | ( | int | n | ) | [static] |
Referenced by get_lm_factor_slow().
int global_initialized_flag = 0 [static] |
Referenced by init_multipole_code(), MMTranslator::MMTranslator(), and MMInteractor::MMInteractor().
l_m_struct global_l_m_list[MAX_NO_OF_MOMENTS_PER_MULTIPOLE] [static] |
ergo_real global_lm_factor_list[MAX_MULTIPOLE_DEGREE+1][MAX_MULTIPOLE_DEGREE+1] [static] |
Referenced by get_lm_factor(), and init_multipole_code().