diff --git a/NEWS.md b/NEWS.md index 953b15c627d..dcfc577b95c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,12 @@ used in the Julia ecosystem. Notable changes will be documented in this file for human readability. +## Changes when updating to v0.14 from v0.13.x + +#### Changed + +- A couple `struct`s have been made completely immutable, or only a couple fields thereof. Most notably, `save_solution.condition.save_initial_solution` where `save_solution isa SavesolutionCallback` can now longer be directly changed. Instead, the `@reset` macro from [Accessors.jl](https://github.com/JuliaObjects/Accessors.jl) is used in the elixirs instead. + ## Changes in the v0.13 lifecycle #### Added diff --git a/examples/p4est_2d_dgsem/elixir_advection_restart.jl b/examples/p4est_2d_dgsem/elixir_advection_restart.jl index 5277a2f7292..0dbbb6c3d14 100644 --- a/examples/p4est_2d_dgsem/elixir_advection_restart.jl +++ b/examples/p4est_2d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -26,7 +27,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/p4est_2d_dgsem/elixir_advection_restart_amr.jl b/examples/p4est_2d_dgsem/elixir_advection_restart_amr.jl index b9b79600c2d..2f110f8f409 100644 --- a/examples/p4est_2d_dgsem/elixir_advection_restart_amr.jl +++ b/examples/p4est_2d_dgsem/elixir_advection_restart_amr.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -26,7 +27,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false # Add AMR callback amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable = first), diff --git a/examples/p4est_3d_dgsem/elixir_advection_restart.jl b/examples/p4est_3d_dgsem/elixir_advection_restart.jl index f428ea5e496..230f7483aeb 100644 --- a/examples/p4est_3d_dgsem/elixir_advection_restart.jl +++ b/examples/p4est_3d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -24,7 +25,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/structured_2d_dgsem/elixir_advection_restart.jl b/examples/structured_2d_dgsem/elixir_advection_restart.jl index c6df8f549ef..325df6bc7c6 100644 --- a/examples/structured_2d_dgsem/elixir_advection_restart.jl +++ b/examples/structured_2d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -25,7 +26,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/structured_3d_dgsem/elixir_advection_restart.jl b/examples/structured_3d_dgsem/elixir_advection_restart.jl index b72789f876d..42a1f0e2fb1 100644 --- a/examples/structured_3d_dgsem/elixir_advection_restart.jl +++ b/examples/structured_3d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -24,7 +25,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/t8code_2d_dgsem/elixir_advection_restart.jl b/examples/t8code_2d_dgsem/elixir_advection_restart.jl index 5277a2f7292..0dbbb6c3d14 100644 --- a/examples/t8code_2d_dgsem/elixir_advection_restart.jl +++ b/examples/t8code_2d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -26,7 +27,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/t8code_2d_dgsem/elixir_advection_restart_amr.jl b/examples/t8code_2d_dgsem/elixir_advection_restart_amr.jl index 679639b831d..caa25d41595 100644 --- a/examples/t8code_2d_dgsem/elixir_advection_restart_amr.jl +++ b/examples/t8code_2d_dgsem/elixir_advection_restart_amr.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -26,7 +27,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false # Add AMR callback amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable = first), diff --git a/examples/t8code_3d_dgsem/elixir_advection_restart.jl b/examples/t8code_3d_dgsem/elixir_advection_restart.jl index f428ea5e496..230f7483aeb 100644 --- a/examples/t8code_3d_dgsem/elixir_advection_restart.jl +++ b/examples/t8code_3d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -24,7 +25,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/tree_2d_dgsem/elixir_advection_restart.jl b/examples/tree_2d_dgsem/elixir_advection_restart.jl index ba52a7e46aa..25de4fbd968 100644 --- a/examples/tree_2d_dgsem/elixir_advection_restart.jl +++ b/examples/tree_2d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # Define time integration algorithm @@ -25,7 +26,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, alg; dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/tree_2d_dgsem/elixir_advection_restart_amr.jl b/examples/tree_2d_dgsem/elixir_advection_restart_amr.jl index b568fd3c311..d42e994bb48 100644 --- a/examples/tree_2d_dgsem/elixir_advection_restart_amr.jl +++ b/examples/tree_2d_dgsem/elixir_advection_restart_amr.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # Define time integration algorithm @@ -24,7 +25,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false # Add AMR callback amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable = first), diff --git a/examples/tree_3d_dgsem/elixir_advection_restart.jl b/examples/tree_3d_dgsem/elixir_advection_restart.jl index 626a253ad72..a2b4355960e 100644 --- a/examples/tree_3d_dgsem/elixir_advection_restart.jl +++ b/examples/tree_3d_dgsem/elixir_advection_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -22,7 +23,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/examples/unstructured_2d_dgsem/elixir_euler_restart.jl b/examples/unstructured_2d_dgsem/elixir_euler_restart.jl index 95fb9a00aa9..3d2c2de5ce8 100644 --- a/examples/unstructured_2d_dgsem/elixir_euler_restart.jl +++ b/examples/unstructured_2d_dgsem/elixir_euler_restart.jl @@ -1,5 +1,6 @@ using OrdinaryDiffEqLowStorageRK using Trixi +using Accessors: @reset ############################################################################### # create a restart file @@ -24,7 +25,7 @@ dt = load_dt(restart_filename) ode = semidiscretize(semi, tspan, restart_filename) # Do not overwrite the initial snapshot written by elixir_advection_extended.jl. -save_solution.condition.save_initial_solution = false +@reset save_solution.condition.save_initial_solution = false integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false); dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback diff --git a/src/callbacks_step/save_solution.jl b/src/callbacks_step/save_solution.jl index ac40bc42de0..091fa455150 100644 --- a/src/callbacks_step/save_solution.jl +++ b/src/callbacks_step/save_solution.jl @@ -42,7 +42,7 @@ function get_node_variable(::Val{symbol}, u, mesh, equations, dg, cache, end ``` """ -mutable struct SaveSolutionCallback{IntervalType, SolutionVariablesType} +struct SaveSolutionCallback{IntervalType, SolutionVariablesType} interval_or_dt::IntervalType save_initial_solution::Bool save_final_solution::Bool diff --git a/test/Project.toml b/test/Project.toml index e2d2243c855..14b8f8bbda8 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,4 +1,5 @@ [deps] +Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" @@ -38,6 +39,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TrixiTest = "0a316866-cbd0-4425-8bcb-08103b2c1f26" [compat] +Accessors = "0.1.36" ADTypes = "1.11" Adapt = "4" Aqua = "0.8"