Skip to main content

DPF known types

Inputs or outputs of DPF operators and workflows are limited to the following types known by the framework.

Standard types

DPF understands most standard types out-of-the-box. The following are standard types found in the current standard installation:

  • bool
  • char
  • uint32
  • uint64
  • int32
  • double
  • string
  • vector of bool
  • vector of char
  • vector of double
  • vector of float
  • vector of int32
  • vector of string

DPF basic types

The following is an exhaustive list of available DPF types.

Any

The any type is the generic type of DPF. It allows to share on object without an explicit type. Most DPF types can be cast as or from an Any which is useful when type enforcement is unnecessary.

Data processing

Operator

The operator is the building block of DPF. It holds data processing logic and generates outputs from its inputs when executed.

Workflow

The workflow is a connected set of operators. It itself has inputs and outputs, and allows to package and share complex combinations of operators.

File management

Data sources

The data_sources holds information on files of interest such as:

  • their path
  • their associated namespace
  • their associated key (usually the file extension)

Streaming

The streams_container is the result of opening a stream to files in a data_sources. It enables streaming to and from the files and handles caching of data requests to the files.

The use of a streams_container is highly recommended whenever possible to benefit from IO performance features.

Metadata

The following DPF objects hold light-weight data (metadata) relative to other DPF types.

Field metadata

The field_definition holds metadata relative to a field.

Mesh metadata

The mesh_info holds metadata relative to a meshed_region.

Only available for CFF and LSDYNA.

Result file metadata

The result_info holds metadata relative to available results in files from a data_sources.

Data supports

Supports are entities dedicated to holding information about the model itself.

Every field requires a support for DPF to understand what its data is related to.

This concept allows DPF to manage simulation data efficiently.

Mesh

The meshed_region holds information relative to the mesh of the simulation model.

It gives access to several fields of data such as:

  • the mesh connectivity
  • the node coordinates
  • the element types

Time and frequency

For time and pseudo time based simulations or for frequency based simulations, the time_freq_support holds information about the simulation steps and sub-steps, time-steps, or mode/harmonic frequencies.

Cyclic

For cyclic simulation models, the cyclic_support holds information about the number of sectors and the number of stages.

Filtering

When handling large amounts of simulation data, you can select a subset of the data and filter it down to the data of interest to the analysis.

In the DPF ecosystem this is called scoping the data, and is managed with scoping entities.

Scoping

A scoping describes a typed list of IDs.

It has a location, which defines the type of entity the IDs apply to (nodes, elements, time-steps, parts...), and a list of ids.

It allows you to select and filter data when given as input to operators, or data description when produced as output.

Each field data storage type has a scoping associated to it, describing the subset of its support that the data applies to. The data in a field is ordered the same way as the IDs in the scoping.

Data storage

The following DPF types allow you to store and describe data.

Data map

The generic_data_container allows you to store any type known to DPF as a property with a given name.

Data tree

The data_tree allows you to store DPF known types as named attributes of a data tree with sub-trees.

Data arrays

The following types represent arrays of data.

The data of a field is always associated to a scoping (entities associated to each value) and support (subset of the model where the data is), making the field a self-describing piece of data.

Example 1: a field that describes the evolution in time of the static pressure at a given face of a fluid model has a scoping comprised of the time step ids where the pressure is defined and a time-frequency support that stores the relationship between time ids and time values.

Example 2: a field that describes the evolution in space of the stress at a given body of a structural model has a scoping comprised of the element ids where the stress is defined and a meshed_region support that contextualizes these element ids.

Doubles

The field represents an array of double values.

Integers

The property_field represents an array of integer values.

Strings

The string_field represents an array of string values.

Custom

The custom_type_field represents an array of values of a custom type as defined by the unitary type of the field.

Collections

DPF allows you to group DPF types in labeled collections.

A DPF collection has a set of associated labels, for which each entry has a value. This allows you to distinguish between entries and retrieve them.

Label space

The label_space is a map of ("label": integer value) couples used to target a subset of entries in a collection.

For example, if a collection has labels material and part, each entity in the collection has an associated unique map {"material": X, "part": Y}.

A label_space such as {"material": X, "part": Y} then targets a single entity in the collection, whereas one such as {"material": X} targets all entries of material "X".

Base collection

The collection is the generic type for collections of DPF entities.

Collection of any

The any_collection is a collection of Any objects.

Collection of fields of custom type

The custom_type_fields_container is a collection of custom_type_field instances.

Collection of fields of doubles

The fields_container is a collection of field instances.

Collection of fields of integers

The property_fields_container is a collection of property_field instances.

Collection of meshes

The meshes_container is a collection of meshed_region instances.

Collection of scopings

The scopings_container is a collection of scoping instances.

Unit systems

Some operators take in a unit system, defined using the UnitSystem type.