Announcement: GUI for parent austenite reconstruction from martensitic orientation maps

1,016 views
Skip to first unread message

Tuomo Nyyssönen

unread,
Mar 22, 2018, 7:39:45 AM3/22/18
to MTEX
I'm excited to announce I've created a set of scripts for Matlab and MTEX for the purpose of reconstructing prior austenite grains from martensitic orientation maps. The scripts can be run through a graphical user interface created as an app for Matlab. I hope there are steel crystallographers on this forum who will find this tool useful.

The package requires Matlab R2017X and MTEX 5.0.X. To get started, follow the instructions in the readme and the manual provided.

Here is a link to a zip file containing the package:

https://drive.google.com/open?id=1U6jzpPdtlKFMtFyTwxSp42i0Pvp5Ymkb

I would appreciate any bug reports or comments to be submitted as replies to this post.

Dr. Jessica Hiscocks is gratefully acknowledged for providing the inspiration for this GUI, and the template for the ebsd import and grain generation functionalities.

BR, Tuomo

austenite.jpg
martensite.jpg
ORs.jpg

Ralf Hielscher

unread,
Mar 23, 2018, 3:24:43 PM3/23/18
to MTEX
Hi Tuomo,

congratulations to for your work. Your algorithm seem very promising and interface looks very nice. Would you mind if I put a link to you app on the MTEX homepage? 

Also I would be very happy if we could include some of the basic functionalities directly into MTEX. I understand that this would require quite some work. On the other hand it would make your software more robust against future changes in MTEX. What do you think about this?

All the best,

Ralf.

PS: at some points it would be good to have some kind of waitbar as it not always clear whether the app is busy or not.

Ralf Hielscher

unread,
Mar 23, 2018, 4:13:05 PM3/23/18
to MTEX
I looked a bit more into it and I wonder if you did all the figures with MTEX. I did not that this is possible.

Ralf.

Tuomo Nyyssönen

unread,
Mar 26, 2018, 3:12:57 AM3/26/18
to MTEX
Thank you Ralf,

I'd be very pleased if you put a link to the GUI on the MTEX homepage.

I also agree that incorporating the algorithm into MTEX would make life with version changes much easier. I can look into this a little bit if you like. The main thing with the algorithm is retrieving correct symmetry operators... if this could be incorporated as a function or as part of existing functions then that would be great.

On plotting: I assume I am using standard MTEX commands for plotting. Other than that, it's just logical masking of grain boundaries, giving coloring values to the EBSD points (variant number) and zooming in on the pole figures using the axis command.

BR, Tuomo

MTEXrulez

unread,
Mar 29, 2018, 3:40:08 AM3/29/18
to MTEX

% Determine the full orientation relationship according to cubic symmetry
% as by Morito:

One question concerning your "numbering" of the variants "according to Morito": I am  aware of his paper and I also attempted to do my numbering of the variants "according to Morito" but got a different result. Did you just arrange the variants to get the intervariant misorientation angles fitting to the "Morito angles"?

Tuomo Nyyssönen

unread,
Mar 29, 2018, 5:25:28 AM3/29/18
to MTEX
I switched around the symmetry operators generated by the cs.properGroup until they were in the right order. As reference, I used a 001 pole figure generated from a given fcc2bcc relationship. I switched around the symmetry operators until the resulting pole figure matched the order of Figure 1 in "Quantitative analysis of variant selection in ausformed lath martensite" by Miyamoto et al., Acta Materialia 60 (2012) 1139-1148. As far as I understand, this is the same order as that used by Morito et al. in "The morphology and crystallography of lath martensite in Fe-C alloys", Acta Materialia 51 (2003) 1789-1799.

After doing this, I got similar intervariant misorientation angles and credible packet/block boundary classifications.

Tuomo Nyyssönen

unread,
Mar 29, 2018, 6:15:36 AM3/29/18
to MTEX
Now that I think about it, there may be a mistake with the variant indexation... I will double check it. The angles and block/packet indexation are apparently correct. The axes, however, do not correspond to the article by Morito et al. I have an idea about what's wrong but it might take a while to figure it out.

-Tuomo

Pauli Lehto

unread,
Mar 29, 2018, 7:54:05 AM3/29/18
to MTEX
Excellent work Tuomo!

