weno_cu6 Module

Uses four 3-point finite-difference candidate polynomials on a 6-point face-centred stencil, together with a 6-point reference smoothness indicator. Near strong discontinuities the routine falls back to the solver's WENO5-JS branch on the 5-point upwind core to preserve robustness.



Variables

Type Visibility Attributes Name Initial
real(kind=wp), private, parameter :: cu6_c = 20.0_wp
integer, private, parameter :: cu6_q = 4
real(kind=wp), private, parameter :: fallback_ratio = 1.0_wp
real(kind=wp), private, parameter :: candidate_coeffs(3,4) = reshape([1.0_wp/3.0_wp, -7.0_wp/6.0_wp, 11.0_wp/6.0_wp, -1.0_wp/6.0_wp, 5.0_wp/6.0_wp, 1.0_wp/3.0_wp, 1.0_wp/3.0_wp, 5.0_wp/6.0_wp, -1.0_wp/6.0_wp, 11.0_wp/6.0_wp, -7.0_wp/6.0_wp, 1.0_wp/3.0_wp], [3, 4])
real(kind=wp), private, parameter :: linear_weights(4) = [1.0_wp/20.0_wp, 9.0_wp/20.0_wp, 9.0_wp/20.0_wp, 1.0_wp/20.0_wp]
real(kind=wp), private, parameter :: beta_mats(3,3,4) = reshape([4.0_wp/3.0_wp, -19.0_wp/3.0_wp, 11.0_wp/3.0_wp, -19.0_wp/3.0_wp, 25.0_wp/3.0_wp, -31.0_wp/3.0_wp, 11.0_wp/3.0_wp, -31.0_wp/3.0_wp, 10.0_wp/3.0_wp, 4.0_wp/3.0_wp, -13.0_wp/3.0_wp, 5.0_wp/3.0_wp, -13.0_wp/3.0_wp, 13.0_wp/3.0_wp, -13.0_wp/3.0_wp, 5.0_wp/3.0_wp, -13.0_wp/3.0_wp, 4.0_wp/3.0_wp, 10.0_wp/3.0_wp, -31.0_wp/3.0_wp, 11.0_wp/3.0_wp, -31.0_wp/3.0_wp, 25.0_wp/3.0_wp, -19.0_wp/3.0_wp, 11.0_wp/3.0_wp, -19.0_wp/3.0_wp, 4.0_wp/3.0_wp, 22.0_wp/3.0_wp, -73.0_wp/3.0_wp, 29.0_wp/3.0_wp, -73.0_wp/3.0_wp, 61.0_wp/3.0_wp, -49.0_wp/3.0_wp, 29.0_wp/3.0_wp, -49.0_wp/3.0_wp, 10.0_wp/3.0_wp], [3, 3, 4])
real(kind=wp), private, parameter :: beta6_mat(6,6) = reshape([525910327.0_wp/232243200.0_wp, -456216463.0_wp/23224320.0_wp, 389975071.0_wp/11612160.0_wp, -330534727.0_wp/11612160.0_wp, 279429607.0_wp/23224320.0_wp, -236379487.0_wp/116121600.0_wp, -456216463.0_wp/23224320.0_wp, 2146987907.0_wp/46448640.0_wp, -1930601747.0_wp/11612160.0_wp, 1690889819.0_wp/11612160.0_wp, -1463230907.0_wp/23224320.0_wp, 251883319.0_wp/23224320.0_wp, 389975071.0_wp/11612160.0_wp, -1930601747.0_wp/11612160.0_wp, 1833221603.0_wp/11612160.0_wp, -1679332331.0_wp/5806080.0_wp, 1495974539.0_wp/11612160.0_wp, -263126407.0_wp/11612160.0_wp, -330534727.0_wp/11612160.0_wp, 1690889819.0_wp/11612160.0_wp, -1679332331.0_wp/5806080.0_wp, 1607794163.0_wp/11612160.0_wp, -1486026707.0_wp/11612160.0_wp, 268747951.0_wp/11612160.0_wp, 279429607.0_wp/23224320.0_wp, -1463230907.0_wp/23224320.0_wp, 1495974539.0_wp/11612160.0_wp, -1486026707.0_wp/11612160.0_wp, 1432381427.0_wp/46448640.0_wp, -268475791.0_wp/23224320.0_wp, -236379487.0_wp/116121600.0_wp, 251883319.0_wp/23224320.0_wp, -263126407.0_wp/11612160.0_wp, 268747951.0_wp/11612160.0_wp, -268475791.0_wp/23224320.0_wp, 263126407.0_wp/232243200.0_wp], [6, 6])

Subroutines

private pure subroutine weno5_fallback_reconstruct(f_stencil, f_hat)

Arguments

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

public pure subroutine weno_cu6_reconstruct(f_stencil, f_hat)

Arguments

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