From fb6dc01dbb9797d07548d5a8138712d4e2601a91 Mon Sep 17 00:00:00 2001 From: Florian Atteneder <florian.atteneder@uni-jena.de> Date: Tue, 10 Sep 2024 10:21:56 +0000 Subject: [PATCH] Limiter: factor out convex hull limiter logic (https://git.tpi.uni-jena.de/dg/dg1d.jl/-/merge_requests/225) for convenience for making plots --- src/limiters.jl | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/limiters.jl b/src/limiters.jl index c6c388ec..d561ebf7 100644 --- a/src/limiters.jl +++ b/src/limiters.jl @@ -207,16 +207,22 @@ function limit_slope_convex_hull!(var::AbstractArray, mask::AbstractArray, idxs_lhs, idxs_rhs = cellindices.(Ref(mesh), (k-1,k+1)) vvar_lhs, vvar_rhs = view.(Ref(var), (idxs_lhs,idxs_rhs)) - vtmp_var[1] = vvar[1] + (vvar_lhs[end]-vvar[1])*w - vtmp_var[end] = vvar[end] + (vvar_rhs[1]-vvar[end])*w - for i in 2:Npts-1 - ul, uc, ur = vvar[i-1], vvar[i], vvar[i+1] - xl, xc, xr = vx[i-1], vx[i], vx[i+1] - um = ul + (ur-ul)/(xr-xl)*(xc-xl) - vtmp_var[i] = uc + (um-uc)*w - end + impl_limit_slope_convex_hull!(vtmp_var, vvar, vvar_lhs, vvar_rhs, vx, w) end copyto!(var, tmp_var) end end + + +@inline function impl_limit_slope_convex_hull!(vtmp_var, vvar, vvar_lhs, vvar_rhs, vx, w) + vtmp_var[1] = vvar[1] + (vvar_lhs[end]-vvar[1])*w + vtmp_var[end] = vvar[end] + (vvar_rhs[1]-vvar[end])*w + Npts = length(vvar) + for i in 2:Npts-1 + ul, uc, ur = vvar[i-1], vvar[i], vvar[i+1] + xl, xc, xr = vx[i-1], vx[i], vx[i+1] + um = ul + (ur-ul)/(xr-xl)*(xc-xl) + vtmp_var[i] = uc + (um-uc)*w + end +end -- GitLab