Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow mass lumping in projection #95

Closed
jwallwork23 opened this issue May 11, 2023 · 3 comments · Fixed by #115
Closed

Allow mass lumping in projection #95

jwallwork23 opened this issue May 11, 2023 · 3 comments · Fixed by #115
Assignees
Labels
enhancement New feature or request PRIORITY We should address this ASAP
Milestone

Comments

@jwallwork23
Copy link
Member

Mass lumping the mesh-to-mesh projection operator will allow us to bound the interpolator for P1 fields.

@jwallwork23 jwallwork23 added the enhancement New feature or request label May 11, 2023
@jwallwork23 jwallwork23 added this to the Version 1 milestone May 11, 2023
@jwallwork23 jwallwork23 self-assigned this May 11, 2023
@jwallwork23 jwallwork23 removed this from the Version 1 milestone Sep 1, 2023
@jwallwork23 jwallwork23 transferred this issue from pyroteus/pyroteus Sep 1, 2023
@jwallwork23 jwallwork23 added this to the Version 1 milestone Sep 1, 2023
@jwallwork23 jwallwork23 transferred this issue from mesh-adaptation/goalie Mar 21, 2024
@jwallwork23
Copy link
Member Author

Blocked by #94.

jwallwork23 added a commit that referenced this issue Apr 27, 2024
jwallwork23 added a commit that referenced this issue Apr 27, 2024
@ddundo
Copy link
Member

ddundo commented May 3, 2024

Thanks again for doing this @jwallwork23! Could you or @stephankramer please help me get some intuition for this? (We can also discuss it on the meeting, I just wanted to write it out)

I mentioned on the meeting today that I tried projecting from a 0.25km uniform mesh to itself, and computing the relative L2 error. I did that with and without lumping, with a scalar ($h$) and a vector ($u$) field - please see the figures below and their y-labels. I did the same with coarser resolution meshes, where I projected from them onto the 0.25km mesh.

Without lumping the error for the 0.25km mesh is flat at approx 1e-8 throughout the time interval, and a flat 1e-15 when I tried interpolating. But with lumping it's significantly larger. Is this purely due to the added numerical diffusion from lumping the mass matrix? It seems quite significant. Since it also varies in time (unlike interpolating and projection without lumping, where the error is flat), could you please help me understand when we'd expect this to be higher/lower?

Also, I guess that the error for the coarser resolution meshes is the same on the two figures because the 0.25km mesh is embedded? Could you please also help me understand again when I'd expect the projection to be more/less successful in the case of adapted meshes in the two cases (with and without lumping)?

uniform_proj
uniform_projLump

@jwallwork23
Copy link
Member Author

Pushed some work in progress to the PR. I've got as far as applying the lumping, the next step is to make the projection minimally diffusive. See (Farrell et al. 2009, eq. 35):

To note the diffusive nature of this interpolant, consider interpolating from a mesh to itself. It is clear from Lemma 5 that the maximum is attained only if

$$ \int_\Omega\phi^k_B\mathrm{d}V = \int_\Omega \mathrm{max}q_A\phi^k_B;\mathrm{d}V...$$

jwallwork23 added a commit that referenced this issue May 13, 2024
jwallwork23 added a commit that referenced this issue May 13, 2024
jwallwork23 added a commit that referenced this issue May 13, 2024
jwallwork23 added a commit that referenced this issue May 13, 2024
jwallwork23 added a commit that referenced this issue May 14, 2024
jwallwork23 added a commit that referenced this issue May 14, 2024
Closes #95.

This PR allows the projection operator (and its adjoint) to be mass
lumped. For P1 spaces, this implies that extrema are preserved following
the transfer.

While developing these changes, I noticed #113 and #114, so the
associated functionality and tests are turned off here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request PRIORITY We should address this ASAP
Development

Successfully merging a pull request may close this issue.

2 participants