# Surface element in fenics

**URL:** <https://fenicsproject.discourse.group/t/surface-element-in-fenics/18433>\
**Category:** General\
**Tags:** mesh\
**Created:** [November 29, 2025, 3:50am UTC](https://fenicsproject.discourse.group/t/surface-element-in-fenics/18433 "2025-11-29T03:50:42Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Haibo\_Ni](https://avatars.discourse-cdn.com/v4/letter/h/439d5e/32.png) [@Haibo\_Ni](https://fenicsproject.discourse.group/u/Haibo_Ni)\
**Post date:** [November 29, 2025, 3:50am UTC](https://fenicsproject.discourse.group/t/surface-element-in-fenics/18433/1 "2025-11-29T03:50:42Z")

</div>

Hi all,

I would like to solve a diffusion problem on a shell-like surface mesh (3D). Does the legacy fenics or fenicsx support 3D surface elements?

Any suggestions will be deeply appreciated. Thanks

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [November 29, 2025, 7:20am UTC](https://fenicsproject.discourse.group/t/surface-element-in-fenics/18433/2 "2025-11-29T07:20:46Z")

</div>

Yes, it does, ref: [How are 2D manifolds immersed/embedded in 3D space handled in dolfinx? - #25 by dokken](https://fenicsproject.discourse.group/t/how-are-2d-manifolds-immersed-embedded-in-3d-space-handled-in-dolfinx/18066/25)  
and [Add manifold example with real spaces · Issue #118 · scientificcomputing/scifem · GitHub](https://github.com/scientificcomputing/scifem/issues/118)  
and

> [@\[SOLVED\] Solve PDEs on a Manifold](https://fenicsproject.discourse.group/t/solved-solve-pdes-on-a-manifold/9266/2):
>
> As far as Im aware these features are in DOLFINx. For instance, you can adapt Figure 3 to work with ffcx: from ufl import Cell, VectorElement, FunctionSpace, Mesh, Coefficient # Define triangle cell embedded in Rˆ3 cell = Cell("triangle", 3) # Define Lagrange vector element coordinate\_element = VectorElement("Lagrange", cell, 1) mesh = Mesh(coordinate\_element) V = FunctionSpace(mesh, coordinate\_element) # Arguments defined over V will have 3 components: u = Coefficient(V) print(u[0], u[1], u…

and maybe particularly interesting for you

> **[FEniCSx-Shells — FEniCSx-Shells 0.10.0.dev0 documentation](https://fenics-shells.github.io/fenicsx-shells/)**