-Pauli

Ben Britton

unread,
Apr 3, 2018, 12:03:14 PM4/3/18
to MTEX
Hi Tuomo,

Thanks for making the GUI - it is handy for us to work with.

I've been reconstructing some material with retained austenite. The parent austenite reconstruction (ebsd_aus) seems to rotate the retained austenite. Do you know how/why this may be happening?

The top row for my figure has the austenite phase from the original microstructure plotted with the improper cubic IPF colourkey, the bottom has the contents of ebsd_aus plotted with the same key. You can see the (one) PAG has reconstructed correctly across the map, but the internal retained austenite have rotated so that they are now incorrect.

Any idea on how I can fix this?

Thanks,
Ben
pag_bug.PNG

Tuomo Nyyssönen

unread,
Apr 9, 2018, 1:24:24 AM4/9/18
to MTEX
Hi Ben,

thanks for letting me know about this bug.

In this revision, retained austenite has not been accounted for in the script package. However, the retained austenite should not be included in the grain map at all (when using the GUI tools) and should simply be "skipped" in the reconstruction.

Did you import your own grains object? In that case, the MCL algorithm may have included the austenite grains in the clusterization, resulting in each austenite grain belonging to a cluster of one. The reconstruction algorithm has then attempted to find the parent austenite orientation for this single-grain cluster (not knowing that it is in fact austenite), and has settled for rotating it to some K-S variant.

I will look into this matter. The algorithm should probably skip attempting to reconstruct single-grain clusters.

Meanwhile, to reverse the erroneous rotations, you could try something like

ebsd_aus(ebsd('Iron fcc').id) = ebsd('Iron fcc');

BR, Tuomo

Frédéric Adamski

unread,
Apr 16, 2018, 5:00:21 PM4/16/18
to MTEX
Hi Tuomo

Thanks for this great work,

Unfortunatly, I work on 2014a and I can't use your GUI. So I try to adapt your scripts to my work.

On recaus.m, I have a problem : I can't understand what is "ib". I thought that it was ebsd('Iron bcc (old)') but it gives me an error.

Can you telle me what is ib, please ?

Thank you

BR, Fred

Adamski Frédéric

unread,
Apr 16, 2018, 11:10:35 PM4/16/18
to MTEX
Hi Tuomo,

Thank you for this great work.
Unfortunatly, I work on Matlab 2014a, and I can't use your GUI. So I try to understand and adapt your scripts to my work.
There's one thing I didn't get  : in recaus.m, what is "ib". At first I thought that it was   ebsd('Iron bcc (old)')   but I get some errors when I run the script.

Can you help me, please ?

Thanks

Fred

Tuomo Nyyssönen

unread,
Apr 17, 2018, 2:02:31 AM4/17/18
to MTEX
"ib" refers to the cell array that contains the discrete clusters of grains separated by MCL. The reconstruction algorithm calculates the parent orientation for each of these clusters.

I have attached a set of scripts to this post that contains the algorithm without the GUI. It has been tested with MTEX 4.5.0. You can try to run the scripts in the *.zip package sequentially (pag1 to pag3) to get a similar result to the GUI.

I hope this helps!

-Tuomo
solo_MCL.zip

Fred - Mtex

unread,
Apr 19, 2018, 5:00:28 PM4/19/18
to MTEX
Thanks a lot again Tuomo, it's very nice to share your work !

I will look at this next week.

Best Regards

Fred

Paulo Grossi

unread,
May 26, 2018, 3:29:34 PM5/26/18
to MTEX
When I run Determine OR, give ever this erro:

Undefined function 'SO3Grid_find' for input arguments of type 'int32'.

Error in SO3Grid/find (line 62)
        [hind,hd] = SO3Grid_find(yalpha,ybeta,ygamma,sgamma,int32(igamma),int32(ialphabeta),palpha,pgamma,
        xalpha,xbeta,xgamma);

Error in orientation/calcKernelODF (line 72)
  M = sparse(1:length(ori),find(S3G,ori),weights,length(ori),length(S3G));

Error in orientation/calcODF (line 68)
  odf = calcKernelODF(ori,varargin{:},'kernel',psi);

