FluidNumerics / FluidNumerics/SELF

Entropy-stable mortar operators for EC-DGSEM models (AMR support for ECDGModel2D/3D and ES-Atmo)

Open
#166 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Fortran
Stars
92
Forks
13
Avg merge
20h 38m
Merged PRs (30d)
7

Description

## Summary

The entropy-conserving/entropy-stable model classes cannot run on adaptively refined meshes. Both `ECDGModel2D` and `ECDGModel3D` (and therefore the ES-Atmo models built on them) hard-stop when the mesh contains nonconforming (mortar) interfaces:

- `src/SELF_ECDGModel2D_t.f90:76`
- `src/SELF_ECDGModel3D_t.f90:62`

The guard is deliberate: the AMR mortar coupling introduced by the 2D AMR work and #164 uses a plain L2 projection between the big face and its sub-faces. That projection is conservative and accuracy-preserving for the standard DGSEM two-point numerical flux, but it does **not** satisfy the SBP-type compatibility condition the split-form entropy estimate relies on — coupling an EC-DGSEM element through it would silently break the provable entropy conservation/stability, so the models refuse mortar meshes instead.

## Proposed work

Implement entropy-stable nonconforming coupling so the EC/ES model family can use quadtree/octree AMR:

- Entropy-stable mortar operators along the lines of Friedrich, Winters, Del Rey Fernández, Gassner, Parsani & Carpenter (*An entropy stable h/p non-conforming discontinuous Galerkin method with the summation-by-parts property*, J. Sci. Comput. 2018): projection/interpolation pairs satisfying the discrete SBP compatibility (M-compatible P/R pairs) so the entropy estimate telescopes across the 2:1 interface.
- Apply them in the EC surface contribution (`ECDGSurfaceContribution`) at mortar faces, in both 2D (4 quadrants per face come from the quadtree; 2 sub-edges per edge) and 3D (4 sub-faces per face, all 8 orientation flips per the conventions in `docs/Contributing/AMR3D-Design.md`).
- Replace the `error stop` guards with the new path once validated.

## Validation

- Entropy-conservation checks on nonconforming meshes: the existing `ec_advection_2d/3d_entropy_conservation` style tests re-run on `SimpleMortarMesh` (all flips) and on adapted octree meshes — entropy change at machine precision for the EC flux, sign-definite for the ES flux.
- Free-stream preservation on nonconforming meshes.
- Serial + 2-rank MPI + GPU coverage, same bar as #164 (Buildkite pipelines, >92.5% patch coverage).

Note the EC/ES models also have a pre-existing multi-rank GPU fault (#147) that is independent of mortars but will gate the MPI validation here.

## References

- #164 (3D AMR + mortars), #78 (original AMR issue)
- Friedrich et al. 2018, DOI 10.1007/s10915-018-0733-7
- Kopriva 1996 (the conforming-mortar baseline used by the standard DG path)

Contributor guide

Open the contributing guide

Research direction

Start with the guards in src/SELF_ECDGModel2D_t.f90 and src/SELF_ECDGModel3D_t.f90, then read ECDGSurfaceContribution and docs/Contributing/AMR3D-Design.md alongside the mortar work in #164. Compare the existing entropy-conservation tests with SimpleMortarMesh and adapted octree cases. Done means entropy and free-stream checks pass for EC/ES fluxes across serial, MPI, and GPU coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
fortran
Domain
hpc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.