Understanding the number of variants for the Shoji-Nishiyama OR and a discussion on OR fitting #80
-
|
Hello all, I am working with a pure cobalt dataset with both parent and child phases. The misorientation of the phase boundaries corresponds well with the shoji nishiyama OR which is expected. However, there are a couple of inconsistencies I was wondering if I could gain some insight on. First, when displaying the unique variants for the S-N OR, it gives 24 unique variants I am expecting 12 unique ways a FCC grain can transform to and HCP one. I was wondering if someone can explain if there is something wrong going on with the variant calculation or if there something I am missing. I also see some inconsistencies when defining the same OR different ways. Using the OR in the orientation function (1,1,1)//(0,0,0,1) & <1,0,-1>//<2,-1,-1,0> I get the follow error when defining the same OR manually "Inconsistent pairs of vectors! The angle between u1, u2 and v1, v2 needs to be the same, but differs by 45°". If I switch the OR form in the orientation function (1,1,1)//(0,0,0,1) & <1,-1,0>//<1,1,-2,0> I get the same result as before but if I manually define this new form, I now get either 4 or 6 unique variants randomly each time I run the procedure. Using peak fitting gives the same parent-child and child-child disorientations as manually defining the OR but with 24 unique variants. The parent-child and child-child plots show that the dataset does not fit the S-N OR which I am skeptical of. Thank you for any insight, |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
|
Hi @natan12134, Apologies for the delay in replying. 1. The number of unique hcp variants in the rational S-N OR clear all; close all; clc
% define the parent symmetry for austenite
cs_fcc = crystalSymmetry('m-3m', [3.6599 3.6599 3.6599], 'mineral', 'fcc');
% define the child symmetry for epsilon martensite
cs_hcp = crystalSymmetry('6/mmm', [2.545 2.545 4.14], 'X||a*', 'Y||b', 'Z||c', 'mineral', 'hcp');
% describe the parent fcc to child hcp Shoji-Nishiyama (S-N) orientation relationship
% parent fcc plane and direction
pPlane_1 = Miller({1,1,1},cs_fcc,'hkl');
pDirection_1 = Miller({1,0,-1},cs_fcc,'uvw');
% child hcp plane and direction
cPlane_1 = Miller({0,0,0,1},cs_hcp,'HKIL');
cDirection_1 = Miller({1,1,-2,0},cs_hcp,'UVTW');
% define the S-N OR
p2c_1 = orientation.map(pPlane_1, cPlane_1, pDirection_1, cDirection_1);
% calculate the variants
fcc2hcp_1 = p2c_1.variants;
hcp2hcp_1 = p2c_1.variants.*inv(p2c.variants(1));
variantAngle_1 = angle(hcp2hcp_1);
variantAxis_1 = axis(hcp2hcp,cs_hcp_1);
for ii = 1:numel(variantAngle_1)
disp(['V1 to V', num2str(ii), ' | axis: ', num2str(round(variantAxis_1(ii).UVTW,4)), ' | angle: ', num2str(variantAngle_1(ii)./degree), '°'])
endThis is the output in the command window: V1 to V1 | axis: 0.6806 0 -0.6806 0 | angle: 0°
V1 to V2 | axis: -0.7859 0.3929 0.3929 0 | angle: 70.5288°
V1 to V3 | axis: -0.7859 0.3929 0.3929 0 | angle: 70.5288°
V1 to V4 | axis: -0.7859 0.3929 0.3929 0 | angle: 70.5288°As you can see, there are only 4 unique variants for the rational S-N OR with perfectly parallel set of parent-child planes and directions. 2. The number of unique hcp variants in the rational versus the irrational S-N OR % *********************************************************************
% ORTools - Example 5 - modified
% *********************************************************************
% Using the OR peak fitter to fit the Shoji-Nishiyama OR between fcc and hcp phases of a TRIP-TWIP (TRWIP) alloy
% https://www.youtube.com/watch?v=Hj5kVscjljU&t=323s
% *********************************************************************
% Dr. Azdiar Gazder, 2020, azdiaratuowdotedudotau
% Dr. Frank Niessen, 2020, contactatfniessendotcom
% (Remove "dot" and "at" to make this email address valid)
% *********************************************************************
% Example 5 may return an error with MTEX 5.7.0, but will work without error
% with MTEX. 5.6.x and ORTools v.1.0 or with MTEX v5.7.1 onwards.
home; close all; clear variables;
currentFolder;
set(0,'DefaultFigureWindowStyle','normal');
screenPrint('StartUp','ORTools - Example 5');
%% Initialize MTEX
% startup and set some settings
startup_mtex;
setMTEXpref('xAxisDirection','east');
setMTEXpref('zAxisDirection','outOfPlane');
setMTEXpref('FontSize',14);
setInterp2Tex;
% Default directories - Do not modify
Ini.dataPath = [strrep(pwd,'\','/'),'/data/'];
Ini.cifPath = [Ini.dataPath,'input/cif/'];
Ini.ebsdPath = [Ini.dataPath,'input/ebsd/'];
Ini.texturePath = [Ini.dataPath,'output/texture/'];
Ini.imagePath = [Ini.dataPath,'output/images/'];
Ini.phaseNames = {'Gamma','AlphaP','Epsilon'};
%% Import EBSD data and save current file name
ebsd = loadEBSD_ctf([Ini.ebsdPath,'TRWIPsteel.ctf'],'convertSpatial2EulerReferenceFrame');
ebsd = ebsd('indexed');
%% Compute, filter and smooth grains
screenPrint('SegmentStart','Computing, filtering and smoothing grains');
% Grains are calculated with a 3° threshold
[grains,ebsd.grainId] = calcGrains(ebsd('indexed'),'threshold',3*degree,...
'removeQuadruplePoints');
%% Rename and recolor phases
screenPrint('SegmentStart','Renaming and recoloring phases');
%Rename "Iron fcc" to "Gamma", "Iron bcc (old)" to "AlphaP" and
%"Epsilon_Martensite" to "Epsilon"
ebsd = renamePhases(ebsd,Ini.phaseNames);
%Choose your favourite colors
ebsd = recolorPhases(ebsd);
%% Define the transformation system
screenPrint('SegmentStart','Finding the orientation relationship(s)');
% Choose "Gamma" as a parent and "AlphaP" as a child phase
job = setParentGrainReconstructor(ebsd,grains,Ini.cifPath);
%% Plot initial maps
% Plotting the phase map
plotMap_phases(job,'linewidth',2);
% - Epsilon has formed from Gamma and AlphaP from Epsilon
% Parent and child IPF maps
plotMap_IPF_p2c(job,vector3d.Z,'linewidth',2);
% - Multiple gamma grains are covered
% Parent-child grain boundary misorientation map
plotMap_gB_p2c(job,'linewidth',1.5);
% - Misorientation mainly around ~60°
% Child-child grain boundary misorientation map
plotMap_gB_c2c(job,'linewidth',1.5);
% - Different misorientation angles are visible
%% Fit the S-N OR for gamma-epsilon boundary misorientations
% Use the peak fitter in the pop-up menu
% - We see that there are a few misorientation peaks
% - Set the threshold by pressing the right arrow key to include only the highest peak in the fitting
job = defineORs(job);This is the starting window for the OR peak fitter function. This is how you select the highest peak (corresponding to the S-N OR) in OR peak fitter function. This is the output in the command window: ------------------------------------------------------
Finding the orientation relationship(s)
------------------------------------------------------
-> Define the parent phase
- 'Gamma'
-> Define the child phase
- 'Epsilon'
-> Plotting the parent-child misorientation distribution map
-> Plotting the child-child misorientation distribution map
>> job = defineORs(job);
-> Computing the parent-child misorientation distribution histogram
-> Fitting the interpolated misorientation distribution histogram
-> Set a threshold value above which peaks are found
-> 1 peak(s) found in the distribution
-> Begin the Gaussian fitting of 1 distribution(s)
-> Completed the Gaussian fitting of 1 distribution(s)
-> Computing ORs from peak-fitted data
-> All OR(s) determined using Maximum f(g) of the mdf
-> Computing OR 1:
- Peak between 53.8532° & 55.8532°
- OR = (1,-1,-1)_p || (0,-1,1,-1)_c, Ang. dev: 1.8587°
[1,1,0]_p || [2,1,-3,-4]_c, Ang. dev: 0.84475°
-> Detailed information on the selected OR:
- OR misorientation angle = 46.2371°
-> Parallel planes
- Closest parent plane (rounded-off) = (1,-1,-1)
- Closest child plane (rounded-off) = (0,-1,1,-1)
- Disor. of parallel plane relationship from OR = 1.8587°
-> Parallel directions
- Closest parent direction (rounded-off) = [1,1,0]
- Closest child direction (rounded-off) = [2,1,-3,-4]
- Disor. of parallel directions relationship from OR = 0.84475°
-> OR misorientation rotation axes
- Parent rot. axis (as-computed) = [-0.1886,0.1863,0.0662]
- Parent rot. axis (rounded-off) = [-3,3,1]
- Child rot. axis (as-computed) = [-0.7377,0.5358,0.2019,0.1756]
- Child rot. axis (rounded-off) = [-4,3,1,1]
- Disor. of parallel rot. axes relationship from OR = 8.5377e-07°
-> Parallel planes & directions and fit of unique variants in p2c notation (rounded-off)
** misfit = Angular deviation between p2c misorientation and fitted planes & directions
parallel plane(s) parallel direction(s) misfit(s)
- (1-1-1) || (0-11-1) [110] || [21-3-4] 1.997°
- (11-1) || (0-11-1) [011] || [-2-134] 1.997°
- (11-1) || (01-11) [101] || [21-3-4] 1.997°
- (1-11) || (0-11-1) [110] || [-2-134] 1.997°
- (1-11) || (01-11) [011] || [21-3-4] 1.997°
- (1-1-1) || (01-11) [101] || [-2-134] 1.997°
- (1-1-1) || (01-11) [01-1] || [-2-134] 1.997°
- (11-1) || (01-11) [1-10] || [-2-134] 1.997°
- (11-1) || (0-11-1) [101] || [21-3-4] 1.997°
- (111) || (0-11-1) [01-1] || [21-3-4] 1.997°
- (111) || (01-11) [1-10] || [21-3-4] 1.997°
- (1-1-1) || (0-11-1) [101] || [-2-134] 1.997°
- (11-1) || (0-11-1) [1-10] || [-2-134] 1.997°
- (1-11) || (01-11) [10-1] || [21-3-4] 1.997°
- (1-11) || (0-11-1) [011] || [21-3-4] 1.997°
- (111) || (0-11-1) [1-10] || [21-3-4] 1.997°
- (111) || (01-11) [10-1] || [-2-134] 1.997°
- (11-1) || (01-11) [011] || [-2-134] 1.997°
- (1-11) || (0-11-1) [10-1] || [21-3-4] 1.997°
- (1-1-1) || (0-11-1) [01-1] || [-2-134] 1.997°
- (1-1-1) || (01-11) [110] || [21-3-4] 1.997°
- (111) || (0-11-1) [10-1] || [-2-134] 1.997°
- (111) || (01-11) [01-1] || [21-3-4] 1.997°
- (1-11) || (01-11) [110] || [-2-134] 1.997°
-> Parallel planes & directions and fit of unique variants in c2c notation (rounded-off)
** misfit = Angular deviation between c2c misorientation and fitted planes & directions
parallel plane(s) parallel direction(s) misfit(s)
- (10-10) || (10-10) [0001] || [0001] 0°
- (02-2-1) || (0-223) [3-1-22] || [-3302] 2°
- (21-3-3) || (31-4-1) [11-23] || [2-31-1] 1.463°
- (10-11) || (-101-1) [01-1-1] || [-2113] 1.424°
- (31-4-1) || (21-3-3) [1-102] || [-45-10] 0.547°
- (0001) || (1-100) [01-10] || [-1-12-1] 1.469°
- (01-12) || (0-11-2) [01-1-1] || [2-534] 2.144°
- (2-1-1-1) || (-2111) [01-10] || [-25-3-6] 0.312°
- (10-1-1) || (000-1) [01-11] || [-56-10] 3.731°
- (1-21-1) || (-2110) [1-103] || [0-114] 0.889°
- (10-1-3) || (-12-10) [03-31] || [0001] 0.902°
- (2-1-1-2) || (0-112) [20-23] || [-2201] 0.854°
- (1-210) || (-1013) [0001] || [03-31] 0.902°
- (2-1-10) || (-12-11) [02-23] || [-2-133] 0.947°
- (1-211) || (0-551) [10-10] || [1-10-5] 1.14°
- (2-1-13) || (-211-3) [10-1-1] || [1-21-1] 1.403°
- (1-102) || (-110-2) [1-10-1] || [-7526] 0.957°
- (1-10-2) || (10-11) [02-2-1] || [-4315] 1.145°
- (10-1-3) || (2-1-1-1) [11-21] || [2-536] 1.07°
- (01-1-2) || (-2112) [2-20-1] || [-202-3] 0.854°
- (01-11) || (0-11-1) [2-1-10] || [-871-6] 0.845°
- (3-1-22) || (1-10-1) [1-32-1] || [1-102] 0.739°
- (11-2-4) || (12-30) [31-43] || [-5413] 0.333°
- (14-52) || (1-101) [10-1-3] || [-1011] 1.268°
-> Misorientation angles & rotation axes of unique variants in c2c notation
- 1: 0.00° / [-0.6806,0.6806,0.0000,0.0000]
- 2: 55.12° / [-0.7792,0.4777,0.3015,-0.0000]
- 3: 73.79° / [-0.7676,0.4015,0.3661,0.1543]
- 4: 23.56° / [-0.6182,0.6182,0.0000,0.3030]
- 5: 73.79° / [-0.4015,0.7676,-0.3661,0.1543]
- 6: 89.05° / [-0.7857,0.3929,0.3929,0.0121]
- 7: 17.55° / [-0.5232,0.5232,0.0000,0.4634]
- 8: 55.94° / [-0.7499,0.3749,0.3749,0.2167]
- 9: 60.62° / [-0.4854,0.7666,-0.2813,0.1164]
- 10: 18.72° / [-0.5436,0.7622,-0.2186,0.0342]
- 11: 72.84° / [-0.4167,0.7849,-0.3682,0.0250]
- 12: 80.01° / [-0.7757,0.4928,0.2830,0.0313]
- 13: 72.84° / [-0.7849,0.4167,0.3682,0.0250]
- 14: 18.72° / [-0.7622,0.5436,0.2186,0.0342]
- 15: 79.18° / [-0.4910,0.7701,-0.2791,0.0904]
- 16: 89.57° / [-0.4918,0.7767,-0.2850,-0.0000]
- 17: 12.36° / [-0.4308,0.4308,-0.0000,0.5609]
- 18: 63.08° / [-0.7563,0.5447,0.2116,0.0856]
- 19: 60.62° / [-0.7666,0.4854,0.2813,0.1164]
- 20: 80.01° / [-0.4928,0.7757,-0.2830,0.0313]
- 21: 70.16° / [-0.6070,0.7358,-0.1288,0.0000]
- 22: 63.08° / [-0.5447,0.7563,-0.2116,0.0856]
- 23: 79.18° / [-0.7701,0.4910,0.2791,0.0904]
- 24: 66.02° / [-0.7847,0.3923,0.3923,0.0398]As you can see, the best-fit OR is close to the rational S-N OR but it does not match it exactly. - OR = (1,-1,-1)_p || (0,-1,1,-1)_c, Ang. dev: 1.8587°
[1,1,0]_p || [2,1,-3,-4]_c, Ang. dev: 0.84475°This is the reason why you have 24 hcp variants instead of the theoretical 4 you expect. 3. Comparing the theoretical and optimised ORs % describe the parent fcc to child hcp optimised orientation relationship
% parent fcc plane and direction
pPlane_2 = Miller({1,-1,-1},cs_fcc,'hkl');
pDirection_2 = Miller({1,1,0},cs_fcc,'uvw');
% child hcp plane and direction
cPlane_2 = Miller({0,-1,1,-1},cs_hcp,'HKIL');
cDirection_2 = Miller({2,1,-3,-4},cs_hcp,'UVTW');
% define the optimised OR
p2c_2 = orientation.map(pPlane_2, cPlane_2, pDirection_2, cDirection_2);
% disorientation between orientation relationships
angle(p2c_1, p2c_2) ./ degreeThis is the output in the command window: ans =
11.6119**Lastly, and importantly, if an explanation from the maintainers resolves your issue, please press the "Mark as answer" button on the appropriate response. Your assistance in this regard enables us to close discussions as complete. ** Hope this helps. Warm regards, |
Beta Was this translation helpful? Give feedback.
-
|
Hello @AzdiarGazder, Thank you for the detailed and informative response. Your explanation regarding the number of variants was particularly helpful and resolved several misconceptions I previously had. I do, however, have a few follow up questions related to an annealed cobalt dataset I have been working with. In the peak fitting results, there is a distinct OR that, when optimized, shows low angular deviation. However, the optimized OR deviates noticeably from the ideal S–N OR. Additionally, the child-child disorientation and the boundary disorientation are large and the associated boundary probability are quite low. Would you have any insight into the possible reasons for this discrepancy? Lastly, the reconstruction process yields lots of single child grains transforming back to single parent grains. I would appreciate any thoughts you might have on this behavior. I look forward to your reply. Best, |
Beta Was this translation helpful? Give feedback.
-
|
Hi @natan12134, I'm currently away on leave - so apologies again for the late reply. The *.pptx you shared - thank you for that - does contain an interesting microstructure.
So if, after cleaning your map, you still have multiple peaks in the parent-child boundary misorientation histogram, then it is better to undertake reconstruction in multiple steps - where you first reconstruct using the OR with the highest frequency, and then reconstruct single grains with their operative OR. Here, the first part of ORTools - Example 5 provides an example on how to go about fitting multiple ORs. Alternatively, while it may be the case that you have multiple operative ORs (as stated above), a few of them may be equivalent to each other. Again, this phenomenon is less reported but is not uncommon.
As I said at the beginning of this rather lengthy reply, please take everything I've written with a good pinch of salt - as it may or may not be applicable to your particular case. :) **Lastly, and importantly, if an explanation from the maintainers resolves your issue, please press the "Mark as answer" button on the appropriate response. Your assistance in this regard enables us to close discussions as complete. ** Hope this helps. Warm regards, |
Beta Was this translation helpful? Give feedback.



Hi @natan12134,
Apologies for the delay in replying.
You have raised a couple of questions in your query - so let's break them down one at a time.
1. The number of unique hcp variants in the rational S-N OR
If you run this code snippet: