Import STLs to Create a Microstructure

327 views
Skip to first unread message

Elise Baribault

unread,
Feb 13, 2021, 4:04:31 PM2/13/21
to dream3d-users
Hello,

I am new to DREAM.3D. I have 67 STLs (a 67 grain microstructure) that I want to import to a DREAM.3D file. 

The filters I have in my pipeline are as follows:
Stats Generator
Import STL (x67)
Establish Shape Types
Pack Primary Phases
Find Feature Neighbors
Find Surface Features
Match Crystallography
Write DREAM.3D Data File

I initially had a "Initialize Synthetic Volume" filter instead of the "Import STLs", but now I need to use the STLs instead.

But I am getting several errors "The DataContainer 'SyntheticVolumeDataContainer' was not found in the DataContainerArray" or "The DataContainer Object with the specific name 'SyntheticVolumeDataContainer' was not available".

I am guessing this is because I switched from "Initialize Synthetic Volume" to "Import STLs" but I'm not sure how to fix this. Do I need an additional filter?

Thank you,
Elise

Michael Jackson

unread,
Feb 15, 2021, 11:51:19 AM2/15/21
to Elise Baribault, dream3d-users

What exactly do you want to do with the 67 grains that are represented as STL files? DREAM3D unfortunately isn’t setup to import (practically) that many STL files. You can certainly put 64 “Import STL File” filters into DREAM.3D but you will end up with 64 completely separate geometries instead of a single geometry that represents your microstructure.

 

The synthetic generators work on a voxel based geometry, not on a triangle based surface mesh geometry. Are you wanting to generate some Euler Angles for each grain? Are all 67 grains of the same phase?

 

--

Mike Jackson

--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/dream3d-users/5f925fa0-006c-4a45-a405-c8afb9cc910cn%40googlegroups.com.

Elise Baribault

unread,
Apr 6, 2021, 9:03:53 PM4/6/21
to dream3d-users
Hi Mike,

Yes, all the 67 grains are the same phase. The 67 STLs make up a single geometry/microstructure from someone else. I need to import it into DREAM.3D so I can change the voxel resolutions and make some more changes.

I have the .xdmf of the model. Can I import an .xdmf into ParaView?

Thanks,

Michael Jackson

unread,
Apr 9, 2021, 9:42:28 AM4/9/21
to Elise Baribault, dream3d-users

Dear Elise,

    You can import the xdmf into ParaView for visualization but that is about all ParaView is going to do for you. I’m not sure that importing all 67 STL is going to be very efficient. We didn’t take this kind of use case into account. You would have to run 67 different pipelines to import each STL file, resample the STL onto a voxel grid, then remesh and re-export the new STL?

 

Could you give a more complete explanation of your end goal for the pipeline, i.e., what are you exactly trying to generate? The primary use case for importing an STL file into DREAM.3D was to import a single STL File and use that as a mask for the synthetic generation to only generation grains within a specified area. Are you trying to use the STL files for their centroids to generate new grain shapes centered around the same centroid as the STL grains? More explanation would help us find a solution or point you towards additional external tools.

Elise Baribault

unread,
Apr 11, 2021, 9:24:56 PM4/11/21
to dream3d-users
Hi Mike,

Apologies, I meant to ask if I could import an .xdmf into DREAM.3D (not ParaView).

Essentially, the goal of my project is to compare voxel to FEA and I need to know how to increase the resolution without changing any of the geometry.

One student used DREAM.3D to generate a 67 grain model with dimensions 90x90x90. He then took those 67 STLs and is running some FEA simulations. The purpose of my DREAM.3D file is to change the resolution of the initial model. I need to change the resolution to be 64^3, 128^3, and 256^3. Then after changing the resolution, I'll use the "export Los Alamos FFT File" and use those text files in my own simulations.

Thank you,
Elise

Michael Jackson

unread,
Apr 12, 2021, 9:36:47 AM4/12/21
to Elise Baribault, dream3d-users

Dear Elise,

     I would suggest a slightly different approach.

 

Each time you run the synthetic microstructure filters you will generate a brand new microstructure so I would suggest starting off with the highest resolution model (256^3) first. Then down sample that model to 128^3 and 64^3. Then export each of those models to the FEA simulation.

 

XDMF files are just there to describe to ParaView what is in the .dream3d (HDF5) file. ALL of the data is in the .DREAM3D file. You can read a .dream3d file back into DREAM.3D. The problem is that DREAM.3D itself does not have many filters to really deal with the multiple STL Files. It was not a use case that we hit during the primary development of DREAM.3D. If your student has the original .dream3d file saved from their run of DREAM.3D then you can just import *that* file and run the “Change Resolution” filter on the original voxel structure. Then create a new mesh and reexport the STL files.

 

If the FEA target is Abaqus there is an “Abaqus Hexahedron Exporter” filter that might work better. The Triangle meshes that DREAM.3D produces can possible have artifacts that are difficult to remove and/or need some post processing time to fix.

 

--

Michael Jackson | Owner, President

      BlueQuartz Software

[e] mike.j...@bluequartz.net

[w] www.bluequartz.net

Elise Baribault

unread,
Apr 12, 2021, 10:00:56 AM4/12/21
to dream3d-users
Hi Mike,

