Hello,

In a dynamic transversely isotropic material problem, I have defined a rotation matrix for each element. I suppose the rotation matrices need to be updated after each time step. But I have problems in doing so. I have defined the matrices like below:

```
el_r = ufl.TensorElement("DG", mesh.ufl_cell(), 0, shape=(3, 3))
Q_r = fe.fem.FunctionSpace(mesh, el_r)
bs_r = Q_r.dofmap.bs
rotation_matrix = fe.fem.Function(Q_r)
def get_rotation_matrix(x):
values = np.random((bs_r, x.shape[1]), dtype=np.float64)
return values
rotation_matrix.interpolate(get_rotation_matrix)
```

Later for solving I use the function below to update the rotation matrix:

```
F = ufl.variable(I + ufl.grad(u)) # Deformation gradient
def update_rotation(R, F):
new_rotation = ufl.dot(F,R)
return new_rotation
```

But now there are a few problems. Whenever I try to access the matrices with rotation_matrix.x.array[:] I get this error:

AttributeError: ‘Dot’ object has no attribute ‘x’. Did you mean: ‘dx’?

Also, I need to make sure that the new rotation_matrix is orthogonal. So I guess I need to convert the matrices to np.array for that.

I will appreciate any clarification of the procedure here.