I am using dolfinx to solve an inverse elasticity problem where I have a data set of steady-state displacements and the task is to solve some PDE to recover the stiffness of the material.
I posted here previously because the first problem I ran into was how to interpolate the measured displacement data into the FEM function space. I ended up solving this (I thought) by using scipy.interpolate
to create an interpolating function that I could then pass to dolfinx.Function.interpolate
.
This seemed like a roundabout solution, as what I really want to do is just set the FEM basis coefficients directly from the data set, but I couldn’t figure out how to do that. One consequence of using the scipy interpolation approach is that I am not confined to using the same mesh resolution for the FEM problem as the resolution of the grid on which the data are defined.
The FEM method seems to be working now, but the current problem is that the solution (the elasticity field) exhibits oscillations that are extremely sensitive to the mesh resolution. For instance, in a 1D problem with an array of 80 complex-valued displacements, there are large oscillations in the solution if I use a mesh with 80 equally spaced nodes, which seemed to be that natural mesh resolution, since it is the data resolution. If I use slightly more or fewer nodes, the oscillations change, but they never completely disappear. See the plot below to understand what I mean.
How can I eliminate these oscillations in the solution?