ОПАСНОСТЬ! Пост с теоретическими ошибками. НЕ выполняйте эту процедуру. ОЖИДАНИЕ ОБНОВЛЕНИЯ.
Основная цель этого поста — оценка модальных ориентаций и их весов, что позволяет нам определить наличие или отсутствие текстуры в 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
С этими результатами мы видим, что модальные ориентации не репрезентативны, показывая нам, что нет текстуры.