So we are actually trying to avoid restarting. The other student has already run close to 30 FEA simulations, and would need to restart them all if we started off with the highest resolution model. I know that DREAM.3D generates a random geometry/feature IDs each time a pipeline is run, which is why we are trying to avoid running the pipeline again and just using the original STLs. But maybe restarting everything is the only way of doing things? I know you had mentioned 67 separate pipelines and then remesh?

Secondly, when you import a DREAM.3D file, does it also generate a random geometry or does it keep the same geometry of when it was originally run?

Thanks,
Elise

Michael Jackson

unread,
Apr 12, 2021, 1:26:26 PM4/12/21
to Elise Baribault, dream3d-users

Dear Elise,

     If the student saved the original DREAM3D file from the very first run then you are good to go. Loading the file doesn’t rerun any filters, just loads the data. So you can load the file, then run the “Change Resolution” filter and save as a NEW .dream3d file. Do that for each of the resolutions you want to generate. If the FEA is using the STL files as input then you will need to regenerate the Surface mesh inside of DREAM.3D and then reexport the STL Files.

 

To be able to actually reuse the 67 STL files I’d really have to take some time to work through if DREAM.3D even has the capability that you are looking for. I don’t think it does but I need to prove that to myself.

Elise Baribault

unread,
Apr 12, 2021, 4:52:29 PM4/12/21
to dream3d-users
Hi Mike,

Yes, the FEA uses the STL files as an input. Does using the "change resolution" filter alter the geometry/feature IDs of the microstructure? Is this why I would need to reexport the STL files and thus he would have to use those instead of the original STLs?

I see what you are saying about reusing the STLs. 

Thank you for all your help!
Elise

Michael Jackson

unread,
Apr 13, 2021, 9:26:54 AM4/13/21
to Elise Baribault, dream3d-users

Changing the resolution can have an effect on the resulting morphology of each grain depending on if you are sub or super sampling. For instance if you have smaller grains and you change to a higher resolution, i.e, larger value for “Resolution”, then those smaller grains may completely get left out of the resulting microstructure. So exporting the new STL files is required each time the Change Resolution filter is run.

Elise Baribault

unread,
Apr 14, 2021, 10:15:45 PM4/14/21
to dream3d-users
Hi Mike,

Okay, I see what you are saying. I have one final question. I know that each time I run a pipeline, the Stats Generator randomly creates a geometry/microstructure. Is there a way to run a pipeline but keep the same microstructure as a previous run? Is there some setting in Stats Generator that I can change to keep the geometry consistent?

Thanks,
Elise

Michael Jackson

unread,
Apr 15, 2021, 10:24:54 AM4/15/21
to Elise Baribault, dream3d-users

Run the StatsGenerator the first time and the last filter should be “Write DREAM3D DataFile”.

 

Create a NEW pipeline where the *first* filter is the “Read DREAM3D Data File” filter and use the path to the file you saved in the previous pipeline. This will load the same geometry that you created in that very first pipeline each time. Just remember that in subsequent pipelines if you do use the “Write DREAM3D Data File” filter, just use different filenames so you do NOT overwrite the original file.

Elise Baribault

unread,
Apr 20, 2021, 1:38:41 PM4/20/21
to dream3d-users
Hi Mike,

Thank you for your response. I was able to generate a 256^3 model and decrease the resolution to 128^3 and 64^3. However, something is happening to the grains that I don't fully understand.

Below is a screenshot of the 256^3 model (left) and the 64^3 model (right). There seems to be some additional grains (circled in red). Is there a way for DREAM.3D to keep all the original featureIDs? Why are these showing up?

Untitled.jpg

Thanks,
Elise

Michael Jackson

unread,
Apr 21, 2021, 9:55:26 AM4/21/21
to Elise Baribault, dream3d-users

Dear Elise,

     It would be interesting to see the layers above and below. Maybe there are grains that are just starting and by down sampling we are picking up those grains. If you really want to be strict about it I would do the crop from the 256^3 down to 256 x 256 x 1, *then* down sample to 128 and 64. This should ensure that avoid these kinds of issues.

 

--

Michael Jackson | Owner, President

      BlueQuartz Software

[e] mike.j...@bluequartz.net

[w] www.bluequartz.net

 

 

From: <dream3...@googlegroups.com> on behalf of Elise Baribault <ebarib...@gmail.com>
Date: Tuesday, April 20, 2021 at 1:38 PM
To: dream3d-users <dream3...@googlegroups.com>
Subject: Re: Import STLs to Create a Microstructure

 

Hi Mike,

 

Thank you for your response. I was able to generate a 256^3 model and decrease the resolution to 128^3 and 64^3. However, something is happening to the grains that I don't fully understand.

 

Below is a screenshot of the 256^3 model (left) and the 64^3 model (right). There seems to be some additional grains (circled in red). Is there a way for DREAM.3D to keep all the original featureIDs? Why are these showing up?

 

Elise Baribault

unread,
Apr 21, 2021, 10:32:31 AM4/21/21
to dream3d-users
Hi Mike,

So you are suggesting going from 256^3 to 256x256x1 then to 128^3 and 64^3? Or down to 128x128x1 and 64x64x1?

Thanks,
Elise

Reply all
Reply to author
Forward
0 new messages