Error in determineor (line 171)
bcc2fcc_odf = calcODF(orientation(rotation(bcc2fcc_candidate),symmetries{2},1),'halfwidth',1*degree);

Error in PAG_GUI/DetermineORButtonPushed (line 177)
            [app.fcc2bcc,app.MCL{1},app.MCL{2},app.orbounds{1},app.orbounds{2},app.orbounds{3},app.orbounds{4},app.HistVariants,app.symrots,app.bcc2fcc_odf]
            = determineor(app.Symmetries,app.TempGrainsData,app.viewdevelopmentCheckBox.Value);
 
Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback (line 310)
Error while evaluating Button PrivateButtonPushedFcn.

MTEXNewbie

unread,
Nov 7, 2018, 1:46:26 PM11/7/18
to MTEX
Hi Tuomo,

Has the program been added to MTEX? Any update to the initially released app??

Tuomo Nyyssönen

unread,
Nov 8, 2018, 8:11:48 AM11/8/18
to MTEX
It hasn't been added to MTEX and I personally don't see any need for that. In my opinion it is best if MTEX remains a general crystallography toolbox with no "favoritism" towards certain materials. 

What is important is that it should be as easy as possible to build on MTEX. Right now it is very easy to create tools like the GUI here and in my opinion that is how it should be in the future.

Some general tools for determining orientation relationships between a parent and product phase from misorientations between grains of the product phase might be a good idea. The problem of course is how much time can be devoted to something like this; right now, for instance, I have very little.

I've been working on the GUI a bit, though, and an update might be coming up in the perhaps not-so-distant future. Is there any feature you'd be particularly interested in?

BR, Tuomo

MTEXNewbie

unread,
Nov 8, 2018, 8:20:31 AM11/8/18
to MTEX
Thanks for replying, hopefully the update will come out soon.

The martensite crystal lattice should be BCT (body-centered tetragonal), but the code is assuming BCC lattice to be martensite and reconstructing austenite form that?

Ben Britton

unread,
Nov 8, 2018, 8:25:53 AM11/8/18
to MTEX
It's extremely difficult to (confidentially / reasonably) measure the difference between the martensite BCT and the ferrite BCC phase with EBSD. The assumption of the BCC ferrite is reaspnable for the reconstruction, as the direction of the c axis is usually unknown.

MTEXNewbie

unread,
Nov 8, 2018, 8:30:22 AM11/8/18
to MTEX
Highly appreciate the explanation for appropriating ferrite BCC as martensite BCT, thank you.

Gregorio Solis

unread,
Dec 18, 2018, 3:05:43 AM12/18/18
to MTEX
Excellent work Dr. Nyyssönnen, very useful.
I would like to apply it in my research. The software we use for EBSD scanning is Edax-TEAM and we use OIM for analysis. I wonder if there is a way to convert my files to the CPR format that you use.
Anybody in this group has been able to apply this procedure to ANG or OSC files?  Thank you so much!

MTEXNewbie

unread,
Dec 18, 2018, 3:49:42 AM12/18/18
to MTEX
.cpr/.crc and .ctf (ASCII text) file types are Oxford Instrument format. The GUI by Dr. Nyyssönnen operates within MTEX and MTEX supports a wide range of file types - https://mtex-toolbox.github.io/EBSDInterfaces.html

You will find some demo EBSD file in your MTEX installation folder, including TSL OIM format: ...\mtex-5.1.1\data\EBSD\

Chih-Ying Hsu

unread,
Aug 6, 2019, 1:16:04 AM8/6/19
to MTEX
Dear Dr. Nyyssönen

Thank you for the script, it is very helpful and I'd like to use it in my studies. 
We are using NRODIF system and uses OIM as the data treatment software. From what I understand, I can always export it to .ang files for MTEX so that it can import my raw data. 
However, while using the GUI, I have often encountered the problem of having too many indices (fro what I understand, too many acquisition points). I also have the same error even if I crop the dataset and treat them separately.
I'd like to know if there is a solution to this or what is the maximum number of points that it can treat?

Thank you in advance

Tuomo Nyyssönen於 2018年3月22日星期四 UTC+1下午12時39分45秒寫道:
Reply all
Reply to author
Forward
0 new messages