New to Dream3D: Synthetic Microstructure and Simulations

2,723 views
Skip to first unread message

Daksh Arora

unread,
Jun 14, 2016, 1:37:04 AM6/14/16
to dream3d-users, Ravi Sastri Ayyagari V S

Greetings from NUS,


I am Daksh Arora,a 3rd-year undergraduate pursuing Mechanical Engineering at IIT Delhi and doing a research internship at NUS.I am using the Dream 3D software for my research project at NUS. As I am new to this and don’t have much background in computer science to understand the data structure part, therefore I am facing many problems.My bigger motive is to generate synthetic microstructures: single/double phased, Bimodal Distribution for simulation purposes in Abaqus. 


I have been successfully able to generate the microstructures using the tutorials but faced problems when I tried to use my own statistics generated from Stats generator. I request you can provide me a detailed module and more tutorials for using the Stats generator and also the particular filters that are being used for generating the output file. Also, I had some general questions as well,

 

Questions about Stats Generator.

1.     How can I stitch two different type of microstructures; i.e. Equiaxed for 0<x<30 and Rolled for 30<x<60?( E.g. is attached below)

2.     Can I change the distribution from Log Normal to some other?

3.     Once a .dream3D file is saved generated via Stats Generator, How can I edit it?

4.     If I have the grain size distribution data and orientation data in .xl (excel) format how can I use it to generate synthetic microstructures? How can we generate the statistics apart from using the stats generator? What is the input file that dream3D expects?

5.     What is exactly meant by bin? How can I change the number of grains that I want to visualize in my synthetic structures?

6.     After choosing the distribution, (Mu and Sigma), Number of bins are pre decided and so the Omega3, Neighbor distribution and Shape? Can I edit all the three of them? How is it decided at the first place?

7.     What is meant by Omega3 distribution and the parameter which it takes, like bin, alpha, and beta? Same question for Shape and Neighbor distribution.

8.     In ODF Tab Default Euler angles are 0,0,0; which means no texture but it is not that so. What is the significance of weight and sigma in this?

9.     What is the difference between ODF tab and Axis ODF tab?

 

Questions about filters.

1.     Currently, I am using pre-built filters for generating synthetic microstructures but in future, I will like to alter with the filters for specific data sets for e.g.

a.     How can I isolate particular grains (may be 2 or 3) for crack propagation studies?

b.     How can I section a microstructure? (Not just visualization in Paraview)

c.     How can I create a void in the microstructures?

2.     I used the pre-built pipeline to generate quick mesh microstructure, but quick mesh has only triangular mesh but I wish to create a different kind of meshes as well, is there any filter to aid that?

3.     Any filter relating to FFT?

4.     How can I generate relevant statistics from the synthetic microstructures?


Questions about Simulation

1.     How can I create an input file for Abaqus?

2.     Can the output file be saved in the .stl file that can be directly used for simulations?


I am sorry for asking so many basic questions and I request you to please reply as soon as possible, as I am stuck on generating synthetic microstructures since past two weeks and I will be thankful for any help from your side.


Looking forward to your reply.


Regards

Daksh Arora


Screen Shot 2016-06-14 at 1.32.02 PM.png

Sean Donegan

unread,
Jun 14, 2016, 9:52:32 AM6/14/16
to dream3d-users
Hi Daksh,

Before going into the details, please make sure to read the Synthetic Microstructure Generation tutorial in the DREAM.3D help manual.  This tutorial can be accessed in DREAM.3D by opening the Help > DREAM.3D Help menu and navigating to the tutorials section.  The tutorial provides a high-level overview of how synthetic building works in DREAM.3D.  I also recommend reading the section on StatsGenerator in the Auxiliary Tools section, also in the help manual.  Here are some specific answers to your questions:

1. DREAM.3D cannot currently vary the microstructure statistics within the packing volume itself.  The structure in your attached figure was created by making four different synthetic microstructures and then "stacking" them using code outside of DREAM.3D.  However, DREAM.3D does now have a filter, called "Append Z Slice (Image Geometry), that can do this operation.  This filter will "stack" two grids on top of each other (along the z axis), as long as their x and y voxel extents are the same.  

2. No, the only size distribution type that is currently supported is lognormal.

3. You can edit a DREAM.3D file created in StatsGenerator within StatsGenerator itself; simply go the File > Open menu in StatsGenerator and open your saved file.  You can then make edits to the statistics and re-save the file, or save a new file.

