### ufl index representation of an outer product

62
views
0
8 weeks ago by
UFL offers:

$u\otimes v$uv = outer(u, v)

is there a way to write this in index notation? E.g:

$u_iv_j=\left(u\otimes v\right)_{ij}=$uivj=(uv)ij= u[i]*v[j]

I have naturally tried, but get the odd result:

from dolfin import *

mesh = UnitSquareMesh(1, 1)
V = VectorFunctionSpace(mesh, "CG", 1)
u = Function(V)

print((u[i]*u[j]).ufl_shape)

>>> ()​

I assume I'm missing something obvious?

Community: FEniCS Project

4
8 weeks ago by
I think you need to use the function as_tensor to switch from the component representation to the tensor representation.
from dolfin import *

mesh = UnitSquareMesh(1, 1)
V = VectorFunctionSpace(mesh, "CG", 1)
u = Function(V)

print(as_tensor((u[i]*u[j]),(i,j)).ufl_shape)
>>> (2, 2)​
1
Cheers very much! Found the corresponding part of the documentation to match: