Open
Graph Drawing
Framework

 v.2007.11
 

ogdf::FMMMLayout Class Reference

The fast multipole multilevel layout algorithm. More...

#include <FMMMLayout.h>

Inheritance diagram for ogdf::FMMMLayout:

ogdf::LayoutModule

List of all members.

Public Types

enum  PageFormatType { pfPortrait, pfLandscape, pfSquare }
 Possible page formats. More...
enum  QualityVsSpeed { qvsGorgeousAndEfficient, qvsBeautifulAndFast, qvsNiceAndIncredibleSpeed }
 Trade-off between run-time and quality. More...
enum  EdgeLengthMeasurement { elmMidpoint, elmBoundingCircle }
 Specifies how the length of an edge is measured. More...
enum  AllowedPositions { apAll, apInteger, apExponent }
 Specifies which positions for a node are allowed. More...
enum  TipOver { toNone, toNoGrowingRow, toAlways }
 Specifies in which case it is allowed to tip over drawings of connected components. More...
enum  PreSort { psNone, psDecreasingHeight, psDecreasingWidth }
 Specifies how connected components are sorted before the packing algorithm is applied. More...
enum  GalaxyChoice { gcUniformProb, gcNonUniformProbLowerMass, gcNonUniformProbHigherMass }
 Specifies how sun nodes of galaxies are selected. More...
enum  MaxIterChange { micConstant, micLinearlyDecreasing, micRapidlyDecreasing }
 Specifies how MaxIterations is changed in subsequent multilevels. More...
enum  InitialPlacementMult { ipmSimple, ipmAdvanced }
 Specifies how the initial placement is generated. More...
enum  ForceModel { fmFruchtermanReingold, fmEades, fmNew }
 Specifies the force model. More...
enum  RepulsiveForcesMethod { rfcExact, rfcGridApproximation, rfcNMM }
 Specifies how to calculate repulsive forces. More...
enum  StopCriterion { scFixedIterations, scThreshold, scFixedIterationsOrThreshold }
 Specifies the stop criterion. More...
enum  InitialPlacementForces { ipfUniformGrid, ipfRandomTime, ipfRandomRandIterNr }
 Specifies how the initial placement is done. More...
enum  ReducedTreeConstruction { rtcPathByPath, rtcSubtreeBySubtree }
 Specifies how the reduced bucket quadtree is constructed. More...
enum  SmallestCellFinding { scfIteratively, scfAluru }
 Specifies how to calculate the smallest quadratic cell surrounding particles of a node in the reduced bucket quadtree. More...

Public Member Functions

 FMMMLayout ()
 Creates an instance of the layout algorithm.
 ~FMMMLayout ()
The algorithm call
void call (GraphAttributes &GA)
 Calls the algorithm for graph GA and returns the layout information in AG.
void call (GraphAttributes &AG, const EdgeArray< double > &edgeLength)
 Extended algorithm call: Allows to pass desired lengths of the edges.
void call (GraphAttributes &AG, char *ps_file)
 Extended algorithm call: Calls the algorithm for graph AG.
void call (GraphAttributes &AG, const EdgeArray< double > &edgeLength, char *ps_file)
 Extend algorithm call: Allows to pass desired lengths of the edges.
Further information.
double getCpuTime ()
 Returns the runtime (=CPU-time) of the layout algorithm in seconds.
High-level options
Allow to specify the most relevant parameters.

bool useHighLevelOptions () const
 Returns the current setting of option useHighLevelOptions.
void useHighLevelOptions (bool uho)
 Sets the option useHighLevelOptions to uho.
PageFormatType pageFormat () const
 Returns the current setting of option pageFormat.
void pageFormat (PageFormatType t)
 Sets the option pageRatio to t.
double unitEdgeLength () const
 Returns the current setting of option unitEdgeLength.
void unitEdgeLength (double x)
 Sets the option unitEdgeLength to x.
bool newInitialPlacement () const
 Returns the current setting of option newInitialPlacement.
void newInitialPlacement (bool nip)
 Sets the option newInitialPlacement to nip.
QualityVsSpeed qualityVersusSpeed () const
 Returns the current setting of option qualityVersusSpeed.
void qualityVersusSpeed (QualityVsSpeed qvs)
 Sets the option qualityVersusSpeed to qvs.
