Skip to content

feat(WENO): discretizer integration for non-uniform grids#583

Merged
ChrisRackauckas merged 11 commits into
SciML:masterfrom
utkuyilmaz1903:feat/weno-discretizer-integration
Jul 6, 2026
Merged

feat(WENO): discretizer integration for non-uniform grids#583
ChrisRackauckas merged 11 commits into
SciML:masterfrom
utkuyilmaz1903:feat/weno-discretizer-integration

Conversation

@utkuyilmaz1903

@utkuyilmaz1903 utkuyilmaz1903 commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Overview

Non-uniform WENO-5 is wired into the MethodOfLines discretizer via WENONonUniformBoundary Val callables and grid-dispatched stencil extent. Uniform grids retain the legacy weno_f_uniform path.

Architectural Wiring

  • WENOScheme(): {5,0} + [nothing, nothing]{5,5} + WENONonUniformBoundary{1,2} / {5,4} lower/upper callables.
  • extent(WENOScheme(), dorder, dx::Number) == 2; dx::AbstractVector0 — routed through interior_map.jl via extent(ascheme, dorder, s.dxs[x]).
  • scheme_types.jl: 3-arg extent(scheme, dorder, dx) fallback delegates to 2-arg for grid-agnostic schemes.
  • MethodOfLines.jl: include nonuniform_weno.jl before WENO.jl (forward-ref to WENONonUniformBoundary).
  • WENONonUniformBoundary: dx::AbstractVector and dx::Number dispatches (FunctionalScheme contract).

Internal Breaking Changes

Before After Uniform impact
FunctionalScheme{5,0}, boundary nothing + extrapolation {5,5}, Val boundary callables None — uniform uses extent(..., Number)==2, interior weno_f_uniform
NU stencil extent always 2 (2-arg nothing count) NU vector dx: 3-arg extent 0 Penultimate nodes enter interior map on non-uniform grids
extent(WENOScheme(), 1) == 2 extent(WENOScheme(), 1) == 0 None — discretizer passes s.dxs[x] (3-arg); 2-arg only affects callers omitting grid spacing

Standard uniform routing is isolated: s.dxs[x] is a Number on StepRangeLen grids → extent 2 unchanged.

Testing Highlights

  • New test/Components/weno_boundary_integration.jl: extent dispatch, interior-map metadata (NU 0 vs uniform 2), get_f_and_taps routing to WENONonUniformBoundary{2}/{4}, @inferred boundary execution, discretize+solve smoke (inflow Dirichlet + outflow zero-flux).
  • Integration: 24/24 pass; core logic weno_nonuniform_boundary.jl: 205/205 (no regression).

@utkuyilmaz1903 utkuyilmaz1903 force-pushed the feat/weno-discretizer-integration branch 2 times, most recently from a57bc54 to 15c05b1 Compare July 6, 2026 07:42
@utkuyilmaz1903 utkuyilmaz1903 marked this pull request as ready for review July 6, 2026 08:09
@ChrisRackauckas

Copy link
Copy Markdown
Member

None of the test failures are related? It's getting really difficult to review these, and some time to get to green will be required to go much further faster.

@utkuyilmaz1903

Copy link
Copy Markdown
Contributor Author

None of the test failures are related? It's getting really difficult to review these, and some time to get to green will be required to go much further faster.

You are absolutely right. I'm currently away from my desk, but my thought is that these failures are unrelated to the WENO changes. I will dive into the logs tonight or tomorrow to investigate these failures. I'll gladly help put together a fix or a separate PR to get the CI back to green so we can proceed smoothly.

@ChrisRackauckas

Copy link
Copy Markdown
Member

Yeah let's merge but we should take a bit of time to green it.

@ChrisRackauckas ChrisRackauckas merged commit e28d8b5 into SciML:master Jul 6, 2026
28 of 130 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