DREAM3D Git Repository Organization

The DREAM.3D project is organized into four separate repositories. These repositories are hosted at GitHub.com/bluequartzsoftware. The repositories are the following:

  • CMP
  • SIMPL
  • SIMPLView
  • DREAM3D

As we discuss the various repositories, we are going to start from the very bottom and work our way up to the top.

CMP (http://github.com/bluequartzsoftware/CMP)

This repository holds commonly used CMake codes that are shared among the various projects and repositories. This is the lowest level repository.


SIMPL Repo (http://github.com/bluequartzsoftware/SIMPL)

The SIMPL repo holds the base SIMPLib and H5Support libraries that are the foundation of all the other projects. SIMPL allows the developer to utilize the DREAM.3D file format, read and write DREAM.3D files, create DataContainers, AttributeMatrix, DataArrays, and Geometries. In addition SIMPLib also has the plugin loading mechanism which allows the developer to create external plugins of their own specialized filters. In order to execute custom pipelines the SIMPL repo also includes the PipelineRunner application which is a command line driven program that can run pipelines based on the input from a pipeline file. In the figure below the yellow shapes represent libraries and applications built by the SIMPL repository where-as the purple colored shapes represent dependent libraries.


SIMPLView Repo (http://github.com/bluequartzsoftware/SIMPLView)

The SIMPLView repo holds the next higher level project. The SIMPLView project is the basic Pipeline viewer application that can load, edit, save and execute a pipeline (with the assumption that all necessary plugins and libraries are loaded). The application is Qt based and presents the user with a window that allows the ordering of the filters into a pipeline. The user can then execute the pipeline.

In the figure below the red shapes represent libraries and applications that are built by the SIMPLView project. Purple shapes represent additional dependencies that are needed for the compile.

The project also includes an application called DevHelper that can assist a developer in creating the skeleton code for an entire plugin or just a new filter within an existing plugin.


DREAM3D Repo (http://github.com/dream3d/DREAM3D)

The DREAM.3D repo holds the highest level project which brings together specific branding of the SIMPLView application and a set of plugins that are specific to processing 3D microstructure data or synthetically generating 3D microstructure data. In this project the developers have used a scheme where new sets of icons, images and splash screen images have been inserted into the SIMPLView build that lead to a newly named DREAM3D being created. This application has over 200 filters that can be used to import, export and process various types of data including specific filters for reconstructing and processing 3D Microstructure data. In addition libraries are also included for importing EBSD data from several vendors (EDAX, Oxford Instr. and Bruker) and dealing with Euler angles and their various representations.

In the figure below the blue shapes represent libraries and programs built by the DREAM.3D project. Purple shapes are dependent libraries and the greenish shapes are plugins that are included in the DREAM.3D project.


All Repositories

The figure below shows graphically the how each repository is related to the next lower level repository. When a developer first clones the top level DREAM3D repository or any of the lower level repositories the CMake code that is used to configure the code to compile will check to make sure that any of the dependent repositories are also available and if not CMake will attempt to clone those repositories for the developer.