2.4. DREAM3D File Specification
“/” Root Object
Required Attributes
Name |
Type |
Value |
---|---|---|
FileVersion |
Null Term String |
“8.0” |
HDF5 Groups
Name |
Type |
Notes |
---|---|---|
DataStructure |
HDF5 Group |
Name will not change |
Pipeline |
HDF5 Group |
Name will not change |
General Notes on the ‘Pipeline’ HDF5 Group
This holds a single null term STRING data set that holds the JSON formatted pipeline that was used to create the file. If you are trying to write a compatible .dream3d file this can be omitted.
General Notes on the ‘DataStructure’ HDF5 Group
The name will not change
Each object within the ‘DataStructure’ group, including the ‘DataStructure’ group itself has a unique id associated with it.
Name: NextObjectId
Type: 64 Bit Unsigned Integer
Value: unique value
Each HDF5 object within the ‘DataStructure’ HDF5 group represents either a Group, Geometry, AttributeMatrix or DataArray.
DataObject Attributes
These attributes are on every DataObject:
Name |
Type |
Notes |
---|---|---|
Importable |
Scalar UINT64 |
Only important if you are going to be writing a compatible .dream3d file |
ObjectId |
Scalar UINT64 |
Only important if you are going to be writing a compatible .dream3d file |
ObjectType |
Null Term String |
Describes the class of the object |
ObjectType Possible Values:
DynamicListArray
ScalarData
BaseGroup +
AttributeMatrix
DataGroup
IDataArray +
DataArray
IGeometry +
IGridGeometry +
RectGridGeom
ImageGeom
INodeGeometry0D +
VertexGeom
INodeGeometry1D +
EdgeGeom
INodeGeometry2D +
QuadGeom
TriangleGeom
INodeGeometry3D +
HexahedralGeom
TetrahedralGeom
INeighborList +
NeighborList
StringArray
AbstractMontage +
GridMontage
+
: These theoretically should never show up as they are abstract classes.
Specific ObjectType Attributes
Based on the ObjectType, there can be additional attriutes that can be read based on the ObjectType value
AttributeMatrix
Name |
Type |
Notes |
---|---|---|
TupleDims |
N x UINT64 |
Dimensions of the contained arrays from fastest to slowest. Note that for data arrays that are in the “Cell Data” inside an ImageGeometry or RectGrid Geometry, the dimensions will be in reverse order from the |
DataArray<XXXXX>
The value of the ObjectType
HDF5 attribute will have the numeric type encoded in the name. For example if the DataArray represents 32 bit floating point values, then the actual string will show up as DataArray<float32>
. Here are the possibilities:
DataArray<uint8>
DataArray<int8>
DataArray<uint16>
DataArray<int16>
DataArray<uint32>
DataArray<int32>
DataArray<uint64>
DataArray<int64>
DataArray<float32>
DataArray<float64>
Name |
Type |
Notes |
---|---|---|
ComponentDimensions |
N x UINT64 |
Dimensions of the components of the array. |
TupleDimensions |
N x UINT64 |
Dimensions of the contained arrays from fastest to slowest. Note that for data arrays that are in the “Cell Data” inside an ImageGeometry or RectGrid Geometry, the dimensions will be in reverse order from the |
ImageGeometry
Name |
Type |
Notes |
---|---|---|
_DIMENSIONS |
3 x UINT64 |
Regular Grid Dimensions as XYZ |
_ORIGIN |
3 x Float32 |
Origin as XYZ |
_SPACING |
3 x Float32 |
Spacing of each axis as XYZ |
Cell Data ID |
Scalar UINT64 |
Unique ObjectId of the Cell Data AttributeMatrix |
Vertex Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
VertexGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
The Vertex Geometry HDF5 Group should contain at the minimum 2 Data Arrays:
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
Edge Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
EdgeGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
Edge List ID |
UINT64 |
ObjectId of the SharedEdgeList data array |
Edge Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the edges |
The Edge Geometry HDF5 Group should contain at the minimum 2 Data Arrays that represent the vertices (Nodes) and faces (Elements) of the Edge Geometry. Shown below are the default names that are used. The arrays can be named differently by the user.
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
SharedEdgeList |
2 x UINT64 |
Each set represents the 2 vertices of the Edge where each value is an index into the SharedVertexList |
Triangle Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
TriangleGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
Face List ID |
UINT64 |
ObjectId of the SharedTriangleList data array |
Face Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the triangle faces |
The Triangle Geometry HDF5 Group should contain at the minimum 2 Data Arrays that represent the vertices (Nodes) and faces (Elements) of the Triangle Geometry. Shown below are the default names that are used. The arrays can be named differently by the user.
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
SharedFaceList |
3 x UINT64 |
Each set represents the 3 vertices of the triangle where each value is an index into the SharedVertexList |
Quad Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
QuadGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
Face List ID |
UINT64 |
ObjectId of the SharedFaces data array |
Face Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the Quad faces |
The Quad Geometry HDF5 Group should contain at the minimum 2 Data Arrays that represent the vertices (Nodes) and faces (Elements) of the Quad Geometry. Shown below are the default names that are used. The arrays can be named differently by the user.
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
SharedFaceList |
4 x UINT64 |
Each set represents the 4 vertices of the triangle where each value is an index into the SharedVertexList |
Tetrahedral Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
QuadGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
Cell List ID |
UINT64 |
ObjectId of the SharedCell data array |
Cell Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the Tetrahedral cells |
The Tetrahedral Geometry HDF5 Group should contain at the minimum 2 Data Arrays that represent the vertices (Nodes) and cells (Elements) of the Tetrahedral Geometry. Shown below are the default names that are used. The arrays can be named differently by the user.
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
SharedCellList |
4 x UINT64 |
Each set represents the 4 vertices of the triangle where each value is an index into the SharedVertexList |
Hexahedral Geometry
The HDF5 Group contains the following required attributes:
Name |
Type |
Notes |
---|---|---|
ObjectType |
STRING |
QuadGeom |
Vertex List ID |
UINT64 |
ObjectId of the SharedVertexList data array. |
Vertex Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the vertex |
Cell List ID |
UINT64 |
ObjectId of the SharedCell data array |
Cell Data ID |
UINT64 |
ObjectId of the Attribute Matrix that holds data arrays geometrically located at the Hexahedral cells |
The Hexahedral Geometry HDF5 Group should contain at the minimum 2 Data Arrays that represent the vertices (Nodes) and cells (Elements) of the Hexahedral Geometry. Shown below are the default names that are used. The arrays can be named differently by the user.
Name |
Type |
Notes |
---|---|---|
SharedVertexList |
3 x Float32 |
Each set represents the XYZ coordinate of a vertex |
SharedCellList |
8 x UINT64 |
Each set represents the 8 vertices of the triangle where each value is an index into the SharedVertexList |