Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

FastMultipoleEmbedder.h
Go to the documentation of this file.
1 
32 #pragma once
33 
34 #include <ogdf/basic/Graph.h>
39 
40 namespace ogdf {
41 
43 
52 
53 public:
56 
59 
61  void call(const Graph& G, NodeArray<float>& nodeXPosition, NodeArray<float>& nodeYPosition,
62  const EdgeArray<float>& edgeLength, const NodeArray<float>& nodeSize);
63 
65  void call(GraphAttributes& GA, const EdgeArray<float>& edgeLength,
66  const NodeArray<float>& nodeSize);
67 
69  virtual void call(GraphAttributes& GA) override;
70 
72  void setNumIterations(uint32_t numIterations) { m_numIterations = numIterations; }
73 
75  void setMultipolePrec(uint32_t precision) { m_precisionParameter = precision; }
76 
78  void setRandomize(bool b) { m_randomize = b; }
79 
81  void setDefaultEdgeLength(float edgeLength) { m_defaultEdgeLength = edgeLength; }
82 
84  void setDefaultNodeSize(float nodeSize) { m_defaultNodeSize = nodeSize; }
85 
87  void setNumberOfThreads(uint32_t numThreads) {
88 #ifndef OGDF_MEMORY_POOL_NTS
89  m_maxNumberOfThreads = numThreads;
90 #endif
91  }
92 
93 #if 0
94  void setEnablePostProcessing(bool b) { m_doPostProcessing = b; }
95 #endif
96 
97 private:
98  void initOptions();
99 
100  void runMultipole();
101 
102  void runSingle();
103 
105  void run(uint32_t numIterations);
106 
108  void allocate(uint32_t numNodes, uint32_t numEdges);
109 
111  void deallocate();
112 
113  uint32_t m_numIterations;
114 
116 
118 
120 
122 
124 
126 
128 
130 
132 };
133 
135 
141 
142 public:
145  : m_iMaxNumThreads(1), m_iNumLevels(0), m_multiLevelNumNodesBound(10), m_iCurrentLevelNr(-1) { }
146 
148  void call(GraphAttributes& GA) override;
149 
151  void multilevelUntilNumNodesAreLess(int nodesBound) { m_multiLevelNumNodesBound = nodesBound; }
152 
153  void maxNumThreads(int numThreads) { m_iMaxNumThreads = numThreads; }
154 
155 private:
157  void computeAutoEdgeLength(const GraphAttributes& GA, EdgeArray<float>& edgeLength,
158  float factor = 1.0f);
159 
161  void run(GraphAttributes& GA, const EdgeArray<float>& edgeLength);
162 
164  void createMultiLevelGraphs(Graph* pGraph, GraphAttributes& GA,
165  const EdgeArray<float>& edgeLength);
166 
168  void initFinestLevel(GraphAttributes& GA, const EdgeArray<float>& edgeLength);
169 
171  void layoutCurrentLevel();
172 
174  void assignPositionsFromPrevLevel();
175 
177  void writeCurrentToGraphAttributes(GraphAttributes& GA);
178 
180  void nextLevel();
181 
183  void initCurrentLevel();
184 
186  void deleteMultiLevelGraphs();
187 
189  void dumpCurrentLevel(const char* filename);
190 
192  uint32_t numberOfIterationsByLevelNr(uint32_t levelNr);
193 
197 
198  GalaxyMultilevel* m_pCurrentLevel = nullptr;
199  GalaxyMultilevel* m_pFinestLevel = nullptr;
200  GalaxyMultilevel* m_pCoarsestLevel = nullptr;
201 
202  Graph* m_pCurrentGraph = nullptr;
203  NodeArray<float>* m_pCurrentNodeXPos = nullptr;
204  NodeArray<float>* m_pCurrentNodeYPos = nullptr;
205  EdgeArray<float>* m_pCurrentEdgeLength = nullptr;
206  NodeArray<float>* m_pCurrentNodeSize = nullptr;
209 
210  NodeArray<float>* m_pLastNodeXPos = nullptr;
211  NodeArray<float>* m_pLastNodeYPos = nullptr;
212 };
213 
214 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::GraphAttributes
Stores additional attributes of a graph (like layout information).
Definition: GraphAttributes.h:66
ogdf::FastMultipoleMultilevelEmbedder::m_iCurrentLevelNr
int m_iCurrentLevelNr
Definition: FastMultipoleEmbedder.h:208
GalaxyMultilevel.h
Declaration of class GalaxyMultilevelBuilder.
Graph.h
Includes declaration of graph class.
ogdf::fast_multipole_embedder::ArrayGraph
Definition: ArrayGraph.h:40
ogdf::FastMultipoleMultilevelEmbedder::m_multiLevelNumNodesBound
int m_multiLevelNumNodesBound
Definition: FastMultipoleEmbedder.h:196
ogdf::FastMultipoleMultilevelEmbedder
The fast multipole multilevel embedder approach for force-directed multilevel layout.
Definition: FastMultipoleEmbedder.h:138
ogdf::FastMultipoleEmbedder::setRandomize
void setRandomize(bool b)
if true, layout algorithm will randomize the layout in the beginning
Definition: FastMultipoleEmbedder.h:78
ogdf::FastMultipoleEmbedder
The fast multipole embedder approach for force-directed layout.
Definition: FastMultipoleEmbedder.h:46
ogdf::FastMultipoleEmbedder::m_maxNumberOfThreads
uint32_t m_maxNumberOfThreads
Definition: FastMultipoleEmbedder.h:131
ogdf::FastMultipoleEmbedder::m_numberOfThreads
uint32_t m_numberOfThreads
Definition: FastMultipoleEmbedder.h:129
ogdf::FastMultipoleEmbedder::setDefaultEdgeLength
void setDefaultEdgeLength(float edgeLength)
Definition: FastMultipoleEmbedder.h:81
ogdf::FastMultipoleEmbedder::m_threadPool
FMEThreadPool * m_threadPool
Definition: FastMultipoleEmbedder.h:117
LayoutModule.h
Declaration of interface for layout algorithms (class LayoutModule)
ogdf::fast_multipole_embedder::FMESingleKernel
Definition: FMEKernel.h:241
ogdf::fast_multipole_embedder::FMEThreadPool
Definition: FMEThread.h:127
ogdf::FastMultipoleEmbedder::m_pGraph
ArrayGraph * m_pGraph
Definition: FastMultipoleEmbedder.h:115
ogdf::FastMultipoleMultilevelEmbedder::multilevelUntilNumNodesAreLess
void multilevelUntilNumNodesAreLess(int nodesBound)
sets the bound for the number of nodes for multilevel step
Definition: FastMultipoleEmbedder.h:151
FMEFunc.h
Definitions of various auxiliary classes for FME layout.
ogdf::fast_multipole_embedder::GalaxyMultilevel
Definition: GalaxyMultilevel.h:43
ogdf::fast_multipole_embedder::FMEGlobalOptions
the main global options for a run
Definition: FMEFunc.h:66
ogdf::fast_multipole_embedder::FMEGlobalContext
Global Context.
Definition: FMEFunc.h:94
ogdf::FastMultipoleMultilevelEmbedder::m_iNumLevels
int m_iNumLevels
Definition: FastMultipoleEmbedder.h:195
ogdf::FastMultipoleEmbedder::setNumberOfThreads
void setNumberOfThreads(uint32_t numThreads)
Definition: FastMultipoleEmbedder.h:87
ogdf::FastMultipoleMultilevelEmbedder::maxNumThreads
void maxNumThreads(int numThreads)
Definition: FastMultipoleEmbedder.h:153
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::FastMultipoleEmbedder::setMultipolePrec
void setMultipolePrec(uint32_t precision)
sets the number of coefficients for the expansions. default = 4
Definition: FastMultipoleEmbedder.h:75
ogdf::FastMultipoleEmbedder::m_precisionParameter
uint32_t m_precisionParameter
Definition: FastMultipoleEmbedder.h:121
ogdf::FastMultipoleEmbedder::m_numIterations
uint32_t m_numIterations
Definition: FastMultipoleEmbedder.h:113
ogdf::FastMultipoleEmbedder::m_pOptions
FMEGlobalOptions * m_pOptions
Definition: FastMultipoleEmbedder.h:119
ogdf::FastMultipoleMultilevelEmbedder::m_adjustedNodeSize
NodeArray< float > m_adjustedNodeSize
Definition: FastMultipoleEmbedder.h:207
ogdf::FastMultipoleMultilevelEmbedder::FastMultipoleMultilevelEmbedder
FastMultipoleMultilevelEmbedder()
Constructor, just sets number of maximum threads.
Definition: FastMultipoleEmbedder.h:144
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::FastMultipoleEmbedder::m_randomize
bool m_randomize
Definition: FastMultipoleEmbedder.h:123
ogdf::FastMultipoleEmbedder::setNumIterations
void setNumIterations(uint32_t numIterations)
sets the maximum number of iterations
Definition: FastMultipoleEmbedder.h:72
ogdf::FastMultipoleEmbedder::m_defaultEdgeLength
float m_defaultEdgeLength
Definition: FastMultipoleEmbedder.h:125
ogdf::FastMultipoleEmbedder::m_defaultNodeSize
float m_defaultNodeSize
Definition: FastMultipoleEmbedder.h:127
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder
Definition: GalaxyMultilevel.h:89
ogdf::FastMultipoleMultilevelEmbedder::m_iMaxNumThreads
int m_iMaxNumThreads
Definition: FastMultipoleEmbedder.h:194
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::LayoutModule
Interface of general layout algorithms.
Definition: LayoutModule.h:44
FMEThread.h
Declaration of class FMEThread.
ogdf::FastMultipoleEmbedder::setDefaultNodeSize
void setDefaultNodeSize(float nodeSize)
Definition: FastMultipoleEmbedder.h:84