Single Slip Model edit page

Details to this model can be found in

The Continuity Equation

The evolution of the orientation distribution function (ODF) \(f(g)\) with respect to a crystallographic spin \(\Omega(g)\) is governed by the continuity equation

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

The solution of this equation depends on the initial texture \(f_0(g)\) at time zero and the crystallographic spin \(\Omega(g)\). In this model we assume the initial texture to be isotropic, i.e., \(f_0 = 1\) and the crystallographic spin be associated with a single slip system. The full ODF will be later modeled as a superposition of the single slip models.

In this example we consider Olivine with has orthorhombic symmetry

csOli = crystalSymmetry('222',[4.779 10.277 5.995],'mineral','olivine');
csOrtho = crystalSymmetry('222',[18.384, 8.878, 5.226],'mineral','orthopyroxene');

and the basic slip systems in olivine and orthopyroxene

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'))

sSOrtho = slipSystem(Miller({0,0,1},csOrtho,'uvw'),...
  Miller({1,0,0},csOrtho,'hkl'))
sSOli = slipSystem (olivine)
 size: 1 x 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
 
sSOrtho = slipSystem (orthopyroxene)
 
  u    v    w  | h    k    l CRSS
  0    0    1    1    0    0    1

To each of the slip systems we can associate an orientation dependent Schmid or deformation tensor \(S(g)\)

S = sSOli.deformationTensor
S = tensor (olivine)
  size: 1 x 3    
  rank: 2 (3 x 3)

and make for the orientation dependent strain rate tensor \(e(g)\) the ansatz \(e_{ij}(g) = \gamma(g) S_{ij}(g)\). Fitting this ansatz to a given a macroscopic strain tensor

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

via minimizing the square difference

\[\int_{SO(3)} \sum_{i,j} (e_{i,j}(g) - E_{i,j})^2 dg \to \text{min}\]

the orientation dependent strain rate tensor is identified as

\[e(g) = 2 \left< S(g), E \right> S(g)\]

and the corresponding crystallographic spin tensor as

\[\Omega_i(g) = \epsilon_{ijk} e_{jk}(g)\]

This can be modeled in MTEX via

% this is in crystal coordinates
% Omega = @(ori) SO3TangentVector(spinTensor(((ori * S(2)) : E) .* S(2)));
% Omega = @(ori) 0.5 * EinsteinSum(tensor.leviCivita,[1 -1 -2],(ori * S(1) : E) .* (S(2)),[-1 -2])

% this is in specimen coordinates
Omega = @(ori) -SO3TangentVector(spinTensor(((ori * S(2)) : E) .* (ori * S(2))));

% turn in into a harmonic function
Omega = SO3VectorFieldHarmonic.quadrature(Omega,csOli)
Omega = SO3VectorFieldHarmonic (olivine → xyz)
  bandwidth: 3
  tangent space: leftVector
% We may visualize the orientation dependence of the spin tensor by plotting
% its divergence in sigma sections and on top of it the spin tensors as a
% quiver plot

plotSection(div(Omega),'sigma','noGrid')
mtexColorMap blue2red
mtexColorbar

hold on
plot(Omega,'add2all','linewidth',1,'color','k')
hold off

The divergence plots can be read as follows. Negative (blue) regions indicate orientations that increase in volume, whereas positive regions indicate orientations that decrease in volume. Accordingly, we expect the texture to become more and more concentrated within the blue regions. In the example example illustrated above with only the second slip system being active, we would expect the c-axis to align more and more with the the z-direction.

Solutions of the Continuity Equation

The solutions of the continuity equation can be analytically computed and are available via the command SO3FunSBF. This command takes as input the specific slips system sS and the macroscopic strain tensor E

odf1 = SO3FunSBF(sSOli(1),E)
odf2 = SO3FunSBF(sSOli(2),E)
odf3 = SO3FunSBF(sSOli(3),E)
odf4 = SO3FunSBF(sSOrtho,E)
odf1 = SO3FunSBF (olivine → xyz)
 
    slip system: (010)[100]
    strain:      0.3 0 -0.3
 
odf2 = SO3FunSBF (olivine → xyz)
 
    slip system: (001)[100]
    strain:      0.3 0 -0.3
 
odf3 = SO3FunSBF (olivine → xyz)
 
    slip system: (010)[001]
    strain:      0.3 0 -0.3
 
odf4 = SO3FunSBF (orthopyroxene → xyz)
 
    slip system: (100)[001]
    strain:      0.3 0 -0.3

Lets check our expectation from the last paragraph by visualizing the odf corresponding to the second slip system in sigma sections

figure(1)
plotSection(odf2,'sigma')
mtexColorbar

We observe exactly the concentration of the c-axis around z as predicted by the model. This can be seen even more clear when looking a the pole figures

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

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

We could also have computed the solution of the continuity equation numerically. To this end we utilize the command doEulerStep which takes as input the crystallographic spin tensor Omega, the initial odf odf0 and the number of iterations to be performed.

% the starting ODF
odf0 = uniformODF(csOli);

% the transformed ODF
odf = doEulerStep(2*Omega,odf0,40)

figure(2)
plot(odf,'sigma')
mtexColorbar
odf = SO3FunHarmonic (olivine → xyz)
  bandwidth: 28
  weight: 1

Indeed the error between the numerical solution and the theoretical solution is neglectable small. We may quantify the difference by

mean(abs(odf - odf2))
ans =
    0.0011

For completeness the pole figures of the other two basis functions.

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

We observe that the pole figure with respect to \(n \times b\) is always uniform, where \(n\) is the slip normal and \(b\) is the slip direction.

Since in practice all three slip systems are active we can model the resulting ODF as a linear combination of the different basis functions

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

Checking the for steady state

We may also check for which orientations an ODF is already in a steady state of the continuity equation, i.e., the time derivative \(\text{div}(f \Omega) = 0\) is zero.

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