Speed Improvements
Support for hexagonal EBSD grids
The function gridify now works also for EBSD data measured on a hexagonal grid. As a consequence denoising and GND computation for those data is also on the way.
Plastic Deformations
MTEX 5.2. introduces a bunch of new tensor classes to make modelling of plastic deformations more straight forward.
The relationships between those tensors are explained in the section plastic deformations.
Spherical Bingham Distribution
Nativ support for spherical Bingham distributions, including the abbility to fit them to directional distributions.
Tensor Visualisation
Improved methods for the vizualisation of ellastic properties, see Seismic demo
Improved Figure Layout
Misc Changes
ebsd{id} grains{id}
scatter(v,'numbered') % plot vectors with numbers scatter(v,'MarkerFaceColor','none') % plot vectors with colored empty marks
Dislocation systems
Starting with version 5.1 MTEX introduces a class representing dislocation systems. Dislocation systems may be lists of edge or screw dislocations and are either defined by its burgers and line vectors
cs = crystalSymmetry('432') b = Miller(1,1,0,cs,'uvw') l = Miller(1,-1,-2,cs,'uvw') dS = dislocationSystem(b,l)
by a family of slipsystems
sS = slipSystem.fcc(cs) dS = dislocationSystem(sS)
or as the family of predefined dominant dislocation systems by
dS = dislocationSystem.fcc(cs)
More information how to calculate with dislocation systems can be found here.
Geometrically neccesary dislocations
The newly introduced dislocation systems play an important role when computing geometrically neccesary dislocations from EBSD data. The workflow is illustrate the script GND_demo and consists of the following steps:
Tensor arithmetics
dyad, trace, det, mean, diag, eye, sym
Birefringence
MTEX 5.1 includes some basic methods to analyze and simulate optically isotropic materials. This includes the computation of the optical axis, birefringence and spectral transmission. The new features are demonstrated in BirefringenceDemo.
Color Keys
In MTEX 5.1 the color keys used for coloring EBSD have been a bit reorganised.
Spherical functions
Misc
Replace all executables by two mex files
In MTEX many functionalities are based on the non equispaced fast Fourier transform (NFFT). Until now this dependency was kept under the hood, or more precisely, hidden in external executable files which often caused troubles on MAC systems. Starting with MTEX 5.0. all the executables have been replaced by two mex files provided by the NFFT package. This change (hopefully) comes with the following advantages
Spherical functions
Many functions in MTEX compute directional dependent properties, e.g. pole figures, inverse pole figures, wave velocities, density distribution of misorientation axis or boundary normals. Until now those functions took as an input an of vector of directions and gave as an output a corresponding vector of function values, e.g. the command
pfi = calcPDF(odf,Miller(1,0,0,odf.CS),r)
returns for a list of specimen directions r the corresponding list of pole figure intensities pfi for the ODF odf. Starting with MTEX 5.0 it is possible to ommit the list of specimen directions r or replace it by an empty list []. In this case the command
pdf = calcPDF(odf,Miller(1,0,0,odf.CS))
returns a spherical function pdf also called pole density function. One can evaluate this spherical function using the command eval at the list of specimen directions r to obtain the pole figure intensities
pfi = pdf.eval(r)
However, there are many more operations that can be performed on spherical functions:
% compute with spherical functions as with ordinary numbers pdf3 = 5 * pdf1 + 3 * pdf2 pdf = max(pdf,0) % repace of negative entries by 0 pdf = abs(pdf) % take the absolute value sum(pdf) % the integral of the pole figure sum(pdf.^2) % the integral of the pole figure squares - also called pole figure index
% plotting plot(pdf) plot3(pdf) % plot in 3d
% detect maximum value
[value,pos] = max(pdf)
% compute the eigen values and eigen vectors
[e,v] = eig(pdf)
For a complete list of functions read here.
Symmetry aware spherical functions
Since most of the directional dependent properties obey additional symmetry properties the class S2FunHarmonic has been extended to symmetry in the S2FunHarmonicSym class.
Multivariate spherical functions, vector fields and spherical axis fields
In some cases it is useful that a spherical function gives not only one value for a certain direction but several values. This is equivalent to have concatenate several univariate spherical function to one multivariate function. This can be accomplished by
S2Fmulti = [S2F1,S2F2,S2F3]
which gives a spherical function with 3 values per direction. More information how to work multivariate functions can be found here.
If we interpret the 3 values of S2Fmulti as , , and, coordinate of a 3 dimensional vector, the function S2Fmulti can essentially be seen as a spherical vector field associating to each direction a three dimensional vector. The most important example of such a vector field is the gradient of a spherical function:
g = S2F1.grad
The resulting variable g is of type S2VectorField. A complete list of functions available for vector fields can be found here.
Another example for vector fields are polarisation directions pp, ps1, ps2 as computed by
[vp,vs1,vs2,pp,ps1,ps2] = velocity(C)
The main difference is, that polarisation directions are antipodal, i.e. one can not distinguish between the polarisation direction d and -d. In MTEX we call vector fields with antipodal values are represented by variables of type AxisField.
Scalar tensor properties are returned as spherical functions
Any scalar or vectorial property of a tensor is not returned as a spherical function or spherical vector field. Examples are the velocity properties mentioned above, Youngs modulus, shear modulus, Poisson ration etc. In particular, plotting those directional dependend quantities is as simple as
plot(C.YoungsModulus)
This makes the old syntax
plot(C,'plotType','YoungsModulus')
obsolete. It is not supported anymore.
Crystal shapes
MTEX 5.0 introduces a new class crystalShape. This class allows to plot 3-dimensional representations of crystals on top of EBSD maps, pole figures and ODF sections. The syntax is as follows
% define the crystal symmetry cs = loadCIF('quartz');
% define the faces of the crystal m = Miller({1,0,-1,0},cs); % hexagonal prism r = Miller({1,0,-1,1},cs); % positive rhomboedron, usally bigger then z z = Miller({0,1,-1,1},cs); % negative rhomboedron s2 = Miller({1,1,-2,1},cs); % right tridiagonal bipyramid x2 = Miller({5,1,-6,1},cs); % right positive Trapezohedron N = [m,r,z,s2,x2];
% define the crystal shape habitus = 1.2; % determines the overal shape extension = [1,1.2,1]; % determines the extension of the crystal in x,y,z direction cS = crystalShape(N,habitus,extension);
plot(cS) plot(x,y,cS) plot(grains,cS) plot(ebsd,cS) plotPDF(ori,ori*cS)
ODF component analysis
MTEX 5.0 allows for decomposing ODF into components using the command calcComponents. In its simplest form
[mods,weights] = calcComponents(odf)
returns a list of modal orientaions mods and a list of weights which sum up to one. A more advanced call is
[modes, weights,centerId] = calcComponents(odf,'seed',oriList)
which returns in centerId also for each orientation from oriList to which component it belongs.
Clustering of orientations
The ODF component analysis is used as the new default algorithm in calcCluster for orientations. The idea is to compute an ODF out of the orientations and call calcComponents with
[center,~,centerId] = calcComponents(odf,'seed',ori)
Then center are the clusters center and centerId gives for each orientation to which cluster it belongs. Substantional in this method is the choise of the kernel halfwidth used for ODF computation. This can be adjusted by
[c,center] = calcCluster(ori,'halfwidth',2.5*degree)
New tensor classes
With MTEX 5.0 we start introducing specific tensor classes. So far we included the following classes
more tensors are supposed to be included in the future. The central advantage is that tensor specific behaviour and functions can now better be implemented and documented, e.g., that the inverse of the compliance tensor is the stiffness tensor and vice versa. For user the important change is that e.g. the stiffness tensor is now defined by
C = stiffnessTensor(M,cs)
instead of the depreciated syntax
C = tensor(M,cs,'name','ellastic stiffness','unit','GPA')
Improved spherical plotting
In MTEX 4.X it was not possible to display the upper and lower hemisphere in pole figure plots, inverse pole figure plots or ODF section plots. This was a server restriction as for certain symmetries both hemispheres do not have to coincide. In MTEX 5.0 this restriction has been overcome. MTEX automatically detects whether the upper and lower hemisphere are symmetrically equivalent and decides whether both hemispheres needs to be plotted. As in the previous version of MTEX this can be controlled by the options upper, lower and complete.
As a consequence the behaviour of MTEX figures have changed slightly. By default MTEX now always plots into the last axis. In order to annotate orintations or directions to all axes in a figure use the new option add2all.
plotIPDF(SantaFe,[xvector,yvector+zvector]) [~,ori] = max(SantaFe) plot(ori,'add2all')
We also introduced two new functions plotSection and quiverSection to visualize spherical functions restricted to a plane. As an exaple one can now plot the slowness surfaceses of wave velocities in the plane perpendicular to Y with
plotSection(1./vp,vector3d.Y)
see here for more information.
Other new functions
This is mainly a bug fix release
orientation relation ships
gT = GreningerTrojano(csAlpha,csGamma) ori_childs = ori_parent * inv(gT.variants) ori_parents = ori_child * gT.parents
This is mainly a bug fix release
3d orientation plots
MTEX 4.5 supports plotting of orientations, fibres, and ODFs in 3d in various projections like
Misorientations
orientation.Bain(cs) orientation.KurdjumovSachs(cs) orientation.NishiyamaWassermann(cs) orientation.Pitch(cs)
Grain Reconstruction
New option to handle non convex other shapes of EBSD data sets
calcGrains(ebsd,'boundary','tight')
Tensors
EBSD
Rotating, flipping of EBSD data is now done with respect to the center of the map. Previously all these opertions where done relatively to the point (0,0). Use
rotate(ebsd,180*degree,'center',[0,0])
to get back the behavior of previous versions.
Colorbar
MTEXColorbar allows now to have a title next to it. Use
mtexColorbar('Title','this is a title')
Bug Fix This release contains several important bug fixes compare to MTEX 4.4.
Slip Systems
MTEX 4.4 introduces support for slip systems. Slip systems are defined by a plane normal and a slip direction
sSFCC = slipSystem(Miller(0,1,-1,cs,'uvw'),Miller(1,1,1,cs,'hkl'));
Slip systems are instrumental for computating the following properties
Fibres
MTEX 4.4 adds support for fibres in orientation space. As an example the alpha fibre in cubic materials can be defined in the following ways
cs = crystalSymmetry('m-3m')
f = fibre.alpha(cs)
f = fibre(Miller(1,0,0,cs),vector3d.X)
ori1 = orientation('Miller',[0 0 1],[1 1 0],cs); ori2 = orientation('Miller',[1 1 1],[1 1 0],cs);
f = fibre(ori1,ori2)
f = fibre.fit([ori1,ori2,mean(ori1,ori2)])
All commands that took a pair of directions to specify a fibre, e.g., fibreODF, fibreVolume, plotFibre have been rewritten to accept a fibre as a single input argument. I.e. a fibre ODF is now defined by
odf = fibreODF(fibre.alpha(cs))
Up to now the following functions are implemented for fibres
oR = fundamentalRegion(cs,cs) f = fibre(oR.V(1),oR.V(2)) plot(oR) hold on plot(fibre,'color','r','linewidth',2) hold off
angle(f,ori)
Ignore Symmetry
Many functions support now the flag noSymmetry. Among them are angle, axis, dot, cunion.
Clustering of orientations
The new command cluster allows to cluster a given set of orientations into a given number of clusters.
% generate orientation clustered around 5 centers cs = crystalSymmetry('m-3m'); center = orientation.rand(5,cs); odf = unimodalODF(center,'halfwidth',5*degree) ori = odf.calcOrientations(3000);
% find the clusters and its centers [c,centerRec] = cluster(ori,'numCluster',5);
% visualize result
oR = fundamentalRegion(cs);
plot(oR)
hold on plot(ori.project2FundamentalRegion,c) caxis([1,5]) plot(center.project2FundamentalRegion,'MarkerSize',10,'MarkerFaceColor','k','MarkerEdgeColor','k') plot(centerRec.project2FundamentalRegion,'MarkerSize',10,'MarkerFaceColor','r','MarkerEdgeColor','k') hold off
Alignment of Miller plots
You can now specify the alignment of the crystal a-axis or b-axis in Miller plots by
plota2north, plota2east, plota2south, plota2west plotb2north, plotb2east, plotb2south, plotb2west
This might also be specify in mtex_settings.m mtex_settings.
Alignment of Miller plots
Starting with MTEX 4.3 plots with respect to the crystal coordinate system, i.e., inverse pole figure plots, misorientation axis plot, ipf keys, are always aligned such that the b-axis points towards east. This follows the convention given in the International Table of Crystallography. The alignment can be adjusted using the option xAxisAlignment
plot(Miller(1,0,0,cs),'xAxisAlignment',30*degree)
Plotting vector fields at grain centers or grain boundaries
There are three new commands
that allow visualizing directions for EBSD data, grains and at grain boundaries. The input argument dir should be a list of vector3d and may represent e.g. slip directions, polarization direction, etc.
EBSD data in raster format
Until MTEX 4.2 EBSD data have been always considered as a one-dimensional list of data, i.e., the often present structure of a regular grid was completely ignored. Starting with MTEX 4.3 EBSD data can be converted in a regular grid by
ebsd = ebsd.gridify
Missing data are represented as NaN in the regular representation. Gridified EBSD data may be addressed analogously like matrixes, i.e.,
ebsd(100,200)
will give pixel 100 in the y-direction and 200 in the x-direction. Analogously.
ebsd(50:100,:)
will give the stripe if pixels with y coordinate between 50 and 100.
Orientation gradients and GND
Gridified EBSD data allows also to compute orientation gradients by
ebsd.gradientX ebsd.gradientY
as well as an estimate of the geometrically necessary dislocation density (GND) using the command calcGND
ebsd.calcGND
Auxilary new functionality
MTEX 4.2 introduces basic functionality for triple junction analysis in grain maps.
Triple points
Triple points are automatically computed during grain reconstruction and can be accessed by
grains.triplePoints grains.boundary.triplePoints
More details on how to work with triple points can be found here.
large EBSD data sets
Analyzing large EBSD data sets may be quite annoying due to memory consumption and slow plotting. As a work around MTEX includes a new function reduce which allows reducing the data set to each n-th pixel, i.e.,
ebsd_small = reduce(ebsd,2)
contains only 25 percent of the data of the original data set. This functionality is assumed to be used for experimenting around with the data set and setting up a proper analysis script. The final analysis should, if possible, be done with the entire data set.
New option to ignore symmetry
When computing the angle between crystal directions, the misorientation angle between orientations and the misorientation axis symmetry can be ignored with the flag noSymmetry
angle(Miller(1,0,0,cs),Miller(0,1,0,cs),'noSymmetry') angle(mori,'noSymmetry') axis(mori,'noSymmetry')
Axis distributions in specimen coordinates
In order to plot axis distributions in specimen coordinates, you can now do
[ori1,ori2] = calcMisorientation(ebsd('phaseName')) plotAxisDistribution(ori1,ori2,'contourf')
or
ori = ebsd(grains.boundary('indexed').ebsdId).orientations plotAxisDistribution(ori(:,1),ori(:,2),'contourf')
New option to work around Matlab opengl bug
In mtex_settings.m mtex_settings there is a new option that may help to work around the Matlab opengl bug. Switching it of may give nicer graphics.
setMTEXpref('openglBug',true)
CSL misorientations
The function CSL requires now as a mandatory argument the crystal symmetry of the phase, i.e.
CSL(3,crystalSymmetry('m-3m'))
Grain boundaries
Grain boundaries segments have a new option midPoint which may be used for attaching a vector displaying the misorientation axis or some other direction.
More ODF sections
Along with the old syntax, there is now a new syntax that allows for more fine control of the ODF sections.
oS = phi2Sections(odf.CS,odf.SS) oS.phi2 = [ 10*degree, 30*degree, 90*degree ];
plot(odf,oS)
Ordering of crystal symmetries
One can now check whether a crystal symmetry cs1 is a subgroup of crystal symmetry cs2 by
cs1 <= cs2
Further, the largest proper subgroup of some crystal symmetry cs is now accessible by
cs.properSubGroup
MTEX 4.1 introduces new possibilities to the analysis of misorientations. For the first time, it covers all geometric aspects of misorientations between arbitrary crystal symmetries. Furthermore, MTEX 4.1 introduces filters to smooth EBSD data.
Smoothing of EBSD Data
Smoothing of EBSD data might be necessary if the orientation data are corrupted by noise which influences the estimation of orientation dependent properties like KAM or GND. The general syntax for smoothing EBSD data is
ebsd = smooth(ebsd)
This applies the spline filter to the orientation data. Beside the spline filter, many other filters are available. A general discussion on this topic can be found here. To make use of a different than the dafault filter use the syntax
F = medianFilter
F.numNeighbours = 2 % this way options for the filter can be set
ebsd = smooth(ebsd,F)
The command smooth can also be used to fill not indexed measurement points. This behavior is enabled by the option fill
ebsd = smooth(ebsd,F,'fill')
Support for antipodal symmetry for misorientations
When working with boundary misorientations between the same phase one can not distinguish between a misorientation mori and its inverse |inv(mori). Starting with MTEX 4.1 this symmetry is supported for misorientations and misorientation distribution functions.
mori = inv(ori1) * ori2; mori.antipodal = true;
mdf = calcMDF(odf1,odf2,'antipodal')
Antipodal symmetry effects the asymmetric region in orientation space as described below, as well as the distance between misorientations. Boundary misorientations between the same phase have set the flag antipodal by default.
Asymmetric regions in orientation space
MTEX 4.1 has now full support of asymmetric regions in orientation space. For any combination of crystal symmetries they can be defined by
oR = fundamentalRegion(cs1,cs2)
and visualized by
plot(oR)
One can check, whether an orientation is within the fundamental region by
oR.checkInside(ori)
similarly as for a sphericalRegion. The fundamental region with antipodal symmetry is defined by.
oR = fundamentalRegion(cs1,cs2,'antipodal')
For a fixed rotational angle omega, the intersection of the fundamental region with the sphere with radius omega gives the fundamental sector for the corresponding rotational axes. The axis sector can be computed by
sR = oR.axisSector(omega)
Axis and angle distributions
Thanks to the implementation of the asymmetric region plotAxisDistribution and plotAngleDistribution works in MTEX 4.1 for any combination of crystal symmetries.
The following syntax is obsolete
plotAxisDistribution(grains.boundary('phase1','phase2')) plotAngleDistribution(grains.boundary('phase1','phase2')) plotAngleDistribution(ebsd)
As replacement use the more verbose syntax
plotAxisDistribution(grains.boundary('phase1','phase2').misorientation) plotAngleDistribution(grains.boundary('phase1','phase2').misorientation)
mori = calcMisorientation(ebsd('phase1'),ebsd('phase2')) plotAngleDistribution(mori) plotAxisDistribution(mori)
Rotational axis in specimen coordinates
It is now possible to compute the misorientation axis between two orientations in specimen coordinate system. This is done by
axis(ori1,ori2)
To do so with random misorientations from an EBSD data set do
[ori1,ori2] = calcMisorientation(ebsd('phase1'),ebsd('phase2')) plot(axis(ori1,ori2))
Axis angle plots
(Mis)Orientation, ODFs, and MDFs can now be plotted in axis angles sections. Those plots respect the fundamental sector depending on the misorientation angle and for all combinations of crystal symmetries. The angle sections are scaled such that they represent the corresponding volume in orientation space. This can be switch off as described below
plotSection(mori,'axisAngle',55*degree) plotSection(mdf,'axisAngle',(15:10:55)*degree) plotSection(mdf,'axisAngle',(15:10:55)*degree,'volumeScaling',false) plotSection(mdf,'axisAngle',(15:10:55)*degree,'antipodal')
Replace plotODF by a plotSection
In most cases, you can replace plotODF by a|plot|. Only for misorientations, the default plot is scattered.
More default settings for EBSD maps and pole figure plots
setMTEXpref('showMicronBar','off')
setMTEXpref('showCoordinates','off')
pfAnnotations = @(varargin) text([vector3d.X,vector3d.Y],{'RD','ND'},... 'BackgroundColor','w','tag','axesLabels',varargin{:}); setMTEXpref('pfAnnotations',pfAnnotations);
Other improvements since MTEX 4.0.0
During the minor revisions of MTEX also several minor improvements have been added which are summarized below
hostGrain.checkInside(grainList)
plot(odf,pf.h,'superposition',pf.c)
[~,mP] = plot(ebsd)
mP.micronBar.visible = 'off'
plot(xvector,'label','RD','textAboveMarker')
a = axis(o1,o2) % misorientation axis with respect to sample coordinate system
a = axis(inv(o2)*o1) % misorientation axis with respect to crystal coordinate system
[x,y] = grains.boundary.intersect(xy1,xy2);
plotAngleDsitribution(mori,'percent')
plot(pf,'minmax')
ebsd_prof = ebsd.spatialProfile(ebsd,some_line)
h = Miller({1,0,0},{1,1,1},{2,3,4},CS,'uvw')
gB.segmentLength % length of the corresponding connected segment gB.isTwinning(mori,threshold) % check boundary for twinning
cs.Aaxis cs.AaxisRec
MTEX 4 is a complete rewrite of the internal class system which was required to keep MTEX compatible with upcoming Matlab releases. Note that MTEX 3.5 will not work on Matlab versions later than 2014a. As a positive side effect, the syntax has been made more consistent and powerful. On the bad side MTEX 3.5. code will need some adaption to run on MTEX 4. There are two general principles to consider
Use dot indexing instead of getting and setting methods
The syntax
h = get(m,'h') m = set(m,'h',h+1)
is obsolete. set and get methods are not longer supported by any MTEX class. Instead use dot indexing
h = m.h m.h = h + 1
Note, that this syntax can be nested, i.e., one can write
ebsd('Forsterite').orientations.angle
to get the rotational angle of all Forsterite orientations, or,
cs.axes(1).x
to get the x coordinate of the first crystallographic coordinate axis - the a-axis. As a nice bonus, you can now use TAB completion to cycle through all possible properties and methods of a class.
Use camelCaseCommands instead of under_score_commands
Formerly, MTEX used different naming conventions for functions. Starting with MTEX 4.0 all function names consisting of several words, have the first word spelled with lowercase letters and the consecutive words starting with a capital letter. Most notable changes are * plotPDF * plotIPDF * plotODF * calcError
Grain boundaries are now directly accessible
MTEX 4.0 introduces a new type of variables called grainBoundary which allows to represent arbitrary grain boundaries and to work with them as with grains. The following lines give some examples. Much more is possible.
% select boundary from specific grains
grains.boundary
% select boundary by phase transistion gB = grains.boundary('Forstarite','Enstatite')
% select boundary by misorientation angle
gB(gB.misorientation.angle>100*degree)
% compute misorientation angle distribution for specific grain boundaries
plotAngleDistribution(gB)
Plotting EBSD, grain, grainBoundary data has different syntax
The syntax of the plot commands has made more consistent throughout MTEX. It is now
plot(obj,data)
where obj is the object to be plotted, i.e., EBSD data, grains, grain boundaries, spherical vectors, pole figures, etc., and the data are either pure numbers or RGB values describing the color. Examples are
% plot MAD values of EBSD data
plot(ebsd,ebsd.mad)
% colorize grains according to area
plot(grains,grains.area)
% colorize grain boundary according to misorientation angle gB = grains.boundary('Forsterite','Enstatite') plot(gB,gB.misorientation.angle)
Colorization according to phase or phase transition is the new default when calling plot without data argument, i.e., the following results in a phase plot
plot(ebsd)
In order to colorize ebsd data according to orientations, one has first to define an orientationMapping by
oM = ipdfHSVOrientationMapping(ebsd('Forsterite'))
Then one can use the command oM.orientation2color to compute RGB values for the orientations
plot(ebsd('Forsterite'),oM.orientation2color(ebsd('Forsterite').orientations))
The orientation mapping can be visualized by
plot(oM)
EBSD data are always spatially indexed
Starting with MTEX 4.0 EBSD data alway have to have x and y coordinates. EBSD data without spatial coordinates are imported simply as orientations. As a consequence, all orientation related functionalities of EBSD data have been moved to orientations, i.e., you can not do anymore
plotpdf(ebsd('Fo'),Miller(1,0,0,CS)) calcODF(ebsd('Fo')) volume((ebsd('Fo'))
But instead you have to explicitely state that you operate on the orientations, i.e.
plotpdf(ebsd('Fo').orientations,Miller(1,0,0,ebsd('Fo').CS)) calcODF(ebsd('Fo').orientations) volume((ebsd('Fo').orientations)
This makes it more easy to apply the same functions to misorientations to grain mean orientations grains.meanOrientation, ebsd misorientation to mean mean |ebsd.mis2mean or boundary misorientations grains.boundary.misorientation
Different syntax for reconstructing grains from EBSD data
In MTEX 3.5 the command
grains = calcGrains(ebsd)
duplicates the ebsd data into the grain variable allowing to access the EBSD data belonging to a specific grain by
get(grains(1),'EBSD')
In MTEX 4.0 the command calcGrains returns as an additional output the list of grainIds that is associated with the EBSD data. When storing these grainIds directly inside the EBSD data, i.e., by
[grains,ebsd.grainId] calcGrains(ebsd)
one can access the EBSD data belonging to a specific grain by the command
ebsd(grains(1))
MTEX 4.0 distinguishes between crystal and specimen symmetry
In MTEX 4.0 two new variable types specimenSymmetry and crystalSymmetry have been introduced to distinguish clearly between these two types of symmetry. Calling
cs = symmetry('m-3m') ss = symmetry('triclinic')
is not allowed anymore! Please use instead
cs = crystalSymmetry('m-3m','mineral','phaseName') ss = specimenSymmetry('triclinic')
Pole figure indexing is now analogously to EBSD data
You can now index pole figure data by conditions in the same manner as EBSD data. E.g. the condition
condition = pf.r.theta < 80 * degree
is an index to all pole figure data with a polar angle smaller than 80 degree. To restrict the pole figure variable pf to the data write
pf_restrcited = pf(condition)
In the same manner, we can also remove all negative intensities
condition = pf.intensities < 0 pf(condition) = []
In order to address individuell pole figures within a array of pole figures pf use the syntax
pf('111')
or
pf(Miller(1,1,1,cs))
The old syntax
pf(1)
for accessing the first pole figure will not work anymore as it now refers to the first pole figure measurement. The direct replacement for the above command is
pf({1})
MTEX 4.0 supports all 32 point groups
In MTEX 4.0 it is for the first time possible to calculate with reflections and inversions. As a consequence, all 32 point groups are supported. This is particularly important when working with piezoelectric tensors and symmetries like 4mm. Moreover, MTEX distinguishes between the point groups 112, 121, 112 up to -3m1 and -31m.
Care should be taken, when using non-Laue groups for pole figure or EBSD data.
Support for three-digit notation for Miller indices of trigonal symmetries
MTEX 4.0 understands now uvw and UVTW notation for trigonal symmetries. The following two commands define the same crystallographic direction, namely the a1-axis
Miller(1,0,0,crystalSymmetry('-3m'),'uvw')
Miller(2,-1,-1,0,crystalSymmetry('-3m'),'UVTW')
Improved graphics
MTEX can now display colorbars next to pole figure, tensor or ODF plots and offers much more powerfull options to customize the plots with titles, legends, etc.
Functionality that has been (temporarily) removed
This can be seen as a todo list.
Misorientation colorcoding
plotBoundary(grains('Fo'),'property','misorientation','colorcoding','patala')
Fast multiscale clustering (FMC) method for grain reconstruction
grains = calcGrains(ebsd,'FMC')
Misc changes
get(grains,'id')
poly = [ [x1,y1];[x2,y2];[xn,yn];[x1,y1] ]
grains = calcGrains(ebsd,'boundary',poly)
poly = selectPolygon
Bug fixes
bugfix release
bugfix release
New plotting engine
MTEX 3.4 features a completely rewritten plotting engine. New features include
plotzOutOfPlane, plotzIntoPlane
ax = subplot(2,2,1) plot(ax,xvector)
plotpdf(ebsd,Miller(1,0,0),'contourf')
Colormap handling
mtexColorMap red2blue
ODF
[modes, values] = calcModes(odf,n)
EBSD data
% convert spatial coordinates to Euler angle coordinate system loadEBSD('filename','convertSpatial2EulerReferenceFrame')
% convert Euler angles to spatial coordinate system loadEBSD('filename','convertEuler2SpatialReferenceFrame')
CS = symmetry('cubic','mineral','Mg','color','red')
inpolygon(ebsd,[xmin ymin xmax ymax])
Tensors
R = SchmidTensor(m,n)
[tauMax,mActive,nActive,tau,ind] = calcShearStress(stressTensor,m,n,'symmetrise')
% extract entry 1,1,1,1 in tensor notation
C{1,1,1,1}
% extract entry 1,1 in Voigt notation
C{1,1}
% extract the first tensor
C(1)
Import / Export
export(ori,'fname')
v = loadVector3d('fname','ColumnNames',{'x','y','z'}) v = loadVector3d('fname','ColumnNames',{'latitude','longitude'})
General
setpref('mtex','propertyName','propertyValue')
has been replaced by
setMTEXpref('propertyName','propertyValue')
bugfix release
bugfix release
Grains: change of internal representation
Reimplementation of the whole grain part:
get(grains,'EBSD')
EBSD
The behavior of the 'ignorePhase' changed. Now it is called in general 'not indexed' and the not indexed data is imported generally. If the crystal symmetry of an EBSD phase is set to a string value, it will be treated as not indexed. e.g. mark the first phase as 'not indexed'
CS = {'not indexed',... symmetry('cubic','mineral','Fe'),... symmetry('cubic','mineral','Mg')};
By default, calcGrains does also use the 'not Indexed' phase.
Other
bugfix release
New Features
Bug Fixes
3d EBSD Analysis
This release for the first time supports 3d EBSD data. In particular, MTEX is now able to
Misorientation Analysis
New Syntax for EBSD and grain variables
EBSD and grain variables can now be indexed by phase, region or grain / ebsd variables. Let us assume we have a two phase ebsd variable containing 'Fe' and 'Mg' then can restrict our dataset to the Fe - phase only by writing
ebsd('Fe')
The same works with grains and also with more than one phase. Please have a look into the documentation for information how to index ebsd and grain variables.
Accordingly the following syntax is now depreciated.
calcODF(ebsd,'phase',2)
It should be replaced by
calcODF(ebsd('Fe'))
Other Enhangments
Tensor Arithmetics This release introduces tensor analysis into MTEX, this includes
Other Enhancements
Crystal Geometry
This release contains a completely redesigned crystal geometry engine which is thought to be much more intuitive and flexible. In particular, it introduces two new classes rotation and orientation which make it much easier to work with crystal orientations. Resulting features are
Other Enhancements
Grain Analysis for EBSD Data
MTEX is now able to partition spatial EBSD data into grains. This allows for the computation of various grain characteristics, as well as the computation and visualization of the grain boundaries and neighborhood relationships. Main features are:
Visualization Improvements
General Improvements
Incompatible Changes to Previous Versions
Improved EBSD import
Improved EBSD plotting
General Improvements
Incompatible Changes to Previous Versions
Improved Import Wizzard
Improved Pole Figure Analysis
Improved EBSD Data Support
Improved Plotting
Bug Fixes
New Installer Including Binaries for Windows, Linux, and Max OSX
New ODF Class
New Interfaces
Improved Plotting
Incompatible Changes With Previous Releases
Improved Documentation
MTEX comes now with over 500 help pages explaining the mathematical concepts, the philosophy behind MTEX and the syntax and usage of all 300 functions available in MTEX. Furthermore, you find numerous examples and tutorials on ODF estimation, data import, calculation of texture characteristics, ODF and pole figure plotting, etc.
Bug Fixes
Speed Improvements
New Support of EBSD Data Analysis
New Functions
Incompatible Changes With Previous Releases
DocHelp 0.1 beta |