Skip to content

Non-Uniform WENO Core (Direct Derivative Reconstruction)#581

Merged
ChrisRackauckas merged 9 commits into
SciML:masterfrom
utkuyilmaz1903:research/weno-theoretical-convergence
Jun 30, 2026
Merged

Non-Uniform WENO Core (Direct Derivative Reconstruction)#581
ChrisRackauckas merged 9 commits into
SciML:masterfrom
utkuyilmaz1903:research/weno-theoretical-convergence

Conversation

@utkuyilmaz1903

@utkuyilmaz1903 utkuyilmaz1903 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Checklist

  • Appropriate tests were added
  • Any code changes were done in a way that does not break public API
  • All documentation related to code changes were updated
  • The new code follows the
    contributor guidelines, in particular the SciML Style Guide and
    COLPRAC.
  • Any new documentation only uses public API

Additional context

Add any other context about the problem here.

@utkuyilmaz1903

utkuyilmaz1903 commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

Hi @ChrisRackauckas @xtalax,

Briefly, _weno_f_nonuniform_core implements unrolled Fornberg weights with Shi-Hu-Shu. It is strictly zero-allocation and verified against ForwardDiff/Symbolics.

Since it's currently a node-centered, central, non-conservative core, I’d love your high-level sanity check on two quick points before I start coding the boundary cases:

Boundaries: I plan to handle edge nodes via biased Fornberg stencils (dropping to 3rd-order locally, which should maintain global 4th-order per Gustafsson’s GKS theory). Does this sound like the right path?

Upwinding: Since the current uniform weno_f also behaves centrally, should we keep this strictly as a central operator for now, or eventually discuss a higher-level wrapper that passes advection velocity?

No rush for a detailed line-by-line review just wanted to make sure the foundation is on the right track before spending time on the edge dispatches.

Comment thread src/discretization/schemes/WENO/WENO.jl Outdated
end

# Non-uniform node-centered Lagrange WENO-5 dispatch (struct/constructor wiring handled separately).
include("weno_nonuniform.jl")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all includes should be at the top level.

Comment on lines +4 to +5
# Fornberg (1988) finite-difference weights for a 3-point stencil; returns the m = 0, 1, 2 operators.
@inline function _fornberg3_weights(α::NTuple{3, T}, xt::T) where {T}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already implemented in the package?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually considered using it first, but I noticed it allocates dynamic arrays internally, which causes heap allocations.I felt using the explicit algebraic form here was the safest bet to guarantee zero allocation.

@utkuyilmaz1903 utkuyilmaz1903 force-pushed the research/weno-theoretical-convergence branch from c145ce0 to 2cef2b3 Compare June 28, 2026 00:53
@ChrisRackauckas

Copy link
Copy Markdown
Member

Looks good once it's out of draft.

@utkuyilmaz1903 utkuyilmaz1903 marked this pull request as ready for review June 28, 2026 10:54
@utkuyilmaz1903 utkuyilmaz1903 changed the title Draft: Non-Uniform WENO Core (Direct Derivative Reconstruction) Non-Uniform WENO Core (Direct Derivative Reconstruction) Jun 29, 2026
@ChrisRackauckas ChrisRackauckas merged commit 1027344 into SciML:master Jun 30, 2026
14 of 65 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants