Problems with CSL13,17,19,21,25,27,29 grain boundaries when calculating them based on average grain orientation

298 views
Skip to first unread message

Weiwei Li

unread,
Mar 4, 2017, 2:05:36 PM3/4/17
to MTEX
Hi,

With extensive help from Rüdiger Kilian, I have been able to CSL Grain Boundary map based off of the mean orientations of each grain (as opposed to local misorientation for each pixel of a grain boundary) . My code to produce this is:
[grains,ebsd.grainId] = calcGrains(ebsd('Copper'),'angle',15*degree);
gb = grains.boundary('Copper','Copper');        
gbo1=grains(gb.grainId(:,1)).meanOrientation; %pairwise orientations along boundary
gbo2=grains(gb.grainId(:,2)).meanOrientation; 
mori=gbo1.\gbo2;

%get CSL boundaries based on Brandon's Criterion
condition3=angle(mori,CSL(3,ebsd('Copper').CS))<8.66*degree;
condition5=angle(mori,CSL(5,ebsd('Copper').CS))<6.7*degree;
condition7=angle(mori,CSL(7,ebsd('Copper').CS))<5.67*degree;
condition9=angle(mori,CSL(9,ebsd('Copper').CS))<5*degree;
condition11=angle(mori,CSL(11,ebsd('Copper').CS))<4.523*degree;
%condition13=angle(mori,CSL(13,ebsd('Copper').CS))<4.16*degree;
condition15=angle(mori,CSL(15,ebsd('Copper').CS))<3.873*degree;
%condition17=angle(mori,CSL(17,ebsd('Copper').CS))<3.638*degree;
%condition19=angle(mori,CSL(19,ebsd('Copper').CS))<3.44*degree;
%condition21=angle(mori,CSL(21,ebsd('Copper').CS))<3.273*degree;
condition23=angle(mori,CSL(23,ebsd('Copper').CS))<3.128*degree;
%condition25=angle(mori,CSL(25,ebsd('Copper').CS))<3*degree;
%condition27=angle(mori,CSL(27,ebsd('Copper').CS))<2.887*degree;
%condition29=angle(mori,CSL(29,ebsd('Copper').CS))<2.785*degree;

plot(gb,'lineColor','black','linewidth',1.5,'DisplayName','HAGB');
hold on;
plot(gb(condition3),'lineColor','g','linewidth',1.5,'DisplayName','\Sigma3');
plot(gb(condition5),'lineColor','y','linewidth',1.5);
plot(gb(condition7),'lineColor','y','linewidth',1.5);
plot(gb(condition9),'lineColor','b','linewidth',1.5,'DisplayName','\Sigma9');
plot(gb(condition11),'lineColor','y','linewidth',1.5);
plot(gb(condition15),'lineColor','y','linewidth',1.5);
plot(gb(condition23),'lineColor','y','linewidth',1.5,'DisplayName','\Sigma<=29');
hold off;

This code produces the image that I have attached. It should be noted that I commented out the CSL 13, 17, 19, 25, 27, and 29 boundaries. This is because if I leave those boundaries in, I get the error:

"Error using bsxfun
Non-singleton dimensions of the two input arrays must match each other.

