HAGB&LAGB

152 views
Skip to first unread message

Dongdi Yin

unread,
Nov 13, 2018, 4:24:59 AM11/13/18
to MTEX
Please be as detailed as possible, explain what you want to do, what kind of data you are using. Attaching simplified code and data is always useful. Click the the button { } to inline code and finally remove these lines before posting :)

mtex 5.1.1, MATLAB 2018a

Dear Prof. Rüdiger,

Thanks in advance for your kind work.

I am working on high angle grain boundary(HAGB) and low angle grain boundary (LAGB) in Mg. I found something weird, see attached figure.
fig(a) is IPF_Z map with normal gb (HAGB), fig(b) plot both HAGB in black and LAGB in white. The corresponding script is as below. 
I believe that for HAGB, fig(a) and (b) should be exactly the same, but they are not. I highlighted one obvious boundary in white circle in fig(b). 
Actually, there are some other HAGB appeared in fig(b) while they did not show in fig(a)
Could you please help me to figure it out?

Kind Regards
Dongdi
 
% for fig(a)   
    [grains,ebsd.grainId,ebsd.mis2mean] = calcGrains(ebsd('indexed'),'angle',10*degree);
    f=figure;
    color=ipfKey.orientation2color(ebsd(Mg).orientations);
    plot(ebsd(Mg),color);
    hold on
    % plot the boundary of all grains
    plot(grains.boundary,'linewidth',1);
    gTextInd=grains.grainSize >=1*5; 
    text(grains(gTextInd),int2str(grains(gTextInd).id),'FontSize',gIdFrontSize,'FontWeight','bold','FontName','Arial') % 7, or 10
    hold off
    f.Name='IPFmapId';figId=[figId;f.Number];

% for fig(b)
    ebsdSub=ebsd; % define ebsd variable for sub grains
    [grainsSub,ebsdSub.grainId,ebsdSub.mis2mean] = calcGrains(ebsdSub('indexed'),'angle',2*degree);
    gbMgSub = grainsSub.boundary(Mg,Mg); %  for grain boundary distribution,different with grains.boundary
    gbMisSub=gbMgSub.misorientation; % misOrientation matrix
    gbAngSub=gbMisSub.angle./degree;
% plot subgrains ID on IPF Z map
f=figure;
plot(ebsd(Mg),colorIPF);
hold on
plot(gbMgSub(gbAngSub>10),'linewidth',1,'linecolor','black'); % =10 is LAGB or HAGB?
% plot(grains.boundary(Mg,Mg),'linewidth',1,'linecolor','black'); % for plot fig(c)
plot(gbMgSub(gbAngSub<=10),'linewidth',1,'linecolor','w');
gTextInd=grainsSub.grainSize >=1*5; % only plot some large subgrains ID on the map
text(grainsSub(gTextInd),int2str(grainsSub(gTextInd).id),'FontSize',gIdFrontSize-1,'FontWeight','bold','FontName','Arial')
hold off
f.Name='IPFmapSubId';figId=[figId;f.Number]; % store this figure handle ID for exporting

gb.png

ruediger Kilian

unread,
Nov 13, 2018, 5:14:38 AM11/13/18
to mtex...@googlegroups.com
Hi,
if you look at the large grain in your figure (b), you see that with the 2 degree segmentation you create a grain bound to the "south" by a low angle boundary (close to the number 1309) and hence the grain segmentation can complete the grain above. So to me it makes totally sense that you create more boundaries as you allow with the smaller segmentation angle to close boundaries which hadn't been possible to close with the 10 degree angle.
I would say, the high angle boundary which "suddenly shows up" can also be found when grains.innerBoundary - the place where non-closed boundaries end up.

Hope this helps.
Cheers,
Rüdiger


Dongdi Yin

unread,
Nov 13, 2018, 6:30:19 AM11/13/18
to MTEX
Dear Dr. Rüdiger,

Thanks for your quick reply.
In the light of grains.innerBoundary plot I got your point.
So basic algorithm to reconstruct grain boundary (either HAGB or LAGB) in mtex is the boundary must be closed besides the misorientation angle criteria.
This is totally different with that in channel5, especially for LAGB, which do not need to be closed. I understand that the boundary should be closed even for subgrain if we call it a grain. But I also get confused that the misorientation of subgrain 1390 and subgrain 1655(or 1709) is obviously large (different color) but they still belong to one normal grain (182 in fig(a)) just because of a few non-closed LAGB segments as you mentioned. Is this make any sense?

Kind Regards
Dongdi


在 2018年11月13日星期二 UTC+8下午6:14:38,ruediger Kilian写道:

ruediger Kilian

unread,
Nov 13, 2018, 7:03:53 AM11/13/18
to mtex...@googlegroups.com
Yes, to be a grain, the area has to be enclosed by a boundary. If you want to access all boundaries, you can concatenate all_boundaries = [grains.boundary grains.innerBoundary] and work with those.

With respect to your confusion: When you specify a low angular threshold value, you simply allow for more possible paths to enclose an area and form a grain, but of course, there is no reason why a grain should only be enclosed by boundaries limited to a certain upper limit angle. The option 'angle' specifies the lower bound threshold, everything above this angle can be a potential grain boundary.

Cheers,
Rüdiger

Dongdi Yin

unread,
Nov 13, 2018, 8:17:52 PM11/13/18
to MTEX
Thanks a lot!

在 2018年11月13日星期二 UTC+8下午8:03:53,ruediger Kilian写道:
Reply all
Reply to author
Forward
0 new messages