From a993cb64ad545b24b274ecf2a7ac58d8269696b1 Mon Sep 17 00:00:00 2001 From: Daniel_Doehring Date: Tue, 24 Sep 2024 09:51:11 +0200 Subject: [PATCH 1/3] `Remake` for `SemidiscretizationEulerGravity` --- .../semidiscretization_euler_gravity.jl | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/semidiscretization/semidiscretization_euler_gravity.jl b/src/semidiscretization/semidiscretization_euler_gravity.jl index 97524fb505..6958b5da83 100644 --- a/src/semidiscretization/semidiscretization_euler_gravity.jl +++ b/src/semidiscretization/semidiscretization_euler_gravity.jl @@ -134,7 +134,27 @@ function SemidiscretizationEulerGravity(semi_euler::SemiEuler, parameters, cache) end -# TODO: AD, add appropriate method for remake +function remake(semi::SemidiscretizationEulerGravity; + uEltype = real(semi.solver), + semi_euler = semi.semi_euler, + semi_gravity = semi.semi_gravity, + parameters = semi.parameters) + + semi_euler = remake(semi_euler, uEltype = uEltype) + semi_gravity = remake(semi_gravity, uEltype = uEltype) + + # Recreate cache, i.e., registers for u with e.g. AD datatype + u_ode = compute_coefficients(zero(real(semi_gravity)), semi_gravity) + du_ode = similar(u_ode) + u_tmp1_ode = similar(u_ode) + u_tmp2_ode = similar(u_ode) + cache = (; u_ode, du_ode, u_tmp1_ode, u_tmp2_ode) + + SemidiscretizationEulerGravity{typeof(semi_euler), typeof(semi_gravity), + typeof(parameters), typeof(cache)}(semi_euler, + semi_gravity, + parameters, cache) +end function Base.show(io::IO, semi::SemidiscretizationEulerGravity) @nospecialize semi # reduce precompilation time From b895d807ec8f61e91efdd8f96ea84fac2da67d7f Mon Sep 17 00:00:00 2001 From: Daniel_Doehring Date: Tue, 24 Sep 2024 09:55:24 +0200 Subject: [PATCH 2/3] test + fmt --- .../semidiscretization_euler_gravity.jl | 1 - test/test_special_elixirs.jl | 11 +++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/semidiscretization/semidiscretization_euler_gravity.jl b/src/semidiscretization/semidiscretization_euler_gravity.jl index 6958b5da83..082c684ff6 100644 --- a/src/semidiscretization/semidiscretization_euler_gravity.jl +++ b/src/semidiscretization/semidiscretization_euler_gravity.jl @@ -139,7 +139,6 @@ function remake(semi::SemidiscretizationEulerGravity; semi_euler = semi.semi_euler, semi_gravity = semi.semi_gravity, parameters = semi.parameters) - semi_euler = remake(semi_euler, uEltype = uEltype) semi_gravity = remake(semi_gravity, uEltype = uEltype) diff --git a/test/test_special_elixirs.jl b/test/test_special_elixirs.jl index 277ade9bd5..c268c923c0 100644 --- a/test/test_special_elixirs.jl +++ b/test/test_special_elixirs.jl @@ -254,6 +254,17 @@ end tspan = (0.0, 0.0), initial_refinement_level = 0) @test_nowarn jacobian_ad_forward(semi) end + + @timed_testset "EulerGravity" begin + trixi_include(@__MODULE__, + joinpath(EXAMPLES_DIR, + "paper_self_gravitating_gas_dynamics", + "elixir_eulergravity_convergence.jl"), + tspan = (0.0, 0.0), initial_refinement_level = 1) + J = jacobian_ad_forward(semi) + λ = eigvals(J) + @test maximum(real, λ) < 1.5 + end end @timed_testset "Test linear structure (3D)" begin From ffdcee9f7c0f0231acabd893a93fa2a9a7c4afce Mon Sep 17 00:00:00 2001 From: Daniel_Doehring Date: Tue, 24 Sep 2024 10:26:44 +0200 Subject: [PATCH 3/3] correct dataypte retrieval --- src/semidiscretization/semidiscretization_euler_gravity.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/semidiscretization/semidiscretization_euler_gravity.jl b/src/semidiscretization/semidiscretization_euler_gravity.jl index 082c684ff6..3ca429f63b 100644 --- a/src/semidiscretization/semidiscretization_euler_gravity.jl +++ b/src/semidiscretization/semidiscretization_euler_gravity.jl @@ -135,7 +135,7 @@ function SemidiscretizationEulerGravity(semi_euler::SemiEuler, end function remake(semi::SemidiscretizationEulerGravity; - uEltype = real(semi.solver), + uEltype = real(semi.semi_gravity.solver), semi_euler = semi.semi_euler, semi_gravity = semi.semi_gravity, parameters = semi.parameters)