Topology Objects

Fiber Bundle HDF5 - Topology Structure (Topology group)

A Topology is a set of elements (points, cells, ...) with neighbourhood information. All datasets in a Topology subgroup share the same dataspace. Ie., all datasets in a Topogy subgroup have the same (formal) size. The only exceptions are datasets which are only partially defined on a set. The datasets within a Topology are ordered in subgroups (Representation) which specify the relationship of a dataset relative to another reference object. Such reference objects can be chart objects or other Topology objects. The name of a Representation subgroup is exactly that of the reference object. Additionally, each Representation subgroup contains an entry "Reference" which is a symbolic link to the actual HDF5 reference object.

The Points Topology subgroup (Grid subgroup)

The most important Topology subgroup is the `Points' Topology of a Grid. It contains all information which `sits' on a vertex and defines all mappings from the vertices of a Grid to something else.

Example:

Points
  |
  |===> Neighbourhood  (dataset)
  |                       
  |--> Standard Cartesian Chart 3D/  (Representation subgroup)
  |
  |--> Standard Polar Chart 3D/   (Representation subgroup)
  |
[...]

The Representation subgroup "Standard Cartesian Chart 3D" contains all data which refer to the chart object named "Standard Cartesian Chart 3D" as specified in the charts group of a Grid, which is basically a reference to the globally defined chart objects. Eg., the coordinate locations of each grid point in the various coordinate systems are stored in the corresponding Representation subgroup (in the Positions dataset), as well as the representation of arbitrary user-defined vector and tensor fields in the given coordinate system.

The Connectivity Topology subgroup (Grid subgroup)

This subgroups contains all information related to the cells which construct a grid. It is omitted in the case of regular grids, where this information is available implicitly:

An example of an explicit Connectivity group is a triangular surface. Here the `Connectivity' group contains an group entry named `Points' (ie. Representation group) to denote the reference to the `Points' Topology.

Connectivity
  |
  |===> Neighbourhood  optional neighbourhood information of the triangles
  |                       
  |--> Points/  information defining eg. which points make up each triangle
  |
[...]

The Positions dataset of the Points Representation is the actual storage place for the triangle vertex indices. Note that not coordinate locations for each triangle are stored, but point indices. The physical coordinates of each point are contained in the Points Topology, in the representation of the various coordinate systems.

A direct Representation of `Connectivity' Topology in cartesian coordinate is doable, too, by just introducing a chart representation there.

The inverse mapping, ie. which triangles are connected to the same point, can be computed from the Connectivity/Points/ Representation. The appropriate storage place for this mapping is the Points/Connectivity/ Representation.

Arbitrary (user-defined) Topology subgroups

Any number of additional topology subgroups may be defined on a grid (with the exception of the reserved names). Each Topology has an integer attribute "index depth" which tells how many times the elements of the Topology have to be dereferenced until the base space is reached. Point Topologies, which directly refer to locations in the base space, get an index depth of 0, Cell Topologies like the Connectivity, get an index depth of 1, aggregate Topologies of Cell Topolies get an index depth of 2 and so on.

An application of multiple Point Topologies on the same grid are vertex-centered AMR data. Cell-centered AMR data would be stored in multiple Cell Topologies.

Extensions and Restrictions