alan-turing-institute / stat-fem

Python tools for solving data-constrained finite element problems
GNU Lesser General Public License v3.0
12 stars 6 forks source link

Make interpolation matrix true interpolation #9

Closed edaub closed 4 years ago

edaub commented 4 years ago

At the moment, the interpolation matrix does a projection to map the sensor data point to the FEM mesh points. This is correct for piecewise linear elements (1st order continuous Galerkin or Lagrange finite elements), but is not correct for the general case. To be truly correct, this should be an interpolation rather than a projection, but interpolation requires knowledge of the FEM basis functions and depends on more complex workings under the hood to calculate this correctly. Projection is easier to compute in the general case, and thus for the initial work on this I simply implemented projection to get the library working.

However, given that other approximations are made throughout the computation, it is unclear if this makes a significant difference and needs to be studied in more depth to determine how much error this introduces to the computation.

edaub commented 4 years ago

Based on a brief exchange with David Ham, Firedrake supports some variant of what I want to do but the issue is that interpolating between different meshes seems to not be supported. I would need to dig through the PyOP2 code to figure out what changes might need to be made and how much work it would be. Closing this until I have a better idea how much of a difference it makes given the other approximations made.