# ufl.FacetArea for quadrilaterals

**URL:** <https://fenicsproject.discourse.group/t/ufl-facetarea-for-quadrilaterals/17451>\
**Category:** General\
**Created:** [April 14, 2025, 2:19pm UTC](https://fenicsproject.discourse.group/t/ufl-facetarea-for-quadrilaterals/17451 "2025-04-14T14:19:48Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![LucasPa](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/lucaspa/32/5687_2.png) [@LucasPa](https://fenicsproject.discourse.group/u/LucasPa)\
**Post date:** [March 19, 2026, 4:34pm UTC](https://fenicsproject.discourse.group/t/ufl-facetarea-for-quadrilaterals/17451/8 "2026-03-19T16:34:43Z")

</div>

Hi,

I took me while but I understood how to use `entity_maps`. But now I can compute `form_a` corresponding to `a = ufl.inner(ufl.grad(u) * fa, ufl.grad(v)) * ds` in the example below.

However, I don’t know how to compute `form_b` (see again in the example below) corresponding to `b = ufl.inner(ufl.grad(u) * fa, ufl.grad(v)) * ds + ufl.inner(u, v) * dx`, the following code raises the error when creating `form_b`:

```auto
Point dim (2) does not match element dim (1).

```

```auto
import dolfinx
from mpi4py import MPI
import numpy as np
from dolfinx.fem.petsc import assemble_matrix
import ufl

msh = dolfinx.mesh.create_rectangle(comm=MPI.COMM_WORLD, points=((0.0, 0.0), (2.0, 1.0)), n=(5, 1), cell_type=dolfinx.mesh.CellType.quadrilateral)
gdim = msh.geometry.dim
dx = ufl.Measure('dx', domain=msh)
ds = ufl.Measure('ds', domain=msh)

V = dolfinx.fem.functionspace(msh, ("DG", 1))
u = ufl.TrialFunction(V)
v = ufl.TestFunction(V)

def compute_facet_area(mesh):
    gdim = mesh.geometry.dim
    bdry_facets = dolfinx.mesh.locate_entities(mesh, gdim-1, lambda x: np.full_like(x[0], 1, dtype=np.int8))
    submesh_facets, entity_map, _, _ = dolfinx.mesh.create_submesh(mesh, gdim-1, bdry_facets)
    dx_e = ufl.Measure("dx", domain=submesh_facets, metadata={"quadrature_degree": 20})

    DG0 = dolfinx.fem.functionspace(submesh_facets, ("DG", 0))
    fa = dolfinx.fem.Function(DG0)
    v = ufl.TestFunction(DG0)

    fa.x.array[:] = dolfinx.fem.petsc.assemble_vector(dolfinx.fem.form(v * dx_e))
    fa.x.scatter_forward()
    return fa, entity_map
fa, entity_map = compute_facet_area(msh)

a = ufl.inner(ufl.grad(u) * fa, ufl.grad(v)) * ds
form_a = dolfinx.fem.form(a, entity_maps=[entity_map])

b = ufl.inner(ufl.grad(u) * fa, ufl.grad(v)) * ds + ufl.inner(u, v) * dx
# form_b = dolfinx.fem.form(b) # KO
form_b = dolfinx.fem.form(b, entity_maps=[entity_map]) # KO

```

---

_[View the full topic](https://fenicsproject.discourse.group/t/ufl-facetarea-for-quadrilaterals/17451)._
