Vector fields in orientation space model orientation dependent spin as it occurs for instance in the Taylor or Sachs model. Another typical example are gradients of orientation distribution functions.

## Orientation Dependent Spin Tensors as Vector Fields

According to Taylor theory the strain acting on a crystal with orientation `ori`

is compensated by the action of different slip systems. The antisymmetric portion of deformation tensors of these active slip systems gives a spin tensors that describes the local misorientation the crystal undergoes under deformation. In MTEX the spin tensor `W`

as a function of the orientation `ori`

is computed as a variable of type `SO3VectorField`

by the command `calcTaylor`

.

Lets visualize the spin tensor in Euler angle sections

We observe how according to the orientation the Taylor model predicts a misorientation of the corresponding crystal. For a specific (set of) orientation `ori`

we can retrieve the spin tensor by evaluating the vector field `W`

at this position

**The Norm of a Vector Field**

The norm of the spin tensor directly relates to the amount of misorientation. We may compute the amount of misorientations as a function of orientation by the command `norm`

and determine the orientation of maximum misorientation by

As the vector field `W`

corresponds to the rotational axis of the local misorientation we may check how much this axis corresponds with a predefined axis, e.g. [100], by computing the inner product `dot(W,d)`

between the vector field `W`

and the predefined axis `d`

.

**The Flux of a Vector Field**

If we interpret the vector field `W`

as a velocity field for the different crystal orientations. Then its divergence is a scalar field that indicates where orientations condense. In this interpretation a sink corresponds to negative flux / divergence and a source to positive flux / divergence.

**The Curl of a Vector Field**

The counterpart of the flux is the curl of a vector field which describes the axis of local rotation within the crystal orientations

## The Gradient of Orientation distribution Functions

A second natural usage of vector fields is as gradients of orientation dependent functions, e.g. ODF. Lets consider the following ODF of a quartz specimen

Then its gradient is computed by the command `odf.grad`

Lets visualize the ODF together with its gradient in a sigma section plot

We observe how the gradients all points towards the closest local maximum. This is actually the foundation of the steepest descent algorithm used by MTEX in the commands `max(odf)`

and `calcComponents(odf)`

As the gradient of a function is a vector field we may compute its curl and divergence. From mathematics we know that the curl must be zero

and the divergence coincides with the Laplacian of the

The fact that the curl of a vector field is zero is actually equivalent to the fact that the vector field is the gradient of some potential field, which can be computed by the command `antiderivative(g)`

and coincides exactly with the original ODF `odf`

.

## Overview of Operations for Orientational Vector Fields

The following operations are defined for vector fields `VF`

, `VF1`

, `VF2`

- basic arithmetic operations: sum, difference, scaling, quotient
- inner product
`dot(VF1,VF2)`

- cross product
`dot(VF1,VF2)`

- norm
`norm(VF)`

- rotate
`rotate(VF,rot)`

- average
`mean(VF)`

## Definition of Orientational Vector Fields

**Explicitly by an Anonymous Function**

Analogous to `SO3FunHandle`

we are able to define `SO3VectorFields`

by an anonymous function.

But plotting does not -- TODO!!!

**Definition via SO3VectorField**

We can expand any `SO3VectorField`

in an `SO3VectorFieldHarmonic`

directly by the command `SO3VectorFieldHarmonic`

**Definition via function values**

At first we need some example rotations

Next, we define function values for the rotations

Now the actual command to get `SO3VF1`

of type `SO3VectorFieldHarmonic`

**Definition via function handle**

If we have a function handle for the function we could create a `S2VectorFieldHarmonic`

via quadrature. At first lets define a function handle which takes `rotation`

as an argument and returns a `vector3d`

:

Now we can call the quadrature command to get `SO3VF2`

of type `SO3VectorFieldHarmonic`

**Definition via SO3FunHarmonic**

If we directly call the constructor with a multivariate `SO3FunHarmonic`

with three entries it will create a `SO3VectorFieldHarmonic`

with `SO3F(1)`

, `SO3F(2)`

, and `SO3F(3)`

the \(x\), \(y\), and \(z\) component.