Synthetic Microstructure Generation¶
This tutorial uses a Prebuilt Pipeline to explain the concepts behind sythentic microstructure generation in DREAM.3D. Begin by finding the Prebuilt Pipeline (01) Single Cubic Phase Equiaxed in the Prebuilt Pipelines View and double click on it. This will open that Pipeline in a new DREAM.3D window. In order to generate a synthetic microstructure, DREAM.3D needs a set of statistics that define the stochastic properties of the structure. In this case, the statistics have been generated synthetically using the StatsGenerator Filter. To learn how to generate your own microstructure statistics, visit the StatsGenerator documentation.
The (01) Single Cubic Phase Equiaxed Prebuilt Pipeline reads in a statistics file that was distributed with DREAM.3D. This simple set of statistics defines a single phase microstructure with equiaxed grains, cubic crystal symmetry, and generally random texture. To generate a synthetic microstructure that represents an instance of these statistics, simply click the Go button. After the Prebuilt Pipeline has finished, it will write a .dream3d file and a .xdmf file to the Data/Output directory. The synthetic structure can be visualized by opening the .xdmf file in ParaView. Note that if you re-run the Prebuilt Pipeline, you will overwrite your previous files and generate a completely new synthetic microstructure. The microstructure is different each time running the Pipeline because the synthetic structure generation process is inherently stochastic. The resulting microstructure is locally different on each run, but its descriptive statistics are indistinguishable each time.
The Synthetic Structure Generation Process¶
Assuming you have obtained a set of microstructure statistics (either by using StatsGenerator or by some other means), the first step of generating a synthetic structure is to initialize the synthetic volume. During this process, you will set the overall dimensions, resolution, and origin of the synthetic microstructure. Currently, all synthetic microstructures DREAM.3D creates will be instantiated on regular grids. Thus, the Geometry associated with a synthetic volume will be an Image Geometry. In order to create the synthetic microstructure, DREAM.3D will pack Features of a pre-determined shape type into the intialized volume. Think of it like tossing spheres into a box and swapping them about until they fill as much space as possible. During this process DREAM.3D will keep track of statistics such as the distribution of Feature sizes, shapes, neighbors, etc., to ensure that the resulting packed volume matches the morphological statistics that were used as inputs.
In order to start this swapping process, DREAM.3D will need to know what types of shapes need to be packed. Shape types are shared by each Ensemble; in the materials vernacular, these would be termed the phases of the structure. For example, if you have a single phase structure (such as for the (01) Single Cubic Phase Equiaxed Prebuilt Pipeline), then there is one Ensemble, and you will need to select one shape type class. Each Ensemble must have its shape type set, and every Ensemble can have a different shape type.
After setting up the shape types, the next step is to pack the primary phases of the microstructure. This process is the main step in creating a synthetic structure: it will actually pack all the shape types into the volume, swap them about until they pack nicely and meet the required statistics, and then get those shapes onto the Image Geometry by assigning every voxel a Feature Id. The Filter that accomplishes this task is complex, and has a number of options, so it is encouraged to read its documentation to learn more about how it works. But what does the primary part of pack primary phases mean? The primary phases can be thought of as those phases whose Features are the main components of the microstructure from a structural standpoint. Something that would not be a primary phase might be a precipitate phase, or a matrix phase. For example, if you want to create a two phase structure that has precipitates sitting at the boundaries of the primary phase, you would want to pack the primary phase and then insert precipitates on top of it. If you want to make a structure that has a contiguous matrix phase with some other Features thrown in, you would want to establish that matrix phase and then insert the next phases as precipitates. DREAM.3D comes with Prebuilt Pipelines that highlight these major types of microstructure creation.
After creating the morphological portion of your microstructure, you may want to match its crystallography to a texture. For example, StatsGenerator allows you to define an orientation distribution function (ODF) that can be fit into your synthetic microstructure. Again, you can define your ODFs individually for each Ensemble. You can even define your misorientation distribution function (MDF) and your axis ODF, which is particularly useful if you are creating Features with high aspect ratios that you want aligned along some direction.
A synthetic structure will be a "perfect" structure with no inherent defects or noise. For example, a single orientation will be associated with each Feature. If you want to make a microstructure that better resembles what may be measure in a experiment, consider adding noise to the result. DREAM.3D has a couple filters that help add noise in general or add some noise to orientations. You may also want to swap around the orientations of your Features to add more randomness.
The ability to control the morphological and crystallographic statistics of a structure on a phase by phase basis enables the user to create a huge variety of synthetic microstructures with great fidelity. This power can also be a problem, however, since it is possible to create a set of statistics that cannot be packed in any way that satisfies all boundary conditions. The DREAM.3D Filters that participate in the synthetic building process are aware of this, and will silently stop their attempts to fit data if they find it simply cannot be done. This means that it is crucial to validate that you got the statistics you wanted after creating a synthetic microstructure. Luckily, DREAM.3D has all the tools necessary to quantify those statistics and allow a user to confirm they got what they expected.
To learn more about the specific tools involved in synthetic building, visit the Synthetic Building section of the Filter Documentation. Also check out the Statistics and Orientation Analysis sections for more information on Filters that can help anlayze synthetic microstructures.
Generating Synthetic Structures from Experimental Data¶
DREAM.3D has all the necessary tools to compute the necessary statistics for synthetic building directly from imported experimental data. For example, you can compute the various morphological and crystallographic statistics on a reconstructued EBSD volume. In order to use the various synthetic building tools, you must create arrays of Statistics Objects and Phase Types. These arrays represent the fundamental inputs necessary to initialize the synthetic volume and start the synthetic microstructure generation process. To create these arrays, you should use the Generate Ensemble Statistics Filter. This Filter will compile a set of pre-computed values into the necessary Statistics Objects that are required for synthetic building. Under the hood, the Filter will fit sets of data to user-chosen statistical distributions. Additionally, the user must also select the Ensemble Attribute Matrix that represents the collection of phases that are to be packed, as well as the particular phase type for each Ensemble. The possible phase types that are currently supported are Primary, Precipitate and Matrix.
In order to utilize a complete synthetic building Pipeline that matches both the morphological and crystallographic properties of a volume, both the Calculate Morphogical Statistics and the Calculate Crystallographic Statistics checkboxes must be enabled. It is possible to build a synthetic structure with just morphological statistics, but then no texture information can be built into the synthetic structure. The Generate Ensemble Statistics Filter requires a large number of input arrays that are generated from other various analysis Filters. A Prebuilt Pipeline named (06) SmallIN100 Synthetic has been provided that shows the necessary Filters that must be run to generate the inputs for the Generate Ensemble Statistics Filter. This Prebuilt Pipeline uses the reconstructed Small IN100 data set as the input experimental microstructure, but the process is the same for any generic experimental structure.