FiberBundleHDF5  $Id: FiberHDF5.dfg,v 1.8 2006/12/12 12:32:50 werner Exp $
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:

  • If at least one dataset in the Points Topology is an n-dimensional dataset, the Connectivity is implicitly given as a regular n-dimensional. Note that other datasets in the Points Topology may be 1-dimensional (unspecified dataspace) as long as they contain the same number of elements. They are treated as n-dimensional consistent datasets. Multiple n-dimensional datasets must not contradict.
  • If no Connectivity is given on a grid and all datasets in the Points Topology are 1-dimensional, they are treated as a set of unrelated points. Ie. they are not treated as beeing connected via a 1-dimensional line.
  • All other cases require an explicit Connectivity subgroup in the Grid group.

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

  • Neighbourhood is a reserved (optional) name for a dataset specifying the neighbourhood information of the base elements. It maps each element to a set of elements.

  • All dataset in the Topology group hierarchy must share the same dataspace, ie. be of (formally) the same size.

  • If a dataset is found in a Point Topology which is not in a Representation subgroup, it is treated as beeing containd in the Representation of the ‘Standard Cartesian Chart 3D’.

  • Scalar fields which are identical for all representations can be put in any group, and referred to by any other representation through symbolic links. It is not adviced to put scalar fields directly into the Topology group, each field has to be put into some representation subgroup. The only exception is the Neighbourhood information.

  • Via use of the "Reference" symbolic link in each Representation group, the name of the Representation group is not of ultimative importance. Other names may be chosen, eg. to represent some Connectivity in different Point Topologies (if that is possible and makes sense). However, this should be avoided if possible.