4. To make a synthetic structure, DREAM.3D requires a "StatisticsObject".  There are only two ways the create such an object: using StatsGenerator, or running the "Generate Ensemble Statistics" filter.  The "Generate Ensemble Statistics" filter is intended to create a StatisticsObject by consolidating data from an experimental 3D microstructure that has been reconstructed in DREAM.3D.  If you have a set of orientations, you can directly import them into StatsGenerator by using the "Bulk Load Weights and Spreads" option in the ODF tab.  The input file can be generated by running the "Write StatsGenerator ODF Angle File" in DREAM.3D, in which case you'd have to read your data into DREAM.3D using the "Import ASCII Data" filter.  Alternatively, you can create the file format yourself; the necessary format is shown in the help for the "Write StatsGenerator ODF Angle File" filter.  StatsGenerator cannot currently import size distribution data.  I recommend fitting your size distribution data to a lognormal distribution and using the resulting mean and standard deviation as the values in StatsGenerator.

5. The "bins" describe how many parts the size distribution will be cut into for drawing statistics for the omega3, shape and neighbor distributions.  If you generate some default data in StatsGenerator, you should notice that the number of bins created in the size distribution tab matches the number of rows in the omega3, shape and neighbor distribution tabs.  Let's simplify the problem by using an example where the bin step size is increased enough to only have one bin.  In this case (after hitting "Create Data" to update the other tabs), there will only be one type of omega3, shape and neighbor distribution.  This means that every grain, regardless of its size, will have the same shape and neighbor distribution.  The issue here is that grains usually have different shapes and particularly neighbor distributions depending on their sizes.  Now decrease the bin step size until there are two bins.  In this case (again after clicking "Create Data"), grains that fall into the first size bin will have the shape and neighbor distributions corresponding to the first row of values and grains that fall into the second size bin will shape and neighbor distributions corresponding to the second row of values.  This allows grains to have different omega3, shape and neighbor distributions depending on their size.  Note that you can manually edit the parameters for the omega3, shape and neighbor distributions at any time, but once you do you will not be able to go back and change size statistics; if you need to change size statistics at that point you will have to start over.  The number of grains in a created microstructure depends on both the average for the size distribution and the voxel extents and voxel resolution used in the "Initialize Synthetic Volume" filter.  For a given voxel grid and resolution, increasing the average grain size reduces the number of total grains and decreasing the average grain size increases the number of total grains.  For a given voxel resolution and average grain size, increasing the voxel extents increases the number of total grains and decreasing the voxel extents decreases the number of total grains.  For a given voxel extents and average grain size, making the resolution number larger (i.e., making the voxel edge length "coarser") increases the number of total grains, while making the resolution number smaller (i.e., making the voxel edge length "finer") decreases the number of total grains.

6. You can change the number of bins by changing the bin step size in the size distribution tab (check above for an explanation of the size bins).  If you change the number of bins, make sure to re-click "Create Data" to update the omega3, shape and neighbor distribution tabs.  You can edit any of the parameters (not the bins steps, though) in the omega3, shape and neighbor distribution tabs by double-clicking on the tables and typing your values.  This should also update the plots, which are useful for visualizing how the distributions are changing.  The default numbers for omega3 and shape are drawn from random distributions that approximate equiaxed grains for all grain sizes.  The neighbor distributions default to slightly increasing average numbers of features as the grain size increases.

7. The omega3 and shape distributions both use the beta distribution, which is useful for modeling random variables that represent proportions.  See the link for a thorough description of the alpha and beta parameters in this distribution.  Both the omega3 and shape distributions effect the general shape of the grains.  The shape distributions vary shape by changing the ratios of the C and B axes of a grain to its A axis.  For example, if the B/A and C/A ratios are both close to 0.1, then the grains will have aspect ratios of 10 x 1 x 1.  Omega3 only affects grains whose shape types are superellipsoids (chosen when running the "Establish Shape Types" filter in DREAM.3D); it will have no effect if a shape type other than superellipsoid is chosen.  Omega3 provides more fine control over the shapes of grains.  I have attached an image that shows how the omega3 value affects shape.  To learn the mathematical theory behind omega3, please see the references listed in the help for the "Find Feature Shapes" filter.  The neighbor distributions effect the number of grains on average that are "near" other grains (specifically, within one diameter).  The neighbor distributions are modeled using the standard lognormal.  For omega3, shape and neighbor distributions, it is usually a good idea to reference the plots in StatsGenerator to understand how any modifications made to the parameters in the tables affects the sampling distributions.

8. Euler angles of 0,0,0 are not a "no texture" situation; a completely random texture would be to have no angles in the list (you can add and remove orientations using the plus and x signs in the ODF tab).  Entering any set of angles into the ODF tab will bias the ODF to those orientations, even the 0,0,0 orientation.  The amount it is biased depends on the weight and spread numbers.  The weight affects how strongly the given orientation is manifest in the ODF.  The exact mathematical relationship requires an involved explanation, but the short version is simply that increasing the weight increases the prevalence of that orientation in the ODF.  You can visualize this effect by clicking "Update ODF" and going to the "Pole Figures" tab to see the pole figures for the given ODF.  The spread value affects how much that orientation is "smeared out".  Having a spread of 1 means that the orientation is centered on nearly the exact value you specify.  Increasing the spread will have the effect of spreading out the orientation sampling around the specific orientation entered.  Again, you can see this effect in the plotted pole figures.

9. The ODF affects the crystallographic orientations of the grains, whereas the axis ODF affects the morphological orientation of the grains.  In other words, the axis ODF varies how the grains A, B and C axes are aligned with the x, y, and z axes of the packing volume.

Now for filters:

1. a. You can extract out specific grains by running the "Extract Flagged Features (Rogues Gallery)" filter.  First, you need to threshold out those features you care about using the "Threshold Objects" filter, which will create a boolean mask based on a set of criteria.  For example, you could create a mask where all features greater than a certain size are flagged as true.  Then, running the "Extract Flagged Features (Rogues Gallery)" would crop out each grain flagged as true and save it in a new geometry.  

1. b. You can crop out specific portions of a structure, even just individual slices, using the "Crop Geometry (Image)" filter.

1. c. You cannot create truly "empty" regions of a voxelized mesh; you can however pack a "precipitate" phase into your microstructure and then consider any grain with that phase Id as being a void in an outside simulation using the "Insert Precipitate Phases".  You can also manually insert these "precipitates" using the "Already Have Precipitates" functionality of that filter, which would allow you to place voids at specific locations.  See the documentation for the "Insert Precipitate Phases" filter for more information.

2. DREAM.3D can only create two kinds of meshes: triangular surface meshes and structured hexahedral volume meshes (standard "blocky" voxel grids).  We would like to add other functionalities here, but there is no timeline for this as of yet.

3. There is not filter in DREAM.3D right now that can compute Fourier transforms.  There is a filter that has FFT in its name, but this filter is just used to write a file format for a specific kind of simulation code.

4. There are a large number of filters that can compute various statistics.  Please take a look at the filter in the Statistics plugin, and also those filters showcased in the Statistics prebuilt pipelines.

And finally simulation:

1. There are two filters that can create Abaqus input files: the "Abaqus Hexahedron Writer" filter and the "Write Abaqus Surface Mesh" filter.  The former filter writes a hexahedral volume mesh ("block" elements, the C3D8 element type).  The latter filter writes a shell mesh from a triangulated surface mesh.

2. Yes, the filter "Write STL Files from Triangle Geometry" will write an STL file for each grain.  Note that first you must surface mesh your microstructure.

hope that helps,

-Sean
Omega3Range.png

Daksh Arora

unread,
Jun 15, 2016, 5:07:42 AM6/15/16
to dream3d-users
Thanks a lot for such a prompt reply. I am sure this will help me a lot, thanks again for it.

I will get back to you if I face any other problems or have any other doubts.

Regards
Daksh Arora

Daksh Arora

unread,
Jun 16, 2016, 4:05:01 AM6/16/16
to dream3d-users
Greetings,

I am facing problems while using the “Append Z Slice” filter, for instance; I was trying to Stack the (01) Single Cubic Phase Equiaxed and (01) Single Cubic Phase Rolled together."Append Z Slice” takes the input and destination’s cell data. In a pipeline, I am unable to create both the input and destination’s cell data together as I could not read two files simultaneously in the same pipeline and use the StatsGeneratorDataContainer twice.

I request you to please help me with the procedure. 

Looking forward to your reply.

Thanks and Regards
Daksh Arora

On Tuesday, June 14, 2016 at 1:37:04 PM UTC+8, Daksh Arora wrote:

Michael Jackson

unread,
Jun 17, 2016, 9:23:10 AM6/17/16
to Daksh Arora, dream3d-users
Daksh,
You will need to read the first file then use the "Rename
DataContainer" filter to rename the DataContainer to something of your
choosing. Then read the second synthetic volume, then use the "Append Z
Slice" filter.


--
Mike Jackson [mike.j...@bluequartz.net]


Daksh Arora wrote:
> Greetings,
>
> I am facing problems while using the “Append Z Slice” filter, for
> instance; I was trying to Stack the (01) Single Cubic Phase Equiaxed and
> (01) Single Cubic Phase Rolled together."Append Z Slice” takes the input
> and destination’s cell data. In a pipeline, I am unable to create both
> the input and destination’s cell data together as I could not read two
> files simultaneously in the same pipeline and use the
> StatsGeneratorDataContainer twice.
>
> I request you to please help me with the procedure.
>
> Looking forward to your reply.
>
> Thanks and Regards
> Daksh Arora
>
> On Tuesday, June 14, 2016 at 1:37:04 PM UTC+8, Daksh Arora wrote:
>
> Greetings from NUS,
>
>
> I am Daksh Arora,a 3rd-year undergraduate pursuing Mechanical
> Engineering at IIT Delhi and doing a research internship at NUS.I am
> using the Dream 3D software for my research project at NUS. As I am
> new to this and don’t have much background in computer science to
> understand the data structure part, therefore I am facing many
> problems.*My bigger motive is to generate synthetic microstructures:
> single/double phased, Bimodal Distribution for simulation purposes
> in Abaqus. *
> --
> You received this message because you are subscribed to the Google
> Groups "dream3d-users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to dream3d-user...@googlegroups.com
> <mailto:dream3d-user...@googlegroups.com>.
> To post to this group, send email to dream3...@googlegroups.com
> <mailto:dream3...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/dream3d-users/a8b901bd-3405-4af3-b932-b1d00c502633%40googlegroups.com
> <https://groups.google.com/d/msgid/dream3d-users/a8b901bd-3405-4af3-b932-b1d00c502633%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.

