How can I specify a goal functional defined on MixedElement function space?
I have something like:
Pu = dolf.FiniteElement("Lagrange", mesh.ufl_cell(), 2) Pp = dolf.FiniteElement("Lagrange", mesh.ufl_cell(), 2) P_mixed = dolf.MixedElement([Pu, Pp]) W = dolf.FunctionSpace(mesh, P_mixed)
When I use
w = dolf.Function(W) dolf.solve(a == L, w, bcs)
everything works fine.
Now I want to specify my goal functional to use it later with
AdaptiveLinearVariationalSolver, which is an ‘inner product’ of the components of the
p are from
If I do something like
M = inner(w,w)*dx(), or with
W.sub(0) to define
Function to input into
M, I get:
*** Error: Unable to assemble form. *** Reason: Invalid value rank for coefficient 0 (got 1 but expecting 0). You might have forgotten to specify the value rank correctly in an Expression subclass. *** Where: This error was encountered inside AssemblerBase.cpp. *** Process: 0
I can see that the problem is in how I create the
M matrix, because otherwise everything works fine.
The code I have can be found here: https://gist.github.com/Corwinpro/0e881f2e22e99c87108e0662238852b0