FEniCS / FEniCS/ffcx

Interpolation expression support

Open
#827 1 comment 0 reactions 0 assignees View on GitHub
enhancement generated-code proposal
Dominant language
Python
Stars
192
Forks
45
Avg merge
1d 18h
Merged PRs (30d)
17

Description

Currently there is no support for symbolic interpolation operations in FFCx.

Workarounds to this, by introducing intermediate variables to interpolate into first, break the AD toolchain and thus are not scalable to elaborate forms/problems.

Interface to enable/support:

```python
import dolfinx
import ufl
from mpi4py import MPI

mesh = dolfinx.mesh.create_unit_square(comm := MPI.COMM_WORLD, n := 10, n)

V = dolfinx.fem.functionspace(mesh, ("CG", 1))

x = ufl.SpatialCoordinate(mesh)

f = x[0] ** 2
If = ufl.Interpolate(f, V)

expr = dolfinx.fem.Expression(f, V.element.interpolation_points)
expr_I = dolfinx.fem.Expression(If, V.element.interpolation_points) # not supported atm.

u,v = ufl.TrialFunction(V), ufl.TestFunction(V)

dolfinx.fem.form(f * ufl.inner(ufl.grad(u), ufl.grad(v)) * ufl.dx)
dolfinx.fem.form(If * ufl.inner(ufl.grad(u), ufl.grad(v)) * ufl.dx) # not supported atm.
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.