ufl.split
splits it into ufl
representations of the sub function, i.e.
u, p = ufl.split(w)
print(type(u), type(p)))
returns
<class 'ufl.tensors.ListTensor'> <class 'ufl.indexed.Indexed'>
while
u,p = w.split()
returns dolfinx functions, which can in turn be collapsed to give contiguous views into dof data