In this section we discuss parent grain reconstruction at the example of a titanium alloy. Lets start by importing a sample data set
The data set contains 99.8 percent alpha titanium and 0.2 percent beta titanium. Our goal is to reconstuct the original beta phase. The original grain structure appears almost visible for human eyes. Our computations will be based on the Burgers orientation relationship
that alligns (110) plane of the beta phase with the (0001) plane of the alpha phase and the [1-11] direction of the beta phase with the [-2110] direction of the alpha phase.
Note that all MTEX functions for parent grain reconstruction expect the orientation relationship as parent to child and not as child to parent.
Setting up the parent grain reconstructor
Grain reconstruction is guided in MTEX by a variable of type
parentGrainReconstructor. During the reconstruction process this class keeps track about the relationship between the measured child grains and the recovered parent grains. In order to set this variable up we first need to compute the initital child grains from out EBSD data set.
We choose a very small threshold of 1.5 degree for the identification of grain boundaries to avoid alpha orientations that belong to different beta grains get merged into the same alpha grain.
Now we are ready to set up the parent grain reconstruction job.
The output of the
job variable allows you to keep track of the amount of already recovered parent grains. Using the variable
job you have access to the following properties
job.grainsIn- the input grains
job.grains- the grains at the current stage of reconstruction
job.ebsdIn- the input EBDS data
job.ebsd- the ebsd data at the current stage of reconstruction
job.mergeId- the relationship between the input grains
job.grainsInand the current grains
job.grainsIn(ind)goes into the merged grain
job.numChilds- number of childs of each current parent grain
job.parenGrains- the current parent grains
job.childGrains- the current child grains
job.isTransformed- which of the
grainsMeasuredhave a computed parent
job.isMerged- which of the
grainsMeasuredhave been merged into a parent grain
job.transformedGrains- child grains in
grainsMeasuredwith computed parent grain
parentGrainReconstructor class provides the following operations for parent grain reconstruction. These operators can be applied multiple times and in any order to archieve the best possible reconstruction.
job.calcVariantGraph- compute the variant graph
job.clusterVariantGraph- compute votes from the variant graph
job.calcGBVotes- detect child/child and parent/child grain boundaries
job.calcTPVotes- detect child/child/child triple points
job.calcParentFromVote- recover parent grains from votes
job.calcParentFromGraph- recover parent grains from graph clustering
job.mergeSimilar- merge similar parent grains
job.mergeInclusions- merge inclusions
The main line of the variant graph based reconstruction algorithm is as follows. First we compute the variant graph using the command
In a second step we cluster the variant graph and at the same time compute probabilites for potential parent orientations using the command
The probabilities are stored in
job.votes.prob and the corresponding variant ids in
job.votes.parentId. In order to use the parent orientation with the highest probability for the reconstruction we use the command
We observe that after this step more then 99 percent of the grains became parent grains. Lets visualize these reconstructed beta grains
Merge parent grains
After the previous steps we are left with many very similar parent grains. In order to merge all similarly oriented grains into large parent grains one can use the command
mergeSimilar. It takes as an option the threshold below which two parent grains should be considered a a single grain.
We may be still a bit unsatisfied with the result as the large parent grains contain a lot of poorly indexed inclusions where we failed to assign a parent orientation. We use the command
mergeInclusions to merge all inclusions that have fever pixels then a certain threshold into the surrounding parent grains.
Reconstruct beta orientations in EBSD map
Until now we have only recovered the beta orientations as the mean orientations of the beta grains. In this section we want to set up the EBSD variable
parentEBSD to contain for each pixel a reconstruction of the parent phase orientation. This is done by the command
The recovered EBSD variable
parentEBSD contains a measure
parentEBSD.fit for the corespondence between the beta orientation reconstructed for a single pixel and the beta orientation of the grain. Lets visualize this
For comparison the map with original alpha phase and on top the recovered beta grain boundaries