Local boundary misorientations?

112 views
Skip to first unread message

Matthew Curd

unread,
May 15, 2025, 3:28:01 PM5/15/25
to dream3d-users

Hello Dream3D Community,

I am wondering if there is a way to visualise (and later quantify) the local grain boundary misorientations? I am working with serial sectioning EBSD data with relatively large grains with a large but gradual lattice rotation throughout them, see below.

So far, I have tried two approaches, which have not quite produced what I was aiming for. The first approach was to mesh the grain structure and then ‘Compute Feature Face Misorientation (Face)’.  However, this uses the average orientation of each feature (grain), which does not reflect the local misorientations at any given point on the grain boundary surface. (Attached example shows output for internal boundaries in a small sub-section of my dataset)

The second approach was to compute the kernel average misorientation for each cell, then use the find boundary cells filter to restrict the visualisation to just the grain boundary. The thinking was a kernel size could be selected to sample either side of the grain boundary, but not so large that gradual lattice rotation has an impact. However, I believe the KAM filter may be limited to cells within the same feature (grain) as the centre cell for each calculation? As such the misorientation along the grain boundary is similar to the bulk grain.

Is anyone aware of a different way I could approach this, or a possible modification to the above filters to produce the desired effect? The ultimate aim is to correlate with SE data which reveals a crack path through the microstructure, so it would be really great if I could see how local GB misorientation influences the crack path!

 Best Wishes, Matthew

 

IntGBsMisorienations.png
LargeLatticeRotatingGrain.png

Michael Jackson

unread,
May 16, 2025, 12:13:42 PM5/16/25
to Matthew Curd, dream3d-users
Dear Matthew,
   I don’t believe that DREAM3D-NX is going to have a filter for this exact scenario. There are a few filters that are close (as you have found) but not the exact match of functionality that you are looking for.

This is an interesting enough use case that we could put this on our (long) list of filters to implement. If you might be able to write something your self in Python using all the data from the .dream3d file or use the conda version of DREAM3D-NX to access the data.


--
Mike Jackson                    mike.j...@bluequartz.net
BlueQuartz Software         www.bluequartz.net
President/Owner               Dayton, Ohio
Principal DREAM.3D Developer


--
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 visit https://groups.google.com/d/msgid/dream3d-users/fcd746bc-fb6c-4ae1-a0f1-18bc79c76e22n%40googlegroups.com.

Jack

unread,
May 16, 2025, 1:01:06 PM5/16/25
to Michael Jackson, Matthew Curd, dream3d-users

Hi Matthew,

I performed the calculations using the Alphashape function in Matlab. First, I calculated the local norm as a vector product of the local face vertices, and then I used the rotation matrix of the Euler angles from the neighbouring voxel to calculate the local misorientation angle. You can probably adjust the vertex position manually by implementing a Laplacian smoothing (I think there are also prebuilt functions in the newest version of Matlab).


Anthony Rollett

unread,
May 16, 2025, 1:06:35 PM5/16/25
to Jack, Michael Jackson, Matthew Curd, dream3d-users
Sounds like an interesting opportunity to use an LLM to code something that starts with the surface meshed structure (from DREAM3D) and uses the local orientations to add color for each gb facet according to the local misorientation as you desire. The llms should know about vtk formats...
Tony 
Sent from my iPhone

On May 16, 2025, at 1:01 PM, Jack <jac.de...@gmail.com> wrote:



Michael Jackson

unread,
May 17, 2025, 9:43:05 AM5/17/25
to Matthew Curd, dream3d-users
Matthew, 
    The Kernel Average Disorientation across grain boundaries is, as you have discovered, not possible with the default pipelines. But what you can do is to use the “Create Data Array” filter to create a new cell level data array of Signed Int32 values all with a value of 1. Then in the “Compute KAM” filter, just use that new array instead of the “FeatureIds” array. This will allow the KAM to compute across grain boundaries. The result is shown below. For the example I used the built in Pipeline “aptr12_Analysis” and added the “Create Data Array” and a 2nd Compute Kernel Average Misorientation” filters. I am including the updated pipeline. The actual code to compute the KAM is at https://github.com/BlueQuartzSoftware/simplnx/blob/5afb61a382066aa76b83d02092acf0e197673a5f/src/Plugins/OrientationAnalysis/src/OrientationAnalysis/Filters/Algorithms/ComputeKernelAvgMisorientations.cpp#L118

The only other note is that the calculation will not use any cells that are marked as “Phase=0”. Hopefully this helps. I would be curious to see what this does with your data.




Mike Jackson


On May 15, 2025 at 15:28:00, Matthew Curd <matthe...@gmail.com> wrote:
--
KAM_Across_Grain_Boundaries.d3dpipeline

Matthew Curd

unread,
May 19, 2025, 4:44:44 AM5/19/25
to dream3d-users

Thank you all for the great suggestions! I will look into Alphashape and writing something with an LLM - I may reach out if I get stuck with anything. In the meantime I spoke to a colleague of mine (Uni Of Manchester) who is likewise interested in local GB misorientations and has been writing a MatLab script to compute them. So its definitely something which we’d use if it were added to Dream3D!

On your suggestion Mike, I had a similar idea. I’ve used the 'Segment Features (Misorientation)' filter with a 89° orientation tolerance to group all my data into one massive fake ‘grain’. Then computed the KAM for that, which excludes the empty overscanned region but computes across the real GBs. Then I have limited the visualisation to only boundary cells as before. Attached is the output of these for a small section of my dataset. I will experiment with the KAM radius setting next. I haven’t done the registration to the SE data yet but from a glance it seems there probably is a correlation between misorientation and crack branching events.

Best Wishes, Matthew

GB_KAM.PNG
GB_KAM_boundaries.PNG
Reply all
Reply to author
Forward
0 new messages