# Set initial conditions for tensor-element

**URL:** <https://fenicsproject.discourse.group/t/set-initial-conditions-for-tensor-element/8798>\
**Category:** dolfinx\
**Created:** [July 16, 2022, 7:48pm UTC](https://fenicsproject.discourse.group/t/set-initial-conditions-for-tensor-element/8798 "2022-07-16T19:48:43Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [July 17, 2022, 1:02pm UTC](https://fenicsproject.discourse.group/t/set-initial-conditions-for-tensor-element/8798/4 "2022-07-17T13:02:11Z")

</div>

> [@InfiniteElement](#):
>
> `u.sub(1).interpolate(initial_cond)`

Yes, consider the minimal example:

```python
import dolfinx
from mpi4py import MPI
import numpy as np
import ufl

mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, nx=1, ny=1, nz=1)
n = ufl.FacetNormal(mesh)

P = ufl.VectorElement("CG", mesh.ufl_cell(), 1)
R = ufl.TensorElement("DG", mesh.ufl_cell(), 1)
P_wish = ufl.VectorElement("CG", mesh.ufl_cell(), 1)
R_wish = ufl.TensorElement("DG", mesh.ufl_cell(), 1)
mel = ufl.MixedElement([P, R, P_wish, R_wish])
U = dolfinx.fem.FunctionSpace(mesh, mel)

u = dolfinx.fem.Function(U)
(p, F, v, P) = ufl.split(u)

def T(x):
    values = np.zeros((mesh.geometry.dim*mesh.geometry.dim,
                      x.shape[1]), dtype=np.float64)
    values[0] = x[0]
    values[1] = x[1]
    values[2] = x[0] + 2 * x[1]
    values[3] = x[1] - x[0]
    return values

form = dolfinx.fem.form(ufl.inner(F, F)*ufl.dx)
print(f"Pre {dolfinx.fem.assemble_scalar(form)}")
u.sub(1).interpolate(T)
print(f"Post {dolfinx.fem.assemble_scalar(form)}")

```

yielding

```bash
Pre 0.0
Post 3.5000000000000115

```

---

_[View the full topic](https://fenicsproject.discourse.group/t/set-initial-conditions-for-tensor-element/8798)._
