Extension of ClimaCore operators to support DG methods
- Dominant language
- Julia
- Stars
- 117
- Forks
- 19
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 41
Description
## Purpose
The `as/dg-fluxes` and `as/bickley-jet` branches introduce the Flux-Differencing Discontinuous Galerkin (FDDG) horizontal discretization (following the approach of Souza
et al. (2023)) coupled to the staggered finite-difference vertical scheme. DG flux functions are defined in `src/Operators/numericalflux.jl`; the target 3D
driver is `examples/hybrid/sphere/discontinuous_galerkin/baroclinic_wave_fddg_fluxform.jl`.
At this stage, no effort has been made to unify the operator interfaces to allow the selection of CG / DG as backend numerical schemes.
This issue summarises the tests that must be maintained to preserve critical operator
characteristics for the DG method to become fully operational in ClimaCore.
The key requirement from the flux-differencing literature (Gassner et al. (2016),
Souza et al. (2023)) is that stability is obtained structurally (summation-by-parts (SBP) operators + split-form volume fluxes + sign-definite interface dissipation) to eliminate artificial viscosity and modal filter approaches.
## Key references:
Gassner, G. J., Winters, A. R. & Kopriva, D. A. (2016). Split form nodal discontinuous
Galerkin schemes with summation-by-parts property for the compressible Euler equations.
J. Comput. Phys. 327, 39–66. https://doi.org/10.1016/j.jcp.2016.09.013
Souza, A. N., He, J., Bischoff, T., et al. (2023). The flux-differencing discontinuous
Galerkin method applied to an idealized fully compressible nonhydrostatic dry atmosphere.
J. Adv. Model. Earth Syst. 15(4). https://doi.org/10.1029/2022MS003527
Additionally (towards DG in vector-invariant form, which is out of scope for this issue):
Montoya, T., Rueda-Ramirez, A. M. and Gassner, G. J. (2025) Entropy-stable discontinuous
spectral-element methods for the spherical shallow water equations
in covariant form, arXiv:2509.08790v1 [math.NA] https://arxiv.org/html/2509.08790v1
## Existing unit-test coverage
(Claude summary via `as/bickley-jet` and `as/dg-fluxes`)
| Existing (unit) testset (Plane DG configuration) | Checks |
|---|---|
| `"weak divergence + central flux equals strong divergence"` | Shared `WeakDivergence()`/`Divergence()` (already covered by CG); (SBP identity, `sWJ`/normal scaling) |
| `"central numerical flux conserves (node sum of residual is zero)"` | Classical central-flux/conservation principle, exercised through the DG-only `add_numerical_flux_internal!` (antisymmetric single-valued interface flux leads to global conservation, including panel edges) |
| `"flux-differencing divergence: per-element telescoping on the sphere"` | Summation-by-parts property of the FDDG volume term ⇒ local conservation |
| `"penalty flux vanishes for continuous fields (center & face spaces)"` | Interface consistency; reversed-face/panel-edge handling |
| `"LDG penalty flux vanishes for continuous fields"` | Symmetric interior penalty Galerkin(SIPG) consistency |
| `"pure-2D sphere: lifting (Bassi-Rebay (2000)) & penalty fluxes vanish for continuous fields"` | Same on pure-2D sphere space |
| `"flux-differencing divergence: weak-form on SpectralElement2D"` | Validates the new `add_flux_differencing_divergence!` against the shared `WeakDivergence()` — with a central two-point flux, split-form FD reproduces the CG weak form on constant metrics |
(The currrent working branches require upkeep against ClimaCore main - the idea is that any DG tests can be done in parallel for the time being without interrupting refactor efforts).
WIP : 32 element baroclinic wave, snapshots over 12day simulation
(FDDG, no hyperdiffusion or modal filtering)
https://github.com/user-attachments/assets/f5b082b5-954a-4b62-8a61-8128f0f2d9ca
https://github.com/user-attachments/assets/7c342e66-fcec-44dc-9df5-476ef6b421f2
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading src/Operators/numericalflux.jl and the target driver examples/hybrid/sphere/discontinuous_galerkin/baroclinic_wave_fddg_fluxform.jl. Run and review the listed DG unit-test sets, including the weak/strong divergence, conservation, telescoping, penalty, lifting, and SpectralElement2D checks. Done means the coverage is maintained against ClimaCore main and the DG driver and operator behavior are fully operational.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend, hpc
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100