General low-level options
The low-level options in this and the following sections are meant for experts or interested people only.

void randSeed (int p)
 Sets the seed of the random number generator.
int randSeed () const
 Returns the seed of the random number generator.
EdgeLengthMeasurement edgeLengthMeasurement () const
 Returns the current setting of option edgeLengthMeasurement.
void edgeLengthMeasurement (EdgeLengthMeasurement elm)
 Sets the option edgeLengthMeasurement to elm.
AllowedPositions allowedPositions () const
 Returns the current setting of option allowedPositions.
void allowedPositions (AllowedPositions ap)
 Sets the option allowedPositions to ap.
int maxIntPosExponent () const
 Returns the current setting of option maxIntPosExponent.
void maxIntPosExponent (int e)
 Sets the option maxIntPosExponent to e.
Options for the divide et impera step
double pageRatio () const
 Returns the current setting of option pageRatio.
void pageRatio (double r)
 Sets the option pageRatio to r.
int stepsForRotatingComponents () const
 Returns the current setting of option stepsForRotatingComponents.
void stepsForRotatingComponents (int n)
 Sets the option stepsForRotatingComponents to n.
TipOver tipOverCCs () const
 Returns the current setting of option tipOverCCs.
void tipOverCCs (TipOver to)
 Sets the option tipOverCCs to to.
double minDistCC () const
 Returns the minimal distance between connected components.
void minDistCC (double x)
 Sets the minimal distance between connected components to x.
PreSort presortCCs () const
 Returns the current setting of option presortCCs.
void presortCCs (PreSort ps)
 Sets the option presortCCs to ps.
Options for the multilevel step
int minGraphSize () const
 Returns the current setting of option minGraphSize.
void minGraphSize (int n)
 Sets the option minGraphSize to n.
GalaxyChoice galaxyChoice () const
 Returns the current setting of option galaxyChoice.
void galaxyChoice (GalaxyChoice gc)
 Sets the option galaxyChoice to gc.
int randomTries () const
 Returns the current setting of option randomTries.
void randomTries (int n)
 Sets the option randomTries to n.
MaxIterChange maxIterChange () const
 Returns the current setting of option maxIterChange.
void maxIterChange (MaxIterChange mic)
 Sets the option maxIterChange to mic.
int maxIterFactor () const
 Returns the current setting of option maxIterFactor.
void maxIterFactor (int f)
 Sets the option maxIterFactor to f.
InitialPlacementMult initialPlacementMult () const
 Returns the current setting of option initialPlacementMult.
void initialPlacementMult (InitialPlacementMult ipm)
 Sets the option initialPlacementMult to ipm.
Options for the force calculation step
ForceModel forceModel () const
 Returns the used force model.
void forceModel (ForceModel fm)
 Sets the used force model to fm.
double springStrength () const
 Returns the strength of the springs.
void springStrength (double x)
 Sets the strength of the springs to x.
double repForcesStrength () const
 Returns the strength of the repulsive forces.
void repForcesStrength (double x)
 Sets the strength of the repulsive forces to x.
RepulsiveForcesMethod repulsiveForcesCalculation () const
 Returns the current setting of option repulsiveForcesCalculation.
void repulsiveForcesCalculation (RepulsiveForcesMethod rfc)
 Sets the option repulsiveForcesCalculation to rfc.
StopCriterion stopCriterion () const
 Returns the stop criterion.
void stopCriterion (StopCriterion rsc)
 Sets the stop criterion to rsc.
double threshold () const
 Returns the threshold for the stop criterion.
void threshold (double x)
 Sets the threshold for the stop criterion to x.
int fixedIterations () const
 Returns the fixed number of iterations for the stop criterion.
void fixedIterations (int n)
 Sets the fixed number of iterations for the stop criterion to n.
double forceScalingFactor () const
 Returns the scaling factor for the forces.
void forceScalingFactor (double f)
 Sets the scaling factor for the forces to \ f.
bool coolTemperature () const
 Returns the current setting of option coolTemperature.
void coolTemperature (bool b)
 Sets the option coolTemperature to b.
double coolValue () const
 Returns the current setting of option coolValue.
void coolValue (double x)
 Sets the option coolValue to x.
InitialPlacementForces initialPlacementForces () const
 Returns the current setting of option initialPlacementForces.
