Point integrals work only for CG1
It would be nice it they could be made to work at least for the for the vertices of higer order Lagrange elements. I'm not saying for the nodes, just the vertices.
And, indeed, commenting out the check if (dofmaps[i]->num_entity_dofs(j)!=0)
in Assembler.cpp appears to work.
Is it possible to check that the element is CG instead? Would this be enough?
Comments (5)
-
-
reporter Ok. But how one can check that the finite element family is "Lagrange"?
Scanning the signature string should really be the last resort, but I'm not finding anything else.
And, if I'm understanding correctly, the dofs that, for a CG2 element, would have been associated to midside nodes in a tradition FEM code, in dolfin are associated to the facets, thus triggering the current error.
-
I have a recollection that the regularity of function spaces was added to UFL a little while back. Maybe we should add this to UFC, which would make it available to DOLFIN.
-
reporter Do you mean the sobolev_space? and check for H1 elements? I think this would require
1) in UFL move sobolev_space() from FiniteElement to FiniteElementBase, and implement it for the other classes of elements
2) in ffc/ufc make sobolev_space it available to DOLFIN (should be easy)
3) in DOLFIN, recreate the a sobolev_space class with the logic of UFL's sobolev_space to understand that H2 < H1 etc...
If that's ok, I could try starting with 1). However, we should agree what to do with MixedElements and point 3).
For a MixedElement right now I think it would be better to define the resturn type of sobolev_space as a vector of sobolev spaces.
For 3) I fear that exporting the sobolev space as strings (or vector of strings) from UFC would be suboptimal.
Just tell me what to do (if anything)
-
I rather want to strip down FiniteElementBase to a smaller interface than move more into it. Several of the current functions already there makes no sense for mixed elements and thus do not belong in the common interface. Same with sobolev_space I believe, it will quickly just become L2 for mixed elements. Returning a vector is not sufficient because we have nested hierarchies of mixed elements.
- Log in to comment
Yes, I think it makes perfect sense as long as the elements are continuous in vertices.