Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

MasterBase.h
Go to the documentation of this file.
1 
32 #pragma once
33 
34 #include <ogdf/basic/Barrier.h>
36 #include <ogdf/basic/GraphCopy.h>
38 
39 namespace ogdf {
40 namespace spring_embedder {
41 
43 template<typename NodeInfo, typename ForceModelBase>
44 class MasterBase {
45 protected:
47  const GraphCopy& m_gc;
50 
55 
56  ForceModelBase* m_forceModel;
57  ForceModelBase* m_forceModelImprove;
58 
60 
62 
63  double m_tNull;
64  double m_cF;
65  double m_t;
67 
70  double m_scaleFactor;
71 
72 public:
73  MasterBase(const SpringEmbedderBase& spring, const GraphCopy& gc, GraphAttributes& ga,
74  DPoint& boundingBox)
75  : m_spring(spring)
76  , m_gc(gc)
77  , m_ga(ga)
78  , m_boundingBox(boundingBox)
79  , m_index(gc)
80  , m_vInfo(gc.numberOfNodes())
81  , m_disp(gc.numberOfNodes())
82  , m_adjLists(2 * gc.numberOfEdges())
83  , m_forceModel(nullptr)
84  , m_forceModelImprove(nullptr)
85  , m_barrier(nullptr)
86  , m_avgDisplacement(std::numeric_limits<double>::max())
87  , m_maxDisplacement(std::numeric_limits<double>::max()) { }
88 
90  delete m_barrier;
91  delete m_forceModel;
92  delete m_forceModelImprove;
93  }
94 
95  int numberOfNodes() const { return m_vInfo.size(); }
96 
97  int numberOfIterations() const { return m_spring.iterations(); }
98 
100 
102  // cool down
103  m_t = m_tNull = 0.25 * m_idealEdgeLength * sqrt(numberOfNodes());
104  m_cF = 2.0;
106 
107  // convergence
108  m_avgDisplacement = std::numeric_limits<double>::max();
109  m_maxDisplacement = std::numeric_limits<double>::max();
110  }
111 
113  // cool down
114  m_t = m_tNull;
115  m_cF = 2.0;
117 
118  // convergence
119  m_avgDisplacement = std::numeric_limits<double>::max();
120  m_maxDisplacement = std::numeric_limits<double>::max();
121  }
122 
123  void coolDown() {
125  m_t = m_tNull / std::log2(m_cF);
126 
128  }
129 
130  double maxForceLength() const { return m_t; }
131 
132  double coolingFactor() const { return m_coolingFactor; }
133 
134  double idealEdgeLength() const { return m_idealEdgeLength; }
135 
136  bool noise() const { return m_spring.noise(); }
137 
138  const GraphCopy& getGraph() const { return m_gc; }
139 
141 
142  const NodeArray<int>& index() const { return m_index; }
143 
145 
146  Array<DPoint>& disp() { return m_disp; }
147 
149 
150  const ForceModelBase& forceModel() const { return *m_forceModel; }
151 
152  const ForceModelBase& forceModelImprove() const { return *m_forceModelImprove; }
153 
154  void syncThreads() {
155  if (m_barrier) {
157  }
158  }
159 
160  double scaleFactor() const { return m_scaleFactor; }
161 
162  bool hasConverged() const {
165  }
166 
167  double avgDisplacement() const { return m_avgDisplacement; }
168 
169  double maxDisplacement() const { return m_maxDisplacement; }
170 };
171 
172 }
173 }
ogdf::spring_embedder::SpringEmbedderBase::coolDownFactor
double coolDownFactor() const
Definition: SpringEmbedderBase.h:225
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
GraphAttributes.h
Declaration of class GraphAttributes which extends a Graph by additional attributes.
ogdf::spring_embedder::SpringEmbedderBase::noise
bool noise() const
Returns the current setting of noise.
Definition: SpringEmbedderBase.h:240
ogdf::GenericPoint
Parameterized base class for points.
Definition: geometry.h:74
ogdf::spring_embedder::MasterBase::disp
Array< DPoint > & disp()
Definition: MasterBase.h:146
ogdf::spring_embedder::MasterBase::avgDisplacement
double avgDisplacement() const
Definition: MasterBase.h:167
ogdf::spring_embedder::MasterBase::initImprovementPhase
void initImprovementPhase()
Definition: MasterBase.h:112
ogdf::spring_embedder::MasterBase::m_idealEdgeLength
double m_idealEdgeLength
Definition: MasterBase.h:61
ogdf::spring_embedder::MasterBase::hasConverged
bool hasConverged() const
Definition: MasterBase.h:162
ogdf::spring_embedder::MasterBase::m_spring
const SpringEmbedderBase & m_spring
Definition: MasterBase.h:46
ogdf::spring_embedder::MasterBase::getGraph
const GraphCopy & getGraph() const
Definition: MasterBase.h:138
ogdf::spring_embedder::MasterBase::m_index
NodeArray< int > m_index
Definition: MasterBase.h:51
ogdf::spring_embedder::SpringEmbedderBase::maxConvergenceFactor
double maxConvergenceFactor() const
Returns the currently used maximum convergence factor.
Definition: SpringEmbedderBase.h:192
ogdf::spring_embedder::MasterBase::coolDown
void coolDown()
Definition: MasterBase.h:123
ogdf::spring_embedder::MasterBase::coolingFactor
double coolingFactor() const
Definition: MasterBase.h:132
ogdf::GraphCopy
Copies of graphs supporting edge splitting.
Definition: GraphCopy.h:384
ogdf::spring_embedder::MasterBase::getAttributes
GraphAttributes & getAttributes()
Definition: MasterBase.h:140
ogdf::spring_embedder::MasterBase::maxForceLength
double maxForceLength() const
Definition: MasterBase.h:130
ogdf::spring_embedder::MasterBase::m_scaleFactor
double m_scaleFactor
Definition: MasterBase.h:70
ogdf::spring_embedder::SpringEmbedderBase
Common base class for ogdf::SpringEmbedderBase and ogdf::SpringEmbedderGridVariant.
Definition: SpringEmbedderBase.h:44
ogdf::spring_embedder::MasterBase::m_tNull
double m_tNull
Definition: MasterBase.h:63
ogdf::spring_embedder::SpringEmbedderBase::avgConvergenceFactor
double avgConvergenceFactor() const
Returns the currently used average convergence factor.
Definition: SpringEmbedderBase.h:177
ogdf::spring_embedder::MasterBase::MasterBase
MasterBase(const SpringEmbedderBase &spring, const GraphCopy &gc, GraphAttributes &ga, DPoint &boundingBox)
Definition: MasterBase.h:73
ogdf::spring_embedder::MasterBase::maxDisplacement
double maxDisplacement() const
Definition: MasterBase.h:169
ogdf::spring_embedder::MasterBase::vInfo
Array< NodeInfo > & vInfo()
Definition: MasterBase.h:144
ogdf::spring_embedder::MasterBase::m_forceModel
ForceModelBase * m_forceModel
Definition: MasterBase.h:56
ogdf::spring_embedder::MasterBase::forceModelImprove
const ForceModelBase & forceModelImprove() const
Definition: MasterBase.h:152
ogdf::spring_embedder::MasterBase::m_forceModelImprove
ForceModelBase * m_forceModelImprove
Definition: MasterBase.h:57
ogdf::spring_embedder::MasterBase::m_barrier
Barrier * m_barrier
Definition: MasterBase.h:59
Barrier.h
Implementation of a thread barrier.
ogdf::spring_embedder::MasterBase::m_avgDisplacement
double m_avgDisplacement
Definition: MasterBase.h:68
ogdf::Array< NodeInfo >
ogdf::spring_embedder::MasterBase::adjLists
Array< int > & adjLists()
Definition: MasterBase.h:148
ogdf::spring_embedder::MasterBase::noise
bool noise() const
Definition: MasterBase.h:136
ogdf::spring_embedder::MasterBase::m_cF
double m_cF
Definition: MasterBase.h:64
ogdf::spring_embedder::MasterBase::numberOfIterationsImprove
int numberOfIterationsImprove() const
Definition: MasterBase.h:99
ogdf::spring_embedder::MasterBase
Base class for ogdf::SpringEmbedderGridVariant::Master.
Definition: MasterBase.h:44
GraphCopy.h
Declaration of graph copy classes.
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::spring_embedder::MasterBase::initUnfoldPhase
void initUnfoldPhase()
Definition: MasterBase.h:101
ogdf::Barrier::threadSync
void threadSync()
Synchronizes the threads in the group.
Definition: Barrier.h:69
ogdf::spring_embedder::MasterBase::m_gc
const GraphCopy & m_gc
Definition: MasterBase.h:47
ogdf::Barrier
Representation of a barrier.
Definition: Barrier.h:49
ogdf::spring_embedder::MasterBase::idealEdgeLength
double idealEdgeLength() const
Definition: MasterBase.h:134
ogdf::spring_embedder::SpringEmbedderBase::iterationsImprove
int iterationsImprove() const
Returns the current setting of iterations for the improvement phase.
Definition: SpringEmbedderBase.h:216
ogdf::spring_embedder::MasterBase::m_ga
GraphAttributes & m_ga
Definition: MasterBase.h:48
ogdf::spring_embedder::MasterBase::m_maxDisplacement
double m_maxDisplacement
Definition: MasterBase.h:69
std
Definition: GML.h:110
ogdf::Math::log2
T log2(T x)
Returns the logarithm of x to the base 2.
Definition: Math.h:107
ogdf::spring_embedder::MasterBase::m_disp
Array< DPoint > m_disp
Definition: MasterBase.h:53
ogdf::spring_embedder::SpringEmbedderBase::forceLimitStep
double forceLimitStep() const
Definition: SpringEmbedderBase.h:227
ogdf::Array::size
INDEX size() const
Returns the size (number of elements) of the array.
Definition: Array.h:297
ogdf::spring_embedder::MasterBase::scaleFactor
double scaleFactor() const
Definition: MasterBase.h:160
ogdf::spring_embedder::MasterBase::m_adjLists
Array< int > m_adjLists
Definition: MasterBase.h:54
ogdf::spring_embedder::MasterBase::numberOfIterations
int numberOfIterations() const
Definition: MasterBase.h:97
ogdf::spring_embedder::MasterBase::m_coolingFactor
double m_coolingFactor
Definition: MasterBase.h:66
ogdf::spring_embedder::MasterBase::m_t
double m_t
Definition: MasterBase.h:65
ogdf::spring_embedder::SpringEmbedderBase::iterations
int iterations() const
Returns the current setting of iterations.
Definition: SpringEmbedderBase.h:206
ogdf::spring_embedder::MasterBase::m_boundingBox
DPoint & m_boundingBox
Definition: MasterBase.h:49
SpringEmbedderBase.h
Declaration and definition of ogdf::SpringEmbedderBase.
ogdf::spring_embedder::MasterBase::syncThreads
void syncThreads()
Definition: MasterBase.h:154
ogdf::spring_embedder::MasterBase::index
const NodeArray< int > & index() const
Definition: MasterBase.h:142
ogdf::spring_embedder::MasterBase::numberOfNodes
int numberOfNodes() const
Definition: MasterBase.h:95
ogdf::spring_embedder::MasterBase::~MasterBase
~MasterBase()
Definition: MasterBase.h:89
ogdf::spring_embedder::MasterBase::m_vInfo
Array< NodeInfo > m_vInfo
Definition: MasterBase.h:52
ogdf::spring_embedder::MasterBase::forceModel
const ForceModelBase & forceModel() const
Definition: MasterBase.h:150