void initialPlacementForces (InitialPlacementForces ipf)
 Sets the option initialPlacementForces to ipf.
Options for the postprocessing step
bool resizeDrawing () const
 Returns the current setting of option resizeDrawing.
void resizeDrawing (bool b)
 Sets the option resizeDrawing to b.
double resizingScalar () const
 Returns the current setting of option resizingScalar.
void resizingScalar (double s)
 Sets the option resizingScalar to s.
int fineTuningIterations () const
 Returns the number of iterations for fine tuning.
void fineTuningIterations (int n)
 Sets the number of iterations for fine tuning to n.
double fineTuneScalar () const
 Returns the curent setting of option fineTuneScalar.
void fineTuneScalar (double s)
 Sets the option fineTuneScalar to s.
bool adjustPostRepStrengthDynamically () const
 Returns the current setting of option adjustPostRepStrengthDynamically.
void adjustPostRepStrengthDynamically (bool b)
 Sets the option adjustPostRepStrengthDynamically to b.
double postSpringStrength () const
 Returns the strength of the springs in the postprocessing step.
void postSpringStrength (double x)
 Sets the strength of the springs in the postprocessing step to x.
double postStrengthOfRepForces () const
 Returns the strength of the repulsive forces in the postprocessing step.
void postStrengthOfRepForces (double x)
 Sets the strength of the repulsive forces in the postprocessing step to x.
Options for repulsive force approximation methods
int frGridQuotient () const
 Returns the current setting of option frGridQuotient.
void frGridQuotient (int p)
 Sets the option frGridQuotient to p.
ReducedTreeConstruction nmTreeConstruction () const
 Returns the current setting of option nmTreeConstruction.
void nmTreeConstruction (ReducedTreeConstruction rtc)
 Sets the option nmTreeConstruction to rtc.
SmallestCellFinding nmSmallCell () const
 Returns the current setting of option nmSmallCell.
void nmSmallCell (SmallestCellFinding scf)
 Sets the option nmSmallCell to scf.
int nmParticlesInLeaves () const
 Returns the current setting of option nmParticlesInLeaves.
void nmParticlesInLeaves (int n)
 Sets the option nmParticlesInLeaves to n.
int nmPrecision () const
 Returns the precision p for the p-term multipole expansions.
void nmPrecision (int p)
 Sets the precision for the multipole expansions to \ p.

Private Member Functions

void call_DIVIDE_ET_IMPERA_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E)
 Calls the divide (decomposition into connected components) and impera (drawing and packing of the componenets) step.
void call_MULTILEVEL_step_for_subGraph (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, int comp_index)
 Calls the multilevel step for subGraph G.
void call_FORCE_CALCULATION_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, int act_level, int max_level)
 Calls the force calculation step for G, A, E.
void call_POSTPROCESSING_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &last_node_movement)
 Calls the postprocessing step.
void initialize_all_options ()
 All parameter options are set to the default values.
void update_low_level_options_due_to_high_level_options_settings ()
 Updates several low level parameter options due to the settings of the high level parameter options.
void import_NodeAttributes (const Graph &G, GraphAttributes &GA, NodeArray< NodeAttributes > &A)
 Imports for each node v of G its width, height and position(given from GA) in A.
void import_EdgeAttributes (const Graph &G, const EdgeArray< double > &edgeLength, EdgeArray< EdgeAttributes > &E)
 Imports for each edge e of G its desired length given via edgeLength.
void init_ind_ideal_edgelength (const Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E)
 Sets the individual ideal edge length for each edge e.
void set_radii (const Graph &G, NodeArray< NodeAttributes > &A)
 The radii of the surrounding circles of the bounding boxes are computed.
void export_NodeAttributes (Graph &G_reduced, NodeArray< NodeAttributes > &A_reduced, GraphAttributes &GA)
 Exports for each node v in G_reduced the position of the original_node in G.
void make_simple_loopfree (const Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes >E, Graph &G_reduced, NodeArray< NodeAttributes > &A_reduced, EdgeArray< EdgeAttributes > &E_reduced)
 Creates a simple and loopfree copy of G and stores the corresponding node / edge attributes.
void delete_parallel_edges (const Graph &G, EdgeArray< EdgeAttributes > &E, Graph &G_reduced, List< edge > &S, EdgeArray< double > &new_edgelength)
 Deletes parallel edges of G_reduced.
