diff --git a/src/solvers/dgmulti/dg.jl b/src/solvers/dgmulti/dg.jl index d6c3676e507..0d00c38033d 100644 --- a/src/solvers/dgmulti/dg.jl +++ b/src/solvers/dgmulti/dg.jl @@ -154,7 +154,7 @@ function allocate_nested_array(uEltype, nvars, array_dimensions, dg) nvars)) end -function reset_du!(du, dg::DGMulti, other_args...) +function set_zero!(du, dg::DGMulti, other_args...) @threaded for i in eachindex(du) du[i] = zero(eltype(du)) end @@ -723,7 +723,7 @@ end function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMulti, cache) where {BC, Source} - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) @trixi_timeit timer() "volume integral" begin calc_volume_integral!(du, u, mesh, diff --git a/src/solvers/dgmulti/dg_parabolic.jl b/src/solvers/dgmulti/dg_parabolic.jl index 087bbc98511..b531e6e64cb 100644 --- a/src/solvers/dgmulti/dg_parabolic.jl +++ b/src/solvers/dgmulti/dg_parabolic.jl @@ -165,7 +165,7 @@ function calc_gradient!(gradients, u::StructArray, t, mesh::DGMultiMesh, boundary_conditions, dg::DGMulti, parabolic_scheme, cache, cache_parabolic) for dim in eachindex(gradients) - reset_du!(gradients[dim], dg) + set_zero!(gradients[dim], dg) end calc_gradient_volume_integral!(gradients, u, mesh, equations, dg, cache, @@ -302,7 +302,7 @@ function calc_viscous_fluxes!(flux_viscous, u, gradients, mesh::DGMultiMesh, equations::AbstractEquationsParabolic, dg::DGMulti, cache, cache_parabolic) for dim in eachdim(mesh) - reset_du!(flux_viscous[dim], dg) + set_zero!(flux_viscous[dim], dg) end (; local_u_values_threaded) = cache_parabolic @@ -429,7 +429,7 @@ function calc_divergence!(du, u::StructArray, t, flux_viscous, mesh::DGMultiMesh equations::AbstractEquationsParabolic, boundary_conditions, dg::DGMulti, parabolic_scheme, cache, cache_parabolic) - reset_du!(du, dg) + set_zero!(du, dg) calc_divergence_volume_integral!(du, u, flux_viscous, mesh, equations, dg, cache, cache_parabolic) @@ -473,7 +473,7 @@ function rhs_parabolic!(du, u, t, mesh::DGMultiMesh, equations_parabolic::AbstractEquationsParabolic, boundary_conditions, source_terms_parabolic, dg::DGMulti, parabolic_scheme, cache, cache_parabolic) - reset_du!(du, dg) + set_zero!(du, dg) @trixi_timeit timer() "transform variables" begin (; u_transformed, gradients, flux_viscous) = cache_parabolic diff --git a/src/solvers/dgmulti/flux_differencing.jl b/src/solvers/dgmulti/flux_differencing.jl index f23b32469e0..10c6891f621 100644 --- a/src/solvers/dgmulti/flux_differencing.jl +++ b/src/solvers/dgmulti/flux_differencing.jl @@ -618,7 +618,7 @@ end # Also called by DGMultiFluxDiff{<:GaussSBP} solvers. function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiff, cache) where {Source, BC} - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # this function evaluates the solution at volume and face quadrature points (which was previously # done in `prolong2interfaces` and `calc_volume_integral`) @@ -664,7 +664,7 @@ end function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiffSBP, cache) where {BC, Source} - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) @trixi_timeit timer() "volume integral" calc_volume_integral!(du, u, mesh, have_nonconservative_terms(equations), diff --git a/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl b/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl index d258763b553..3b3e86792c6 100644 --- a/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl +++ b/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl @@ -585,7 +585,7 @@ end function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiff{<:GaussSBP}, cache) where {Source, BC} - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # this function evaluates the solution at volume and face quadrature points (which was previously # done in `prolong2interfaces` and `calc_volume_integral`) diff --git a/src/solvers/dgsem_p4est/dg_2d_parabolic.jl b/src/solvers/dgsem_p4est/dg_2d_parabolic.jl index 96749522582..927164d1e07 100644 --- a/src/solvers/dgsem_p4est/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_p4est/dg_2d_parabolic.jl @@ -66,7 +66,7 @@ function rhs_parabolic!(du, u, t, mesh::Union{P4estMesh{2}, P4estMesh{3}}, # need to interpolate solutions *and* gradients to the surfaces. # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral # This calls the specialized version for the viscous fluxes from diff --git a/src/solvers/dgsem_p4est/dg_3d_parallel.jl b/src/solvers/dgsem_p4est/dg_3d_parallel.jl index 4b8bc5005aa..ab8fc92bf66 100644 --- a/src/solvers/dgsem_p4est/dg_3d_parallel.jl +++ b/src/solvers/dgsem_p4est/dg_3d_parallel.jl @@ -29,7 +29,7 @@ function rhs!(du, u, t, end # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/dgsem_structured/dg.jl b/src/solvers/dgsem_structured/dg.jl index 4c99462c1db..cc0243a9989 100644 --- a/src/solvers/dgsem_structured/dg.jl +++ b/src/solvers/dgsem_structured/dg.jl @@ -43,7 +43,7 @@ function rhs!(du, u, t, boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/dgsem_tree/dg_1d.jl b/src/solvers/dgsem_tree/dg_1d.jl index 7cba51f1247..68d226f15cf 100644 --- a/src/solvers/dgsem_tree/dg_1d.jl +++ b/src/solvers/dgsem_tree/dg_1d.jl @@ -60,7 +60,7 @@ function rhs!(du, u, t, boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/dgsem_tree/dg_1d_parabolic.jl b/src/solvers/dgsem_tree/dg_1d_parabolic.jl index 2afdfb07650..a867994cd78 100644 --- a/src/solvers/dgsem_tree/dg_1d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_1d_parabolic.jl @@ -67,7 +67,7 @@ function rhs_parabolic!(du, u, t, mesh::TreeMesh{1}, # need to interpolate solutions *and* gradients to the surfaces. # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral # This calls the specialized version for the viscous flux. @@ -477,7 +477,7 @@ function calc_gradient!(gradients, u_transformed, t, mesh::TreeMesh{1}, # Reset gradients @trixi_timeit timer() "reset gradients" begin - reset_du!(gradients, dg, cache) + set_zero!(gradients, dg, cache) end # Calculate volume integral diff --git a/src/solvers/dgsem_tree/dg_2d.jl b/src/solvers/dgsem_tree/dg_2d.jl index ff75acb3773..a4548bef8c0 100644 --- a/src/solvers/dgsem_tree/dg_2d.jl +++ b/src/solvers/dgsem_tree/dg_2d.jl @@ -107,7 +107,7 @@ function rhs!(du, u, t, boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/dgsem_tree/dg_2d_parabolic.jl b/src/solvers/dgsem_tree/dg_2d_parabolic.jl index bba7096c61e..33a19cd8a84 100644 --- a/src/solvers/dgsem_tree/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_2d_parabolic.jl @@ -67,7 +67,7 @@ function rhs_parabolic!(du, u, t, mesh::Union{TreeMesh{2}, TreeMesh{3}}, # need to interpolate solutions *and* gradients to the surfaces. # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral. # This calls the specialized version for the viscous fluxes from @@ -929,8 +929,8 @@ end function reset_gradients!(gradients::NTuple{2}, dg::DG, cache) gradients_x, gradients_y = gradients - reset_du!(gradients_x, dg, cache) - reset_du!(gradients_y, dg, cache) + set_zero!(gradients_x, dg, cache) + set_zero!(gradients_y, dg, cache) return nothing end diff --git a/src/solvers/dgsem_tree/dg_2d_parallel.jl b/src/solvers/dgsem_tree/dg_2d_parallel.jl index 824a85581ba..8b73e79872b 100644 --- a/src/solvers/dgsem_tree/dg_2d_parallel.jl +++ b/src/solvers/dgsem_tree/dg_2d_parallel.jl @@ -475,7 +475,7 @@ function rhs!(du, u, t, end # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/dgsem_tree/dg_3d_parabolic.jl b/src/solvers/dgsem_tree/dg_3d_parabolic.jl index 8af74734baf..c363c99dfbb 100644 --- a/src/solvers/dgsem_tree/dg_3d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_3d_parabolic.jl @@ -44,9 +44,9 @@ end function reset_gradients!(gradients::NTuple{3}, dg::DG, cache) gradients_x, gradients_y, gradients_z = gradients - reset_du!(gradients_x, dg, cache) - reset_du!(gradients_y, dg, cache) - reset_du!(gradients_z, dg, cache) + set_zero!(gradients_x, dg, cache) + set_zero!(gradients_y, dg, cache) + set_zero!(gradients_z, dg, cache) return nothing end diff --git a/src/solvers/dgsem_tree/subcell_limiters.jl b/src/solvers/dgsem_tree/subcell_limiters.jl index 610ce1e4123..31577758c26 100644 --- a/src/solvers/dgsem_tree/subcell_limiters.jl +++ b/src/solvers/dgsem_tree/subcell_limiters.jl @@ -265,8 +265,7 @@ function (limiter::SubcellLimiterIDP)(u, semi, equations, dg::DGSEM, t, dt; kwargs...) @unpack alpha = limiter.cache.subcell_limiter_coefficients - # TODO: Do not abuse `reset_du!` but maybe implement a generic `set_zero!` - @trixi_timeit timer() "reset alpha" reset_du!(alpha, dg, semi.cache) + @trixi_timeit timer() "reset alpha" set_zero!(alpha, dg, semi.cache) if limiter.local_twosided @trixi_timeit timer() "local twosided" idp_local_twosided!(alpha, limiter, diff --git a/src/solvers/dgsem_unstructured/dg_2d.jl b/src/solvers/dgsem_unstructured/dg_2d.jl index 8a498b5deb8..2838243d6d1 100644 --- a/src/solvers/dgsem_unstructured/dg_2d.jl +++ b/src/solvers/dgsem_unstructured/dg_2d.jl @@ -40,7 +40,7 @@ function rhs!(du, u, t, boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du - @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) + @trixi_timeit timer() "reset ∂u/∂t" set_zero!(du, dg, cache) # Calculate volume integral @trixi_timeit timer() "volume integral" begin diff --git a/src/solvers/solvers.jl b/src/solvers/solvers.jl index 9eb7bdfa0b2..8988a42bdab 100644 --- a/src/solvers/solvers.jl +++ b/src/solvers/solvers.jl @@ -6,7 +6,7 @@ #! format: noindent # Used by both `dg::DGSEM` and `dg::FDSBP` -function reset_du!(du, dg, cache) +function set_zero!(du, dg, cache) # du .= zero(eltype(du)) doesn't scale when using multiple threads. # See https://github.com/trixi-framework/Trixi.jl/pull/924 for a performance comparison. @threaded for element in eachelement(dg, cache)