30
S. P. Donegan and M. A. Groeber
Fig. 5 The dependency tree for DREAM.3D. Items in blue are open-source dependent libraries.
Note that this modular design allows for libraries to be added or swapped where necessary, granting
flexibility to the overall software architecture
characterized by filters, self-contained functions that perform a unit operation on the
data structure state. Filters may be sequenced to form a pipeline, the fundamental
execution unit of a SIMPL workflow. SIMPL also allows for extensions via a plugin
interface. Users may add their own functionalities to SIMPL by adhering to the
plugin architecture. DREAM.3D constitutes an open-source collection of SIMPL
plugins tailored for analysis of materials data, along with facilities for processing
materials-specific information [33, 51]. Additionally, DREAM.3D utilizes a graphical front end called SIMPLView [52]. All the various projects associated with
DREAM.3D are distributed under the permissive 3-clause BSD license. This opensource development has enabled collaborations and contributions across academia,
government, and industry.
Figure 5 shows the overall software architecture of DREAM.3D, including
dependent libraries. Dependencies generally progress up from the bottom of Fig. 5.
SIMPL makes heavy use of the Qt library for various functionalities, such as
container objects, string representations, and platform-agnostic file system access
[53]. Additionally, Qt provides the facilities for producing the front-end graphical
interface in SIMPLView. SIMPL utilizes the HDF5 file format and library for data
serialization [54]. Eigen is leveraged for highly efficient linear algebra and matrix
manipulations [55]. Optionally, Intel’s Threading Building Blocks provides threadbased parallelism [56], while pybind11 automatically creates Python bindings for
SIMPL classes and filters [57]. For all projects, CMake is used to enable easy crossplatform building [58].
S. P. Donegan and M. A. Groeber
Fig. 5 The dependency tree for DREAM.3D. Items in blue are open-source dependent libraries.
Note that this modular design allows for libraries to be added or swapped where necessary, granting
flexibility to the overall software architecture
characterized by filters, self-contained functions that perform a unit operation on the
data structure state. Filters may be sequenced to form a pipeline, the fundamental
execution unit of a SIMPL workflow. SIMPL also allows for extensions via a plugin
interface. Users may add their own functionalities to SIMPL by adhering to the
plugin architecture. DREAM.3D constitutes an open-source collection of SIMPL
plugins tailored for analysis of materials data, along with facilities for processing
materials-specific information [33, 51]. Additionally, DREAM.3D utilizes a graphical front end called SIMPLView [52]. All the various projects associated with
DREAM.3D are distributed under the permissive 3-clause BSD license. This opensource development has enabled collaborations and contributions across academia,
government, and industry.
Figure 5 shows the overall software architecture of DREAM.3D, including
dependent libraries. Dependencies generally progress up from the bottom of Fig. 5.
SIMPL makes heavy use of the Qt library for various functionalities, such as
container objects, string representations, and platform-agnostic file system access
[53]. Additionally, Qt provides the facilities for producing the front-end graphical
interface in SIMPLView. SIMPL utilizes the HDF5 file format and library for data
serialization [54]. Eigen is leveraged for highly efficient linear algebra and matrix
manipulations [55]. Optionally, Intel’s Threading Building Blocks provides threadbased parallelism [56], while pybind11 automatically creates Python bindings for
SIMPL classes and filters [57]. For all projects, CMake is used to enable easy crossplatform building [58].
