VTK NetDMF Reader

From NetDMF
Revision as of 09:26, 19 April 2018 by Comm (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


The NetDMF project is no longer under active development. Improvements that motivated this project have been implemented directly in XDMF.

This site is scheduled for take-down as of 1/1/2019. Contact kitware@kitware.com if you have a need for this site beyond then. DEPRECATED

This page is for ideas, proposed architecture, etc. for the VTK NetDMF reader implementation.

XML hierarchy

The following diagram shows how XML elements may be nested within a NetDMF file.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Mapping to VTK data structures


The most basic thing we can do is to make Conversation nodes map to graph edges, and IP addresses to graph vertices.


Location (at a given point in time) can be a property attached to the vertices of the graph.

Device hierarchy

Node elements may contain devices, and devices contain IP addresses, and may contain other devices. We could output a separate vtkTree with that information. Does the device hierarchy change over time?

Physical network

How to we capture physical network setups? It looks like Channel elements can specify these static links. Do we output a separate vtkGraph with this information? Is the network able to change over time?


There is also the question of time. Do we split it into multiple graphs, one for each simulation time point, or do we combine all the information together, then filter the output when animating, etc.?

Multiple homogeneous data structures vs. one heterogeneous graph

We could place all information into one heterogeneous graph, where nodes/links can have different meanings, or split the information into multiple data objects.

Use Case: Visualizing movements and communications over time

In this use case, the goal is to display vehicles moving around a terrain along with communications between devices as they happen. For efficiency, it is important to distinguish between data that does not change throughout the simulation, and data that changes frequently. The static data will be computed once, and dynamic data will be generated as needed for particular frames of the visualization.

Static data

The static data consists of a tree taken from the Scenario section containing nodes, devices, IP addresses, and possibly ports. It may not be possible to enumerate all possible ports from the Scenario section.

Static data.png

Dynamic data

The dynamic information consists of two basic parts: positions and conversations.


We should be able to query the data source to get the position/velocity of nodes at a particular moment in time. These positions could be output as a separate table, or we can update the points associated with nodes in the static tree.


For visualizing conversations, we most likely do not want only conversations happening at a given moment, but want all conversations within a range of time. This would allow the visualization have animation effects such as fading out recent conversations, or animating communications along trajectories as they are about to occur. To do this, you would need to define a sliding window around the current time.

The conversation data would consist of a graph containing all conversations during that window. The vertices in this graph would contain minimal information (IP address/port), and would be related back to devices by referencing the static tree.

Dynamic data.png

Possible visualization

Combining all this information, we could have a visualization that looks something like the following picture. Nodes would be glyphed as vehicles, people, etc. In order to distinguish between multiple devices/IPs/ports within a node, we could render a virtual tree of items emanating from each node, perhaps colored/glyphed by various characteristics. Conversations would have ports as endpoints.


NetDMF file format and NetDMF class library

Understanding NetDMF

Class diagram

Here is a possible class diagram of the NetDMF format. The diagram does not exactly match the specifications but has been designed to split the objects from the events. The scenario no longer describes the mobile devices, communication devices and protocols. They now are handled at a higher level. The scenario and result only handle events.

Suggestion of a class diagram

Basic Graph

Here is a possible output graph of a NetDMF file.

Graph Example