C1 continuity implementation in dolfinx

Hello, I have basic doubt on manifolds.

  1. For a quad mesh of topological dimension:2 (cylinder surface) in 3D space, when I perform scalar assembly:
dx = Measure('dx')(domain=mesh)

what quadrature rule it takes to integrate for curved surface. Can I modify the default rule?

  1. For solving variational form over manifold (cylindrical surface), we can define local frame linear shell tutorial and solve all derivatives with respect to local frame but during integration like variational solve or assembly, do we need to add jacobian factor (eqn 12 of Rognes manifold paper) since, default variational misses curved surface effect.

  2. I am getting different variational solve output on changing the local frame from linear shell tutorial. Can you comment because local frame can be arbitrary.

You can set the quadrature degree in the metadata of the measure as done in


Thanks @dokken for your response. I am stuck in C1 continuity implementation in dolfinx

I want to get dof coordinates of second order serendipidity elements (S2) in dolfinx. The reason is to implement Dirichlet bc to boundary nodes.

I understand that for S2 elements, mid-points of edges is difficult to map. Is there any way to obtain mapped dof? Because the variational solver is working and it should be using those mid edge physical coodinates in parametric space.

I am working on 2D manifold, where, it requires C1 continuity. Is there any way you suggest within dolfinx?

I see previous S2 discussion in Serendipity thread, and realize dofs 4-7 lie on edge. What does it exactly mean. For calculation we reauire a physical coordinate (x,y,z) lie on mid edge? How does it compute, can you please guide in it.
Thanks for your time.

It means that the functional defining the degree of freedom is an integral, see: DefElement

For low order polynomial spaces it is sufficient to represent such functionals by an evaluation of a midpoint. See chapter 7.3 of: DOLFINx: The next generation FEniCS problem solving environment
and in particular 7.3.1 that illustrate the drawback of such an approach.

As the degree of freedom is associated with and edge you can use locate_dofs_topological to ger such dofs, where you first identify the facets, either through a meshtags object, or with dolfinx.mesh.locate_entites or dolfinx.mesh.locate_entities_boundary or dolfinx.mesh.exterior_facet_indices.