eno3_reconstruct Subroutine

public pure subroutine eno3_reconstruct(f_stencil, f_hat)

Perform classical ENO3 reconstruction on the supplied stencil.

Selects the smoothest 3-cell substencil per equation component using Newton divided differences (Harten et al., 1987).

Stencil column mapping (5-point, half_stencil=3): col 1 = v_{i-2}, col 2 = v_{i-1}, col 3 = v_i (centre), col 4 = v_{i+1}, col 5 = v_{i+2}.

Two-step stencil selection per component: Step 1 — compare |d^1[i-1]| vs |d^1[i]| (1st-order divided differences): d^1[j] = v_{j+1} - v_j Step 2 — compare |d^2[s-1]| vs |d^2[s]| (2nd-order divided differences): d^2[j] = (v_{j+2} - 2*v_{j+1} + v_j) / 2

Selected substencil starts at column s ∈ {1, 2, 3} and uses the same reconstruction formulas as the three WENO5 substencils: S0 (s=1): f̂ = (1/3)v1 - (7/6)v2 + (11/6)v3 S1 (s=2): f̂ = -(1/6)v1 + (5/6)v2 + (1/3)v3 S2 (s=3): f̂ = (1/3)v1 + (5/6)v2 - (1/6)*v3

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: f_stencil(:,:)
real(kind=wp), intent(out) :: f_hat(:)