Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
LinearQuadtreeExpansion.h
Go to the documentation of this file.
1
32#pragma once
33
35
36namespace ogdf {
37namespace fast_multipole_embedder {
38
40public:
43
46
49
52
55
58
60 void L2P(uint32_t source, uint32_t point, float& fx, float& fy);
61
63 uint32_t sizeInBytes() const { return m_numExp * m_numCoeff * (uint32_t)sizeof(double) * 4; }
64
66 inline double* multiExp() const { return m_multiExp; }
67
69 inline double* localExp() const { return m_localExp; }
70
72 inline uint32_t numCoeff() const { return m_numCoeff; }
73
75 const LinearQuadtree& tree() { return m_tree; }
76
77private:
79 void allocate();
80
82 void deallocate();
83
86
87public:
89 double* m_multiExp;
90
92 double* m_localExp;
93
94public:
97
100
102};
103
104}
105}
Declaration of class LinearQuadtree.
binomial coeffs from Hachuls FMMM
Definition FastUtils.h:281
uint32_t numCoeff() const
number of coefficients per expansions
const LinearQuadtree & m_tree
the Quadtree reference
double * multiExp() const
returns the array with multipole coefficients
void allocate()
allocates the space for the coeffs
uint32_t m_numCoeff
the number of coeff per expansions
void P2M(uint32_t point, uint32_t receiver)
adds a point with the given charge to the receiver expansion
LinearQuadtreeExpansion(uint32_t precision, const LinearQuadtree &tree)
constructor
void deallocate()
releases the memory for the coeffs
double * m_multiExp
the big multipole expansione coeff array
void M2L(uint32_t source, uint32_t receiver)
converts the source multipole coefficient in to a local coefficients at the center of the receiver an...
double * localExp() const
returns the array with local coefficients
void M2M(uint32_t source, uint32_t receiver)
shifts the source multipole coefficient to the center of the receiver and adds them
uint32_t sizeInBytes() const
returns the size in bytes
void L2P(uint32_t source, uint32_t point, float &fx, float &fy)
evaluates the derivate of the local expansion at the point and adds the forces to fx fy
double * m_localExp
the big local expansion coeff array
void L2L(uint32_t source, uint32_t receiver)
shifts the source local coefficient to the center of the receiver and adds them
uint32_t m_numExp
the number of multipole (locale) expansions
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.