Point integrals work only for CG1

Issue #499 new
Marco Morandini created an issue

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)

  1. Martin Sandve Alnæs

    Yes, I think it makes perfect sense as long as the elements are continuous in vertices.

  2. Marco Morandini 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.

  3. Prof Garth Wells

    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.

  4. Marco Morandini 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)

  5. Martin Sandve Alnæs

    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.

  6. Log in to comment