ОПАСНОСТЬ! Пост с теоретическими ошибками. НЕ выполняйте эту процедуру. ОЖИДАНИЕ ОБНОВЛЕНИЯ.

Основная цель этого поста — оценка модальных ориентаций и их весов, что позволяет нам определить наличие или отсутствие текстуры в ODF.

Второстепенной задачей поста является построение карты EBSD только с зернами, имеющими модальную ориентацию. Однако эта часть будет опубликована в обновленном посте.

Для начала нам нужно рассчитать модальные ориентации.

Когда у вас есть ODF, просто используйте следующую команду:

%Modal Orientation of alpha and beta with their respective weights.
[modesa,weightsa] = calcComponents(odfa)
[modesb,weightsb] = calcComponents(odfb)
%So it's necessary to select the grains in based on the orientation
%Group grains of each phase
grains_csma = grains_csm('Titanium (Alpha)')
grains_csmb = grains_csm('Titanium (Beta)')
%Now, for each modal orientation will create a subgroup of grains
modala_grains1 = grains_csma(angle(grains_csma.meanOrientation,modesa(1))<20*degree)
modalb_grains1 = grains_csmb(angle(grains_csmb.meanOrientation,modesb(1))<20*degree)
%And plot it
plot(modala_grains1), hold on
plot(modalb_grains1)
%Note: If you want to know the notation in Miller Indices of these modal orientations uses:
round2Miller(modesa(1))
round2Miller(modesb(1))

Цветовой код для каждой группы модальной ориентации будет необходим, вы можете сделать это таким образом.

modala_grains1.color = 'red'
modalb_grains1.color = 'blue'

Быстрый способ увидеть, выбран ли диапазон градусов для построения графика, — это нарисовать стрелку над каждым выбранным зерном с соответствующей ориентацией и сравнить их.

%First, become the orientation of the selected grains in a vector3d
dira = modala_grains1.meanOrientation * Miller(1,0,0,modala_grains1.CS)
dirb = modalb_grains1.meanOrientation * Miller(1,0,0,modalb_grains1.CS)
%Then you should create a vector with the length of each arrow, proportional to the grain size
len_a = 0.25*modala_grains1.diameter
len_b = 0.25*modalb_grains1.diameter
%Finally plot it
quiver(modala_grains1,len_a.*dira,'autoScale','off','color','black')
quiver(modalb_grains1,len_b.*dirb,'autoScale','off','color','black')

В этом случае имеется несколько ориентаций с большой разориентацией относительно модальной ориентации, поэтому мы уменьшим угол, обусловливающий подгруппы, с 20 до 5 градусов. В результате получаем цифру 3.

Также можно увидеть диапазон ориентаций на гистограмме.

%Histogram for alpha modal orientation
plotAngleDistribution(modala_grains1.meanOrientation)
xlabel('Orientation angles in degree')
ylabel('Frecuency (%)')
title('Alpha Modal Orientations')
%Histogram for beta modal orientation
plotAngleDistribution(modalb_grains1.meanOrientation)
xlabel('Orientation angles in degree')
ylabel('Frecuency (%)')
title('Beta Modal Orientations')

Важно учитывать объемную долю этих модальных ориентаций. Для этого мы будем рассматривать их как текстурные волокна.

%Create the crystal symmetries of each phase
csa = ebsd_smoothed('Titanium (Alpha)').CS
csb = ebsd_smoothed('Titanium (Beta)').CS
%Next, become modal orientation in 3dvector
dira_g = modesa.*Miller(0,0,0,1,csa)
dirb_g = modesb.*Miller(0,0,1,csb)
%Calculate the volume of each modal orientation
volume_ma1 = fibreVolume(odfa,Miller(0,0,0,1,csa),dira_g(1),5*degree),
volume_mb1 = fibreVolume(odfb,Miller(0,0,1,csb),dirb_g(1),5*degree)
%As result we have:
volume_ma1 =
0.0220
volume_mb1 =
0.0344

С этими результатами мы видим, что модальные ориентации не репрезентативны, показывая нам, что нет текстуры.

Библиография