diff --git a/src/solvers/dgmulti/dg.jl b/src/solvers/dgmulti/dg.jl index 5a1036487af..57ad45da3d7 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 @@ -665,7 +665,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 60090e90376..82114c60388 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, 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 0c7530a558b..bd3c6972364 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 f02d05e5a97..75e0b808afd 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 0cc374dc75c..3941854cfe0 100644 --- a/src/solvers/dgsem_p4est/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_p4est/dg_2d_parabolic.jl @@ -65,7 +65,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 @@ -145,8 +145,8 @@ function calc_gradient!(gradients, u_transformed, t, # Reset gradients @trixi_timeit timer() "reset gradients" begin - reset_du!(gradients_x, dg, cache) - reset_du!(gradients_y, dg, cache) + set_zero!(gradients_x, dg, cache) + set_zero!(gradients_y, dg, cache) end # Calculate volume integral diff --git a/src/solvers/dgsem_p4est/dg_3d_parabolic.jl b/src/solvers/dgsem_p4est/dg_3d_parabolic.jl index a120c2f40b3..47ecbd2e557 100644 --- a/src/solvers/dgsem_p4est/dg_3d_parabolic.jl +++ b/src/solvers/dgsem_p4est/dg_3d_parabolic.jl @@ -13,9 +13,9 @@ function calc_gradient!(gradients, u_transformed, t, # Reset gradients @trixi_timeit timer() "reset gradients" begin - 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) end # Calculate volume integral diff --git a/src/solvers/dgsem_p4est/dg_3d_parallel.jl b/src/solvers/dgsem_p4est/dg_3d_parallel.jl index 5314beec7b8..1e485474941 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 6cc2791c27e..923f1ac18ba 100644 --- a/src/solvers/dgsem_structured/dg.jl +++ b/src/solvers/dgsem_structured/dg.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/dgsem_tree/dg_1d.jl b/src/solvers/dgsem_tree/dg_1d.jl index 8753eb0967e..7a098aacf7c 100644 --- a/src/solvers/dgsem_tree/dg_1d.jl +++ b/src/solvers/dgsem_tree/dg_1d.jl @@ -69,7 +69,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 ccbbadfe523..8d503bba22a 100644 --- a/src/solvers/dgsem_tree/dg_1d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_1d_parabolic.jl @@ -52,7 +52,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. @@ -456,7 +456,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 7edc830a601..5fdb46bad36 100644 --- a/src/solvers/dgsem_tree/dg_2d.jl +++ b/src/solvers/dgsem_tree/dg_2d.jl @@ -111,7 +111,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 9ad039cb06d..01f43902a73 100644 --- a/src/solvers/dgsem_tree/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_2d_parabolic.jl @@ -52,7 +52,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 @@ -917,8 +917,8 @@ function calc_gradient!(gradients, u_transformed, t, # Reset gradients @trixi_timeit timer() "reset gradients" begin - reset_du!(gradients_x, dg, cache) - reset_du!(gradients_y, dg, cache) + set_zero!(gradients_x, dg, cache) + set_zero!(gradients_y, dg, cache) end # Calculate volume integral diff --git a/src/solvers/dgsem_tree/dg_2d_parallel.jl b/src/solvers/dgsem_tree/dg_2d_parallel.jl index 381ca713d82..ab9e9b492da 100644 --- a/src/solvers/dgsem_tree/dg_2d_parallel.jl +++ b/src/solvers/dgsem_tree/dg_2d_parallel.jl @@ -472,7 +472,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 7211b0b3610..b20a583f752 100644 --- a/src/solvers/dgsem_tree/dg_3d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_3d_parabolic.jl @@ -1094,9 +1094,9 @@ function calc_gradient!(gradients, u_transformed, t, # Reset gradients @trixi_timeit timer() "reset gradients" begin - 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) end # Calculate volume integral diff --git a/src/solvers/dgsem_tree/subcell_limiters.jl b/src/solvers/dgsem_tree/subcell_limiters.jl index efbe2ab7304..31cd75c734f 100644 --- a/src/solvers/dgsem_tree/subcell_limiters.jl +++ b/src/solvers/dgsem_tree/subcell_limiters.jl @@ -263,8 +263,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 1c785765d73..dc8f178a564 100644 --- a/src/solvers/dgsem_unstructured/dg_2d.jl +++ b/src/solvers/dgsem_unstructured/dg_2d.jl @@ -39,7 +39,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)