Hi,

I have an issue when I use the inner operator. I have looked the documentation but I am not sure why the error happens. I would appreciate some help.

```
import dolfinx
import ufl
from petsc4py import PETSc
from mpi4py import MPI
import numpy as np
from dolfinx import fem
xc = 25
yc = 25
R = 25
mesh = dolfinx.mesh.create_box(MPI.COMM_WORLD, [np.array([0,0,0]), np.array([50, 50, 50])], [5,5,5])
V = fem.VectorFunctionSpace(mesh, ("CG", 1))
def w_init(x):
values = np.zeros((3, x.shape[1]))
condition = ((x[0, :]-xc)**2 + (x[1, :]-yc)**2) < R*R
values[2, condition] = 1.0
values[0, ~condition] = 0
values[1, ~condition] = 1.0
values[2, ~condition] = 0
return values
w = dolfinx.fem.Function(V)
w.interpolate(w_init)
v = ufl.TestFunction(V)
ufl.inner(ufl.grad(v),w )
```

```
ERROR:UFL:Shapes do not match: <Grad id=140437333057152> and <Coefficient id=140437333048000>.
```

thank

If `v`

is in a VectorFunctionSpace,

`grad(v)`

is a tensor (3,3), which cannot be part of an inner product with a test function from `V`

, which is a vector of shape (3,)

Hi dokken, thank you for the answer.

So having performed an inner product is not correct, given grad(v) is a tensor and v is a vector.

I want to solve the equation for the scalar field \rho,

\int_{\Omega} \nabla v \cdot \nabla \rho dx = \int_{\Omega} \nabla v \cdot w dx

According to your answer, I think that the right-side of the equation must be,

```
L = ufl.inner(ufl.grad(v[0]), w)*ufl.dx + ufl.inner(ufl.grad(v[1]), w)*ufl.dx + ufl.inner(ufl. grad(v[2]), w)*ufl.dx
```

and the left side,

```
a = ufl.inner(ufl.grad(v), ufl.grad(rho))*ufl.dx
```

This is correct?

Please state the strong form of your problem, as this weak form does not make sense

Hi dokken, the strong form is:

\Delta \rho = - \nabla\cdot \vec{\omega}

with Neumanâ€™s conditions at the boundary (\partial \rho/\partial n = \hat{n}\cdot \vec{\omega} in \Omega) and \vec{\omega} known vector. Then, the weak form is

\int_{\Omega} \nabla \rho \cdot \nabla v dx = \int \vec{\omega}\cdot \nabla v dx

with Dirichlet boundary conditions in the function space V

Here \rho should be in a scalar space, and the same holds for `v`

.

thank so much. I had not noticed that error. Finally, Finally I think that I have fixed the code:

```
import dolfinx
import ufl
from petsc4py import PETSc
from mpi4py import MPI
import numpy as np
from dolfinx import fem
xc = 25
yc = 25
R = 25
mesh = dolfinx.mesh.create_box(MPI.COMM_WORLD, [np.array([0,0,0]), np.array([50, 50, 50])], [5,5,5])
V1 = fem.FunctionSpace(mesh, ("CG", 1))
V2 = fem.VectorFunctionSpace(mesh, ("CG", 1))
def w_init(x):
values = np.zeros((3, x.shape[1]))
condition = ((x[0, :]-xc)**2 + (x[1, :]-yc)**2) < R*R
values[2, condition] = 1.0
values[0, ~condition] = 0
values[1, ~condition] = 1.0
values[2, ~condition] = 0
return values
w = dolfinx.fem.Function(V2)
w.interpolate(w_init)
rho = ufl.TrialFunction(V1)
a = ufl.inner(ufl.grad(v), ufl.grad(rho)) * ufl.dx
L = ufl.inner(ufl.grad(v),w)*ufl.dx
fem.petsc.LinearProblem(a, L,)
```