void update_edgelength (List< edge > &S, EdgeArray< double > &new_edgelength, EdgeArray< EdgeAttributes > &E_reduced)
 Sets for each edge e of G_reduced in S its edgelength to new_edgelength[e].
double get_post_rep_force_strength (int n)
 Returns the value for the strength of the repulsive forces.
void make_positions_integer (Graph &G, NodeArray< NodeAttributes > &A)
 Makes the node positions integers.
void create_postscript_drawing (GraphAttributes &AG, char *ps_file)
 Creates a simple drawing of AG in postscript format and saves it in file ps_file.
void create_maximum_connected_subGraphs (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, Graph G_sub[], NodeArray< NodeAttributes > A_sub[], EdgeArray< EdgeAttributes > E_sub[], NodeArray< int > &component)
 Constructs the list of connected components of G.
void pack_subGraph_drawings (NodeArray< NodeAttributes > &A, Graph G_sub[], NodeArray< NodeAttributes > A_sub[])
 The drawings of the subgraphs are packed.
void calculate_bounding_rectangles_of_components (List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[])
 The bounding rectangles of all connected componenents of G are calculated and stored in R.
Rectangle calculate_bounding_rectangle (Graph &G, NodeArray< NodeAttributes > &A, int componenet_index)
 The bounding rectangle of the componenet_index-th. component of G is returned.
void rotate_components_and_calculate_bounding_rectangles (List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[])
double calculate_area (double width, double height, int comp_nr)
void export_node_positions (NodeArray< NodeAttributes > &A, List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[])
void delete_all_subGraphs (Graph G_sub[], NodeArray< NodeAttributes > A_sub[], EdgeArray< EdgeAttributes > E_sub[])
 Frees dynamically allocated memory for the connected component subgraphs.
int get_max_mult_iter (int act_level, int max_level, int node_nr)
void calculate_forces (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &last_node_movement, int iter, int fine_tuning_step)
 The forces are calculated here.