Error in orientation/dot (line 103)
  d = abs(bsxfun(@times,q1.a,q2.a) + bsxfun(@times,q1.b,q2.b) + ...

Error in orientation/angle (line 17)
  omega = real(2*acos(abs(dot(o1,varargin{:}))));

Error in GBreconstruction (line 328)
condition25=angle(mori,CSL(25,ebsd('Copper').CS))<3*degree;"

I am not quite sure what is going on here. Any help would be appreciated.

Thanks,

Weiwei




CSLQ.PNG

Weiwei Li

unread,
Mar 6, 2017, 12:49:54 PM3/6/17
to MTEX
Upon closer inspection, the grain boundaries that do not work are grain boundaries with TWO possible misorientation angles that may define them:
Sigma13: 22.62 & 27.8 degrees
Sigma17: 28.07 & 61.93 degrees
Sigma19: 26.53 & 46.83 degrees
Sigma21: 21.79 & 44.40 degrees
Sigma25: 16.25 & 51.68 degrees
Sigma27: 31.58 & 35.42 degrees
Sigma29: 43.61 & 46.39 degrees
(reference is from "The measurement of grain boundary geometry" Valerie Randle)

In light of this, I tried to use the help I got from a previous question I asked which can be found here: https://groups.google.com/forum/#!searchin/mtexmail/csl%7Csort:relevance/mtexmail/ezGzufHCaYE/_GhdfhoFEAAJ

Then, I modified my code for my Sigma27 boundary based off of the previous question I asked:
csl27 = CSL(27,ebsd2('Copper').CS);
csl27(3) = [];

condition3=angle(mori,CSL(3,ebsd2('Copper').CS))<8.66*degree;
condition5=angle(mori,CSL(5,ebsd2('Copper').CS))<6.7*degree;
condition7=angle(mori,CSL(7,ebsd2('Copper').CS))<5.67*degree;
condition9=angle(mori,CSL(9,ebsd2('Copper').CS))<5*degree;
condition11=angle(mori,CSL(11,ebsd2('Copper').CS))<4.523*degree;
%condition13=angle(mori,CSL(13,ebsd2('Copper').CS))<4.16*degree; %dual angles
condition15=angle(mori,CSL(15,ebsd2('Copper').CS))<3.873*degree;
%condition17=angle(mori,CSL(17,ebsd2('Copper').CS))<3.638*degree; %dual angles
%condition19=angle(mori,CSL(19,ebsd2('Copper').CS))<3.44*degree; %dual angles
%condition21=angle(mori,CSL(21,ebsd2('Copper').CS))<3.273*degree; %dual angles
condition23=angle(mori,CSL(23,ebsd2('Copper').CS))<3.128*degree;
%condition25=angle(mori,CSL(25,ebsd2('Copper').CS))<3*degree; %dual angles
condition27=angle(mori,(csl27))<2.887*degree; %dual angles
%condition29=angle(mori,CSL(29,ebsd2('Copper').CS))<2.785*degree; %dual angles

However, I am still stuck with the same error:
"Error using bsxfun
Non-singleton dimensions of the two input arrays must match each other."

It is stating a dimensional mis-match, is this a result of certain boundaries having two angles of misorientation that define its CSL value?
Any help would be appreciated,

Thanks,

Weiwei

Ralf Hielscher

unread,
Mar 6, 2017, 2:18:27 PM3/6/17
to MTEX
Hi Weiwei,

have a closer look at your code

angle(mori,csl27)

mori is the list of boundary misorientations, csl27 is the list of CSL 27 misorientations. What do you think is the output? If you want do compute the angle from every boundary misorientation to every CSL 27 misorientation you have to use the command

angle_outer(mori,csl27)

This will give you a matrix of angles. Now you probably, want to check which of the rows of the matrix have at least one angle smaller then 2.88 degree. This is done with

condition27=any(angle_outer(mori,csl27)<2.887*degree,2)

a shortcut for the above line is

condition27 = gB.isTwinning(csl27,2.887*degree)

I hope this helps,

Ralf.

Weiwei Li

unread,
Mar 6, 2017, 2:39:44 PM3/6/17
to mtex...@googlegroups.com
Thanks Ralf,

I understand, but the problem that I was encountering when using "condition27 gB.isTwinning(csl27,2.887*degree)" was that it colours grain boundaries based on local misorientation between grains. I was looking to colour grain boundaries based on mean grain orientation, which is why I started doing 

gbo1=grains(gb.grainId(:,1)).meanOrientation; %pairwise orientations along boundary
gbo2=grains(gb.grainId(:,2)).meanOrientation;
mori=gbo1.\gbo2;

condition27=angle(mori,CSL(27,ebsd('Copper').CS))<2.887*degree;
%courtesy of Rüdiger



Now, that code works except for the sigma boundaries 13,17,19,21,25,27,29

I was wondering how I could get these sigma boundaries to work based when defining CSL boundaries by mean grain orientation.

Thanks for the reply,

Weiwei

Ralf Hielscher

unread,
Mar 6, 2017, 3:57:39 PM3/6/17
to mtex...@googlegroups.com
Hi Weiwei,

my first three lines of code covers your case as well. Have you read it?

Ralf.





********************************************************************
Ralf Hielscher                   Tel: +371-531-38556
Fakultät für Mathematik               +371-531-22200 (Sekr.)
Technische Universität Chemnitz  Fax: +371-531-22109
Reichenhainer Str. 39            E-mail: ralf.hi...@mathematik.tu-chemnitz.de
D-09126 Chemnitz                 http://www.tu-chemnitz.de/~rahi
********************************************************************

On Mon, Mar 6, 2017 at 8:39 PM, Weiwei Li <thewei...@gmail.com> wrote:
Thanks Ralf,

I understand, but the problem that I was encountering when using "condition27 gB.isTwinning(csl27,2.887*degree)" was that it colours grain boundaries based on local misorientation between grains. I was looking to colour grain boundaries based on mean grain orientation, which is why I started doing "condition27=angle(mori,CSL(27,ebsd('Copper').CS))<2.887*degree;"
Defining my grain boundaries like so defines the CSL boundaries by mean grain orientation.

--
If you want to reduce the number of emails you get through this forum login to https://groups.google.com/forum/?fromgroups=#!forum/mtexmail, click "My membership" and select "Don't send me email updates". You can still get emails on selected topics by staring them.
---
You received this message because you are subscribed to the Google Groups "MTEX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mtexmail+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/mtexmail.
For more options, visit https://groups.google.com/d/optout.

Weiwei Li

unread,
Mar 7, 2017, 4:23:31 AM3/7/17
to MTEX, ralf.hi...@mathematik.tu-chemnitz.de
Sorry, I read "a shortcut for the above line is" and assumed that was a shortcut for everything you wrote. I should have tried to understand the first few lines of the code first.

I get it now, you get a list of misorientations based on average grain orientation, which then you take the difference between the csl27 boundaries with. If the difference is within Brandon's criterion for CSL27 boundaries, then condition27 will return 1 (true). 

The line condition27=any(angle_outer(mori,csl27)<2.887*degree,2worked perfect, thanks.

I do have one additional question though.
Now, I am trying to colour another boundary by the criterion of having a misorientation of less than 15 degrees.
I was doing this before:

lowangle = gB.misorientation.angle./ degree;
binc = [0,15,60];
[~,id] = histc(lowangle,binc);
plot(gB(id==1),'lineColor',[0.8 0.8 0.8],'linewidth',1,'DisplayName','Low')

But that does not consider mean grain orientation. 

I tried to use mori directly since it is a list of the boundary misorientations like so:
gbo1=grains(gb.grainId(:,1)).meanOrientation; 
gbo2=grains(gb.grainId(:,2)).meanOrientation; 
mori=gbo1.\gbo2;

binc = [0,15,60];
[~,id] = histc(mori,binc);
But it does not seem to work. I do not think I can use mori in such a way.


Thanks for all the help thus far, it is very much appreciated.

Weiwei





To unsubscribe from this group and stop receiving emails from it, send an email to mtexmail+u...@googlegroups.com.

ruediger Kilian

unread,
Mar 7, 2017, 5:18:10 AM3/7/17
to mtex...@googlegroups.com
Hi Weiwei,

using your variable names:

ind=mori.angle <15*degree;
% just everything red below 15 degree
plot(gb(ind),’linecolor’,’r’)

% continuous colorcoding for the angle below 15 degree
plot(gb(ind),mori(ind).angle/degree)


Cheers,
Rüdiger

Santhosh Kumar

unread,
Mar 9, 2017, 7:54:37 AM3/9/17
to MTEX
hii

A small doubt . How can I calculate the CSL fraction?

I mean the denominator part .

example :   gB at 5 deg : 11756
                  gB at 15deg : 6006

Now CSL 3 fraction is CSL3/(gB at 5deg or 15deg)   ???


Does CSL is property of high angle grain boundary only or it is found in sub grains too??


regards
Santosh
Research Scholar
IGCAR
 

> To unsubscribe from this group and stop receiving emails from it, send an email to mtexmail+unsubscribe@googlegroups.com.

> Visit this group at https://groups.google.com/group/mtexmail.
> For more options, visit https://groups.google.com/d/optout.

--
If you want to reduce the number of emails you get through this forum login to https://groups.google.com/forum/?fromgroups=#!forum/mtexmail, click "My membership" and select "Don't send me email updates". You can still get emails on selected topics by staring them.
---
You received this message because you are subscribed to the Google Groups "MTEX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mtexmail+unsubscribe@googlegroups.com.

Weiwei Li

unread,
Mar 9, 2017, 9:21:14 AM3/9/17
to MTEX
Hi Santhosh,

CSL boundaries are commonly measured for high angle GBs. A high angle GB is usually referred to one as having a minimum misorientation of 15degrees. 

Slide 45 has a nice table of low CSL boundaries: pajarito.materials.cmu.edu/rollett/27750/L14-CSL_Theory_GBE-17Mar16.pptx (these are carnegie melon lecture slides on the concept of CSL)

To calculate length of a boundary, you can do:

sigma3length = condition3.segLength

Let me know if you have anymore questions.

Weiwei

Weiwei Li

unread,
Mar 9, 2017, 11:20:56 AM3/9/17
to MTEX
Sorry, I misinterpreted your question.

You can define your CSL fraction to be whatever you want. My method for obtaining the distribution of GBs is shown in the image attached. 
My low angle criterion is 2-15 degrees.

Weiwei



On Thursday, 9 March 2017 07:54:37 UTC-5, Santhosh Kumar wrote:
cslGBs.PNG

Mustafa Rifat

unread,
Aug 8, 2020, 10:44:09 AM8/8/20
to MTEX
May I know what is the significance of delta=5*degree that has been used in the demo page of mtex CSL theory? I guess If we want to use Brandon's criterion, we have to use just corresponding angles rather than 5 degree right? So the demo did not consider Brandon's criterion, right? 
Reply all
Reply to author
Forward
0 new messages