This is a read only copy of the old FEniCS QA forum. Please visit the new QA forum to ask questions

How to integrate edge data?

+1 vote

Dear all,

I have discontinuous data, which is located on edges and I need to compute an inner edge integral "*dS" using this data. This is easily representable via a MeshFunction on edges.

If I represent this data with any of the implemented finite elements that have edge dofs, I think I will always lose the discontinuity in the vertex. Meaning: Consider a triangle with data per edge. To properly represent this, there are two values per vertex. Thus, I would need a finite element that is discontinuous in itself.

Thus, the equation is: Can I somehow use "*dS" measures with MeshFunctions on Edges?

Regards!

asked Mar 23, 2017 by sschmidt FEniCS Novice (490 points)

Are you confusing edges with facets?

Sorry... no, I am not confusing those... :(

I have one value per edge of a triangle in 2D and one value per edge of a tetrahedron in 3D. It's always a constant per edge.

Hence the question, if one can integrate MeshFunctions on edges somehow...

Nedelec basis?

I don't think those will work. Nedelec has the dof in the middle of each edge and is continuous inside the element. Hence, not possible to have different constants for each edge. It always changes linearly over the edge so the element is continuous inside and the desired value only holds on the edge midpoint...

DG basis, mesh topology dim 1, geometry dim 3? Should be able to compute the integral on the skeleton of your mesh. I'm not sure how to do this, or if it's possible.

I am not sure what the "skeleton" is of the mesh? Is it the frame structure? e.g. just the edges?

Other than that, yes, that's the problem! topology dim 1 on geometry dim 3 with DG0 would exactly work!!

Any ideas on how to do that?

I remember it being something to do with restricting elements... but it seems it may not be supported anymore. I'll investigate and post a question in the QA if I can't figure it out. It was something along the lines:

ele = FiniteElement("DG", tetrahedron, 0)["edge"]

but I can't get it to work.

...