void init_boxlength_and_cornercoordinate (Graph &G, NodeArray< NodeAttributes > &A)
 The length of the computational box in the first iteration is set (down left corner is at (0,0).
void create_initial_placement (Graph &G, NodeArray< NodeAttributes > &A)
 The initial placements of the nodes are created by using initialPlacementForces().
void init_F (Graph &G, NodeArray< DPoint > &F)
 Sets all entries of F to (0,0).
void make_initialisations_for_rep_calc_classes (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F_rep)
 Make initializations for the data structures that are used in the choosen class for rep. force calculation.
void calculate_repulsive_forces (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F_rep)
 Calculates repulsive forces for each node.
void deallocate_memory_for_rep_calc_classes ()
 Deallocates dynamically allocated memory of the choosen rep. calculation class.
void calculate_attractive_forces (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F_attr)
 Calculates attractive forces for each node.
double f_attr_scalar (double d, double ind_ideal_edge_length)
 Returns the attractive force scalar.
void add_attr_rep_forces (Graph &G, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &F, int iter, int fine_tuning_step)
 Add attractive and repulsive forces for each node.
void move_nodes (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F)
 Move the nodes.
void update_boxlength_and_cornercoordinate (Graph &G, NodeArray< NodeAttributes > &A)
 Computes a new tight computational square-box.
double max_radius (int iter)
 Describes the max. radius of a move in one time step, depending on the number of iterations.
void set_average_ideal_edgelength (Graph &G, EdgeArray< EdgeAttributes > &E)
 The average_ideal_edgelength for all edges is computed.
double get_average_forcevector_length (Graph &G, NodeArray< DPoint > &F)
void prevent_oscilations (Graph &G, NodeArray< DPoint > &F, NodeArray< DPoint > &last_node_movement, int iter)
double angle (DPoint &P, DPoint &Q, DPoint &R)
 Calculates the angle between PQ and PS in [0,2pi).
void init_last_node_movement (Graph &G, NodeArray< DPoint > &F, NodeArray< DPoint > &last_node_movement)
 last_node_movement is initialized to F (used after first iteration).
void adapt_drawing_to_ideal_average_edgelength (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E)
void restrict_force_to_comp_box (DPoint &force)
void init_time ()
 Sets time_total to zero.

Private Attributes

bool m_useHighLevelOptions
 The option for using high-level options.
PageFormatType m_pageFormat
 The option for the page format.
double m_unitEdgeLength
 The unit edge length.
bool m_newInitialPlacement
 The option for new initial placement.
QualityVsSpeed m_qualityVersusSpeed
 The option for quality-vs-speed trade-off.
int m_randSeed
 The random seed.
EdgeLengthMeasurement m_edgeLengthMeasurement
 The option for edge length measurement.
AllowedPositions m_allowedPositions
 The option for allowed positions.
int m_maxIntPosExponent
 The option for the used exponent.
double m_pageRatio
 The desired page ratio.
int m_stepsForRotatingComponents
 The number of rotations.
TipOver m_tipOverCCs
 Option for tip-over of connected components.
double m_minDistCC
 The separation between connected components.
PreSort m_presortCCs
 The option for presorting connected components.
int m_minGraphSize
 The option for minimal graph size.
GalaxyChoice m_galaxyChoice
 The selection of galaxy nodes.
int m_randomTries
 The number of random tries.
MaxIterChange m_maxIterChange
 The option for how to change MaxIterations.
int m_maxIterFactor
 The factor used for decreasing MaxIterations.
InitialPlacementMult m_initialPlacementMult
 The option for creating initial placement.
ForceModel m_forceModel
 The used force model.
double m_springStrength
 The strengths of springs.
double m_repForcesStrength
 The strength of repulsive forces.
RepulsiveForcesMethod m_repulsiveForcesCalculation
 Option for how to calculate repulsive forces.
StopCriterion m_stopCriterion
 The stop criterion.
double m_threshold
 The threshold for the stop criterion.
int m_fixedIterations
 The fixed number of iterations for the stop criterion.
double m_forceScalingFactor
 The scaling factor for the forces.
bool m_coolTemperature
 The option for how to scale forces.
double m_coolValue
 The value by which forces are decreased.
InitialPlacementForces m_initialPlacementForces
 The option for how the initial placement is done.
bool m_resizeDrawing
 The option for resizing the drawing.
double m_resizingScalar
 Parameter for resizing the drawing.
int m_fineTuningIterations
 The number of iterations for fine tuning.
double m_fineTuneScalar
 Parameter for scaling forces during fine tuning.
bool m_adjustPostRepStrengthDynamically
 The option adjustPostRepStrengthDynamically.
double m_postSpringStrength
 The strength of springs during postprocessing.
double m_postStrengthOfRepForces
 The strength of repulsive forces during postprocessing.
int m_frGridQuotient
 The grid quotient.
ReducedTreeConstruction m_NMTreeConstruction
 The option for how to construct reduced bucket quadtree.
SmallestCellFinding m_NMSmallCell
 The option for how to calculate smallest quadtratic cells.
int m_NMParticlesInLeaves
 The maximal number of particles in a leaf.
int m_NMPrecision
 The precision for multipole expansions.
double max_integer_position
 The maximum value for an integer position.
double cool_factor
 Needed for scaling the forces if coolTemperature is true.
double average_ideal_edgelength
 Measured from center to center.
double boxlength
 Holds the length of the quadratic comput. box.
int number_of_components
 The number of components of the graph.
DPoint down_left_corner
 Holds down left corner of the comput. box.
NodeArray< double > radius
 Holds the radius of the surrounding circle for each node.
double time_total
 The runtime (=CPU-time) of the algorithm in seconds.
FruchtermanReingold FR
 Class for repulsive force calculation (Fruchterman, Reingold).
NMM NM
 Class for repulsive force calculation.


Detailed Description

The fast multipole multilevel layout algorithm.

The class FMMMLayout implements a force-directed graph drawing method suited also for very large graphs. It is based on a combination of an efficient multilevel scheme and a strategy for approximating the repusive forcesin the system by rapidly evaluating potential fields.

The implementation is based on the following publication:

Stefan Hachul, Michael Jünger: Drawing Large Graphs with a Potential-Field-Based Multilevel Algorithm. 12th International Symposium on Graph Drawing 1998, New York (GD '04), LNCS 3383, pp. 285-295, 2004.

Optional parameters

The following options are the most important. You can set useHighLevelOptions to true and just need to asjust a few parameters. However, you can also adjust all parameters that the implementation uses (see below), but this requires good knowledge of the algorithm.

OptionTypeDefaultDescription
useHighLevelOptionsboolfalse Wether high-level options are used or not.
pageFormatPageFormatType pfSquare The desired apsect ratio of the layout.
unitEdgeLengthdouble100.0 The unit edge length.
newInitialPlacementboolfalse Specifies if initial placement of nodes is varied.
qualityVersusSpeedQualityVsSpeed qvsBeautifulAndFast Indicates if the algorithm is tuned either for best quality or best speed.

If you want to do more detailed fine-tuning, you can adjust all parameters used by the algorithm. Please refer to the paper cited above for better understanding of the algorithm.

General
randSeedint100 The seed of the random number generator.
edgeLengthMeasurementEdgeLengthMeasurement elmBoundingCircle Indicates how the length of an edge is measured.
allowedPositionsAllowedPositions apInteger Defines which positions for a node are allowed.
maxIntPosExponentint40 Defines the exponent used if allowedPositions == apExponent.
Divide et impera step
pageRatiodouble1.0 The desired page ratio.
stepsForRotatingComponentsint10 The number of rotations per connected component.
tipOverCCsTipOver toNoGrowingRow Specifies when it is allowed to tip over drawings.
minDistCCdouble100 The minimal distance between connected components.
presortCCsPreSort psDecreasingHeight Defines if the connected components are sorted before the packing algorithm is applied.
Multilevel step
minGraphSizeint50 Determines the number of nodes of a graph in the for which no more collapsing of galaxies is performed
galaxyChoiceGalaxyChoice gcNonUniformProbLowerMass Defines how sun nodes of galaxies are selected.
randomTriesint20 Defines the number of tries to get a random node with minimal star mass.
maxIterChangeMaxIterChange micLinearlyDecreasing Defines how MaxIterations is changed in subsequent multilevels.
maxIterFactorint10 Defines the factor used for decrasing MaxIterations.
initialPlacementMultInitialPlacementMult ipmAdvanced Defines how the initial placement is generated.
Force calculation step
forceModelForceModel fmNew The used force model.
springStrengthdouble1.0 The strength of the springs.
repForcesStrengthdouble1.0 The strength of the repulsive forces.
repulsiveForcesCalculationRepulsiveForcesMethod rfcNMM Defines how to calculate repulsive forces.
stopCriterionStopCriterion scFixedIterationsOrThreshold The stop criterion.
thresholddouble0.01 The threshold for the stop criterion.
fixedIterationsint30 The fixed number of iterations for the stop criterion.
forceScalingFactordouble0.05 The scaling factor for the forces.
coolTemperatureboolfalse Use coolValue for scaling forces.
coolValuedouble0.99 The value by which forces are decreased.
initialPlacementForcesInitialPlacementForces ipfRandomRandIterNr Defines how the initial placement is done.
Force calculation step
resizeDrawingbooltrue Specifies if the resulting drawing is resized.
resizingScalardouble1 Defines a parameter to scale the drawing if resizeDrawing is true.
fineTuningIterationsint20 The number of iterations for fine tuning.
fineTuneScalardouble0.2 Defines a parameter for scaling the forces in the fine-tuning iterations.
adjustPostRepStrengthDynamicallybooltrue If set to true, the strength of the repulsive force field is calculated.
postSpringStrengthdouble2.0 The strength of the springs in the postprocessing step.
postStrengthOfRepForcesdouble0.01 The strength of the repulsive forces in the postprocessing step.
Repulsive force approximation methods
frGridQuotientint2 The grid quotient.
nmTreeConstructionReducedTreeConstruction rtcSubtreeBySubtree Defines how the reduced bucket quadtree is constructed.
nmSmallCellSmallestCellFinding scfIteratively Defines how the smallest quadratic cell that surrounds the particles of a node in the reduced bucket quadtree is calculated.
nmParticlesInLeavesint25 The maximal number of particles that are contained in a leaf of the reduced bucket quadtree.
nmPrecisionint4 The precision p for the p-term multipole expansions.

Running time

The running time of the algorithm is O(n log n + m) for graphs with n nodes and m edges. The required space is linear in the input size.

Definition at line 256 of file FMMMLayout.h.


Member Enumeration Documentation