Single Slip Model edit page

The Sachs Model selects one slip system in each grain but describes only a strength bound. A single-slip texture model follows the next consequence: slip rotates every crystal, so the population of orientations changes during deformation.

This page starts from an isotropic texture, which assigns equal density to every orientation. One prescribed slip system supplies the entire lattice spin. The worked sequence predicts the resulting orientation distribution function (ODF), reads its pole figures, and checks the analytical result against numerical time stepping.

Choose the crystal, slip system, and strain

Use olivine with its three orthorhombic basis slip systems. A slip system is a lattice plane together with a direction in that plane along which the crystal shears plastically.

plottingConvention.default('y↑→x');
csOli = crystalSymmetry('222',[4.779 10.277 5.995], ...
  'mineral','olivine');

sSOli = slipSystem( ...
  Miller({1,0,0},{1,0,0},{0,0,1},csOli,'uvw'), ...
  Miller({0,1,0},{0,0,1},{0,1,0},csOli,'hkl'))
sSOli = slipSystem (olivine)
 size: 1 × 3
 
  u    v    w  | h    k    l CRSS
  1    0    0    0    1    0    1
  1    0    0    0    0    1    1
  0    0    1    0    1    0    1

Rows of the display pair each slip direction \(\mathbf b\) with its plane normal \(\mathbf n\). The example below follows the second system, \([100](001)\).

Impose extension along specimen \(x\), no strain along \(y\), and equal shortening along \(z\). The factor 0.3 is the finite strain magnitude.

E = 0.3 * strainRateTensor([1 0 0; 0 0 0; 0 0 -1])
E = strainRateTensor (y↑→x)
  rank: 2 (3 × 3)
 
 *10^-2
  30   0   0
   0   0   0
   0   0 -30

Compute the analytical texture

SO3FunSBF evaluates the analytical ODF for one slip system and the imposed strain. Compute one structural basis function for each of the three olivine systems.

odf1 = SO3FunSBF(sSOli(1),E)
odf2 = SO3FunSBF(sSOli(2),E)
odf3 = SO3FunSBF(sSOli(3),E)
odf1 = SO3FunSBF (olivine → y↑→x)
 
    slip system: (010)[100]
    strain:      0.3 0 -0.3
 
odf2 = SO3FunSBF (olivine → y↑→x)
 
    slip system: (001)[100]
    strain:      0.3 0 -0.3
 
odf3 = SO3FunSBF (olivine → y↑→x)
 
    slip system: (010)[001]
    strain:      0.3 0 -0.3

Sigma sections expose the full three-dimensional orientation dependence of the second basis function.

plotSection(odf2,'sigma')
mtexColorbar

High density is concentrated at orientations that align the olivine \(c\)-axis with specimen \(z\). This is the preferred orientation predicted for \([100](001)\) slip under the imposed extension and shortening.

Read the same result in pole figures

Pole figures show which crystal axes develop preferred specimen directions. Plot the \(a\)-, \(b\)-, and \(c\)-axis distributions together.

h = Miller({1,0,0},{0,1,0},{0,0,1},csOli);

plotPDF(odf2,h,'resolution',2*degree,'colorRange','equal')
mtexColorbar

The \(c\)-axis pole figure has its strongest maximum at specimen \(z\), as anticipated from the sigma sections. The \(a\)-axis panel shows how that axis is arranged around the preferred direction. The \(b\)-axis panel is flat and featureless: this single system leaves the \(b\)-axis with no preferred specimen direction at all.

Compare the other basis functions

Each active system produces its own basis texture. The first and third systems provide the two remaining olivine end members.

plotPDF(odf1,h,'resolution',2*degree,'colorRange','equal')
mtexColorbar

This is the texture generated by the first system, \([100](010)\).

plotPDF(odf3,h,'resolution',2*degree,'colorRange','equal')
mtexColorbar

This is the texture generated by the third system, \([001](010)\). In each single-slip solution, the pole figure for \(\mathbf n\times\mathbf b\) is uniform. That direction is unchanged by shear on the chosen system.

Combine active systems

A practical model can represent simultaneous activity as a linear combination of the single-slip basis functions. Convert each analytical function to the same harmonic representation before combining it. Equal weights give the normalized mixture below; measured or modelled activities may be used instead.

odfMix = (SO3FunHarmonic(odf1,'bandwidth',24) + ...
  SO3FunHarmonic(odf2,'bandwidth',24) + ...
  SO3FunHarmonic(odf3,'bandwidth',24)) ./ 3;
plotPDF(odfMix,h,'resolution',2*degree,'colorRange','equal')
mtexColorbar

The mixed pole figures retain features from all three end members and are less concentrated than any one-system prediction. This superposition is how the analytical model builds a full ODF from its basis textures.

Apply the construction to another phase

The same constructor accepts a phase-specific system. For example, orthopyroxene \([001](100)\) slip under the same strain gives another basis function without changing the workflow.

csOrtho = crystalSymmetry('222',[18.384,8.878,5.226], ...
  'mineral','orthopyroxene');
sSOrtho = slipSystem(Miller(0,0,1,csOrtho,'uvw'), ...
  Miller(1,0,0,csOrtho,'hkl'));
odfOrtho = SO3FunSBF(sSOrtho,E)
odfOrtho = SO3FunSBF (orthopyroxene → y↑→x)
 
    slip system: (100)[001]
    strain:      0.3 0 -0.3

Construct the orientation-dependent spin

The deformation tensor describes the shear generated by each olivine slip system. Select the second tensor to match odf2.

S = sSOli.deformationTensor;

The function below rotates that tensor into the specimen frame, fits its activity to E, and converts the result into crystallographic spin. The minus sign follows the tangent-vector convention used for ODF transport.

spinFun = @(ori) -2 * SO3TangentVector(spinTensor( ...
  ((ori * S(2)) : E) .* (ori * S(2))),ori);

Omega = SO3VectorFieldHarmonic.quadrature(spinFun,csOli)
Omega = SO3VectorFieldHarmonic (olivine → y↑→x)
  bandwidth: 3
  tangent space: leftVector

See where orientation density moves

The divergence of \(\Omega\) measures whether the orientation flow expands or contracts locally. Arrows show the direction of that flow.

plotSection(div(Omega),'sigma','noGrid')
mtexColorMap blue2red
mtexColorbar
hold on
plot(Omega,'add2all','linewidth',1,'color','k')
hold off

Negative blue regions gain orientation density, while positive red regions lose it. The arrows feed the blue regions whose orientations place the \(c\)-axis near specimen \(z\), predicting the concentration already seen in odf2.

Check the analytical result numerically

doEulerStep transports an initial ODF through an orientation-dependent spin field. Start from the uniform ODF and use 40 explicit steps over the same total deformation.

odf0 = uniformODF(csOli);
odfNumeric = doEulerStep(Omega,odf0,40)

plotSection(odfNumeric,'sigma')
mtexColorbar
odfNumeric = SO3FunHarmonic (olivine → y↑→x)
  bandwidth: 28
  weight: 1

The numerical sections reproduce the analytical concentration. Their mean absolute difference is 0.0011. This small value quantifies the remaining discretization error.

meanError = mean(abs(odfNumeric - odf2))
meanError =
    0.0011

Check for steady state

An ODF is stationary under this spin when the divergence of its density flux, \(\mathrm{div}(f\Omega)\), is zero. Plot that residual for the analytical solution.

plotSection(div(odf2 .* Omega),'sigma')
mtexColorMap blue2red
mtexColorbar
setColorRange(max(abs(clim))*[-1,1])

Values near zero show where odf2 is already stationary. Positive and negative lobes identify orientations at which the chosen spin would still remove or add density.

The maths behind the model

Let \(f(g,t)\) be the ODF at orientation \(g\) and time \(t\), and let \(\Omega(g)\) be the crystallographic spin. Conservation of orientation density gives the continuity equation

\[\frac{\partial f}{\partial t} + \nabla f\cdot\Omega + f\,\mathrm{div}\,\Omega = 0.\]

The initial isotropic texture is \(f(g,0)=1\). For deformation tensor \(S(g)\) and scalar slip activity \(\gamma(g)\), the single-slip ansatz is

\[e(g)=\gamma(g)S(g).\]

Fitting this local strain rate to the macroscopic tensor \(E\) minimizes

\[\int_{SO(3)}\sum_{i,j}\left(e_{ij}(g)-E_{ij}\right)^2\,dg.\]

The minimizing field and its crystallographic spin are

\[e(g)=2\langle S(g),E\rangle S(g), \qquad \Omega_i(g)=\epsilon_{ijk}e_{jk}(g).\]

These equations are the specimen-coordinate construction implemented by spinFun above. An equivalent implementation can map the spin into each crystal frame instead. SO3FunSBF supplies the finite-strain analytical solution, while doEulerStep integrates the same continuity equation.

References

Next

This page treats orientation evolution inside independently slipping crystals. Continue with Slip Transmission to ask whether a slip system can transfer deformation across a grain boundary.

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/SingleSlipModel.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.