Daksh Arora

unread,
Jun 22, 2016, 4:53:11 AM6/22/16
to dream3d-users
Thanks a lot for your reply. I have tried using the rename data container filter but I am still not able to get the required microstructure and facing some problems.
  1. I used the “Rename Data Container” filter(I renamed the StatsGeneratorDataConatiner) before reading the second file. During reading the file it selected the array from the input file which was StatsGeneratorDataContainer only.Is it correct?
  2. Do I need to rename the Attribute array and Matrix as well for every data container?
  3. Do I also have to give new names to the generated objects by the filter for reading the second file?

For the simulations,

  1. I used Write Abaqus Surface Mesh but it generated the Surface Mesh as the name suggests so I used "Abaqus Hexahedron Writer” filter to generate the volume mesh as it’s required for my study.
  2. Is there any way to control the number of elements when generating the mesh?Also, I wish to coarse the mesh; I have read through the group “ Change Resolution” filter can actually do it, is there any other way for it?

Thanks a lot already for the help and such prompts replies. 

Regards

On Tuesday, June 14, 2016 at 1:37:04 PM UTC+8, Daksh Arora wrote:

Daksh Arora

unread,
Jun 23, 2016, 4:52:27 AM6/23/16
to dream3d-users
Good afternoon,

Well, I was able to figure out the problem and was able to get the stitched microstructure as attached below.Thanks for the guidance.

Regards 

Daksh Arora
Research Undergraduate
Faculty of Engineering
National University of Singapore

--
You received this message because you are subscribed to a topic in the Google Groups "dream3d-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dream3d-users/pYyYs0FyN7s/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dream3d-user...@googlegroups.com.
To post to this group, send email to dream3...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dream3d-users/6c465e61-a69c-4707-ad37-266ef3fe1234%40googlegroups.com.
Try4.png

Daksh Arora

unread,
Jun 29, 2016, 5:14:30 AM6/29/16
to dream3d-users
Greetings,

I was able to get the stitched microstructure using the filters but my research focuses on realizing the realistic steel weld microstructures, a real microstructure does not have an abrupt change in the microstructure like we got using appending but a gradual change in the distribution in size or shape etc. Is there way through Dream3D or external MATLAB coding that make the stitched microstructures more realistic?

I came across about Localized Potts Model regarding this in a literature,does dream 3D has the capability to incorporate it?(I am attaching the screen shot for better visualization)

Also, is there any way to make the synthetic volume of cylindrical shape?

Looking forward to your reply and thanks for your assistance.

Regards
Daksh Arora


On Tuesday, June 14, 2016 at 1:37:04 PM UTC+8, Daksh Arora wrote:
Screen Shot 2016-06-29 at 5.10.57 PM.png

Sean Donegan

unread,
Jul 25, 2016, 2:29:06 PM7/25/16
to dream3d-users
Hi Daksh,

Currently, the Potts model code that was used to "roughen" up the stacked microstructure interfaces is not in DREAM.3D.  I would like to add it in at some point, but there's not time table for when this would happen just yet.  The implementation is a fairly straightforward stochastic Potts model, restricted to the layers near the interfaces.  You could export the microstructure information using something like the export ASCII data filter, then read it into an external program written in MATLAB or Python to perform the Potts model.

Explicitly cylindrical structures cannot be made currently, since DREAM.3D uses a rectilinear grid to perform the packing process.  However, you can use the "Use Mask" option in the packing filters to approximate a non-rectangular shape.  This option will only pack grains where the supplied mask array is true.  You could create a mask array in a volume that is true inside a cylinder, then use this mask in the packing filters, and grains will only be placed inside the cylinder.  There are no DREAM.3D filters that can currently initialize data in arbitrary shapes like cylinders, but you could create the array outside DREAM.3D and read it in using a the Import ASCII Data filter.

hope that helps,

-Sean 


On Tuesday, June 14, 2016 at 1:37:04 AM UTC-4, Daksh Arora wrote:
Reply all
Reply to author
Forward
0 new messages