diff --git a/examples/1d/elixir_advection_amr.jl b/examples/1d/elixir_advection_amr.jl index a6fef42e0e..90e4545e63 100644 --- a/examples/1d/elixir_advection_amr.jl +++ b/examples/1d/elixir_advection_amr.jl @@ -31,6 +31,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=0.1, @@ -42,23 +56,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.6) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback); + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_advection_amr_nonperiodic.jl b/examples/1d/elixir_advection_amr_nonperiodic.jl index 14e6273404..853c1c0e76 100644 --- a/examples/1d/elixir_advection_amr_nonperiodic.jl +++ b/examples/1d/elixir_advection_amr_nonperiodic.jl @@ -37,6 +37,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=0.1, @@ -48,23 +62,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.6) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback); + amr_callback, stepsize_callback); ############################################################################### diff --git a/examples/1d/elixir_advection_basic.jl b/examples/1d/elixir_advection_basic.jl index 9b0c0dbe27..4ef68c8a85 100644 --- a/examples/1d/elixir_advection_basic.jl +++ b/examples/1d/elixir_advection_basic.jl @@ -8,7 +8,7 @@ using Trixi advectionvelocity = 1.0 equations = LinearScalarAdvectionEquation1D(advectionvelocity) -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux solver = DGSEM(3, flux_lax_friedrichs) coordinates_min = -1 # minimum coordinate @@ -33,18 +33,18 @@ ode = semidiscretize(semi, (0.0, 1.0)); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.6) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_callback = AnalysisCallback(semi, interval=100) # The SaveSolutionCallback allows to save the solution to a file in regular intervals save_solution = SaveSolutionCallback(interval=100, solution_variables=:primitive) -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=100) +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.6) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, save_solution, analysis_callback) +callbacks = CallbackSet(summary_callback, analysis_callback, save_solution, stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_advection_extended.jl b/examples/1d/elixir_advection_extended.jl index 360d6e0505..d1f4be4bc1 100644 --- a/examples/1d/elixir_advection_extended.jl +++ b/examples/1d/elixir_advection_extended.jl @@ -17,7 +17,7 @@ initial_condition = initial_condition_convergence_test # fully periodic domains. Here, however, it is included to allow easy override during testing boundary_conditions = boundary_condition_periodic -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux surface_flux = flux_lax_friedrichs polydeg = 3 solver = DGSEM(polydeg, surface_flux) @@ -47,31 +47,32 @@ ode = semidiscretize(semi, tspan); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.6) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) -# The SaveSolutionCallback allows to save the solution to a file in regular intervals -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +# The AliveCallback prints short status information in regular intervals +alive_callback = AliveCallback(analysis_interval=analysis_interval) # The SaveRestartCallback allows to save a file from which a Trixi simulation can be restarted save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -# The AliveCallback prints short status information in regular intervals -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +# The SaveSolutionCallback allows to save the solution to a file in regular intervals +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.6) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_blast_wave.jl b/examples/1d/elixir_euler_blast_wave.jl index 5128dd6d95..06d306fe6d 100644 --- a/examples/1d/elixir_euler_blast_wave.jl +++ b/examples/1d/elixir_euler_blast_wave.jl @@ -40,20 +40,23 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.5) +analysis_interval = 100 + +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.5) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_density_wave.jl b/examples/1d/elixir_euler_density_wave.jl index 3c026f84dc..a62b2c16c9 100644 --- a/examples/1d/elixir_euler_density_wave.jl +++ b/examples/1d/elixir_euler_density_wave.jl @@ -29,24 +29,26 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.8) +analysis_interval = 2000 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 2000 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.8) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/1d/elixir_euler_ec.jl b/examples/1d/elixir_euler_ec.jl index 7b528e34c3..d6665f1304 100644 --- a/examples/1d/elixir_euler_ec.jl +++ b/examples/1d/elixir_euler_ec.jl @@ -30,23 +30,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.8) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.8) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_nonperiodic.jl b/examples/1d/elixir_euler_nonperiodic.jl index e7fec0f439..043d14cdd7 100644 --- a/examples/1d/elixir_euler_nonperiodic.jl +++ b/examples/1d/elixir_euler_nonperiodic.jl @@ -42,23 +42,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.8) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.8) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_sedov_blast_wave.jl b/examples/1d/elixir_euler_sedov_blast_wave.jl index 33d24c431c..e4b9fb3599 100644 --- a/examples/1d/elixir_euler_sedov_blast_wave.jl +++ b/examples/1d/elixir_euler_sedov_blast_wave.jl @@ -39,6 +39,19 @@ semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) tspan = (0.0, 12.5) ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + +analysis_interval = 1000 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -52,21 +65,12 @@ amr_callback = AMRCallback(semi, amr_controller, adapt_initial_condition=true, adapt_initial_condition_only_refine=true) -summary_callback = SummaryCallback() - stepsize_callback = StepsizeCallback(cfl=0.5) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 1000 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, save_solution, - analysis_callback, alive_callback) +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, + save_solution, + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_shockcapturing.jl b/examples/1d/elixir_euler_shockcapturing.jl index fc0239912d..90b6167f8e 100644 --- a/examples/1d/elixir_euler_shockcapturing.jl +++ b/examples/1d/elixir_euler_shockcapturing.jl @@ -40,20 +40,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.8) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.8) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/1d/elixir_euler_source_terms.jl b/examples/1d/elixir_euler_source_terms.jl index c7e1784e5e..0ed63f235b 100644 --- a/examples/1d/elixir_euler_source_terms.jl +++ b/examples/1d/elixir_euler_source_terms.jl @@ -31,25 +31,27 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.8) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_errors=(:l2_error_primitive, + :linf_error_primitive)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_errors=(:l2_error_primitive, - :linf_error_primitive)) +stepsize_callback = StepsizeCallback(cfl=0.8) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_advection_amr.jl b/examples/2d/elixir_advection_amr.jl index 08d1fc40f5..c7253ef98f 100644 --- a/examples/2d/elixir_advection_amr.jl +++ b/examples/2d/elixir_advection_amr.jl @@ -32,6 +32,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=0.1, @@ -43,23 +57,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.6) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback); + amr_callback, stepsize_callback); ############################################################################### diff --git a/examples/2d/elixir_advection_amr_nonperiodic.jl b/examples/2d/elixir_advection_amr_nonperiodic.jl index b0eb4cb430..b9f6b3d4f6 100644 --- a/examples/2d/elixir_advection_amr_nonperiodic.jl +++ b/examples/2d/elixir_advection_amr_nonperiodic.jl @@ -38,6 +38,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=0.1, @@ -49,25 +63,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.6) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback); - - + amr_callback, stepsize_callback); ############################################################################### # run the simulation diff --git a/examples/2d/elixir_advection_basic.jl b/examples/2d/elixir_advection_basic.jl index 5add01e06a..e6a5308b61 100644 --- a/examples/2d/elixir_advection_basic.jl +++ b/examples/2d/elixir_advection_basic.jl @@ -8,7 +8,7 @@ using Trixi advectionvelocity = (1.0, 1.0) equations = LinearScalarAdvectionEquation2D(advectionvelocity) -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux solver = DGSEM(3, flux_lax_friedrichs) coordinates_min = (-1, -1) # minimum coordinates (min(x), min(y)) @@ -33,18 +33,18 @@ ode = semidiscretize(semi, (0.0, 1.0)); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.6) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_callback = AnalysisCallback(semi, interval=100) # The SaveSolutionCallback allows to save the solution to a file in regular intervals save_solution = SaveSolutionCallback(interval=100, solution_variables=:primitive) -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=100) +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.6) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, save_solution, analysis_callback) +callbacks = CallbackSet(summary_callback, analysis_callback, save_solution, stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_advection_callbacks.jl b/examples/2d/elixir_advection_callbacks.jl index 11f2019459..a9a89d5bbf 100644 --- a/examples/2d/elixir_advection_callbacks.jl +++ b/examples/2d/elixir_advection_callbacks.jl @@ -127,7 +127,11 @@ ode = semidiscretize(semi, tspan); summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, @@ -136,15 +140,13 @@ save_solution = SaveSolutionCallback(interval=100, example_callback = TrixiExtensionExample.ExampleStepCallback(message="안녕하세요?") -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +stepsize_callback = StepsizeCallback(cfl=1.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, example_callback, - analysis_callback, alive_callback) + stepsize_callback) # In OrdinaryDiffEq.jl, the `step_limiter!` is called after every Runge-Kutta step # but before possible RHS evaluations of the new value occur. Hence, it's possible diff --git a/examples/2d/elixir_advection_extended.jl b/examples/2d/elixir_advection_extended.jl index 17b9ea5ee3..3dff53d589 100644 --- a/examples/2d/elixir_advection_extended.jl +++ b/examples/2d/elixir_advection_extended.jl @@ -18,7 +18,7 @@ initial_condition = initial_condition_convergence_test # fully periodic domains. Here, however, it is included to allow easy override during testing boundary_conditions = boundary_condition_periodic -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux surface_flux = flux_lax_friedrichs polydeg = 3 solver = DGSEM(polydeg, surface_flux) @@ -48,31 +48,32 @@ ode = semidiscretize(semi, tspan); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.6) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) -# The SaveSolutionCallback allows to save the solution to a file in regular intervals -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +# The AliveCallback prints short status information in regular intervals +alive_callback = AliveCallback(analysis_interval=analysis_interval) # The SaveRestartCallback allows to save a file from which a Trixi simulation can be restarted save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -# The AliveCallback prints short status information in regular intervals -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +# The SaveSolutionCallback allows to save the solution to a file in regular intervals +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.6) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_advection_mortar.jl b/examples/2d/elixir_advection_mortar.jl index 3158fec49c..6bca6e6199 100644 --- a/examples/2d/elixir_advection_mortar.jl +++ b/examples/2d/elixir_advection_mortar.jl @@ -36,24 +36,26 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) +stepsize_callback = StepsizeCallback(cfl=1.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_advection_timeintegration.jl b/examples/2d/elixir_advection_timeintegration.jl index 299c128460..5670124575 100644 --- a/examples/2d/elixir_advection_timeintegration.jl +++ b/examples/2d/elixir_advection_timeintegration.jl @@ -32,21 +32,23 @@ ode = semidiscretize(semi, tspan); summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:conservative) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +stepsize_callback = StepsizeCallback(cfl=1.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_blast_wave.jl b/examples/2d/elixir_euler_blast_wave.jl index a47f449170..58691e585c 100644 --- a/examples/2d/elixir_euler_blast_wave.jl +++ b/examples/2d/elixir_euler_blast_wave.jl @@ -40,20 +40,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.9) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.9) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_blast_wave_amr.jl b/examples/2d/elixir_euler_blast_wave_amr.jl index 88cea6f63e..ae5b277329 100644 --- a/examples/2d/elixir_euler_blast_wave_amr.jl +++ b/examples/2d/elixir_euler_blast_wave_amr.jl @@ -40,6 +40,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -55,18 +65,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.9) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_blob_amr.jl b/examples/2d/elixir_euler_blob_amr.jl index eed2fecab6..7166767983 100644 --- a/examples/2d/elixir_euler_blob_amr.jl +++ b/examples/2d/elixir_euler_blob_amr.jl @@ -43,6 +43,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=1.0, alpha_min=0.0001, @@ -60,18 +70,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.25) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_blob_mortar.jl b/examples/2d/elixir_euler_blob_mortar.jl index 7b0a9daa54..26929f0ec4 100644 --- a/examples/2d/elixir_euler_blob_mortar.jl +++ b/examples/2d/elixir_euler_blob_mortar.jl @@ -47,20 +47,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.7) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.7) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_density_wave.jl b/examples/2d/elixir_euler_density_wave.jl index 8636e06024..f93019f0e8 100644 --- a/examples/2d/elixir_euler_density_wave.jl +++ b/examples/2d/elixir_euler_density_wave.jl @@ -31,23 +31,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_ec.jl b/examples/2d/elixir_euler_ec.jl index 186c0c64fa..d24dc4f575 100644 --- a/examples/2d/elixir_euler_ec.jl +++ b/examples/2d/elixir_euler_ec.jl @@ -30,23 +30,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_kelvin_helmholtz_instability.jl b/examples/2d/elixir_euler_kelvin_helmholtz_instability.jl index 530308f03f..1c3a800c29 100644 --- a/examples/2d/elixir_euler_kelvin_helmholtz_instability.jl +++ b/examples/2d/elixir_euler_kelvin_helmholtz_instability.jl @@ -40,20 +40,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.3) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=20, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.3) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_kelvin_helmholtz_instability_amr.jl b/examples/2d/elixir_euler_kelvin_helmholtz_instability_amr.jl index 2cce7c85a4..451372cc5b 100644 --- a/examples/2d/elixir_euler_kelvin_helmholtz_instability_amr.jl +++ b/examples/2d/elixir_euler_kelvin_helmholtz_instability_amr.jl @@ -43,6 +43,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=1.0, alpha_min=0.0001, @@ -59,18 +69,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.3) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_nonperiodic.jl b/examples/2d/elixir_euler_nonperiodic.jl index fc270b9022..0d1aadad40 100644 --- a/examples/2d/elixir_euler_nonperiodic.jl +++ b/examples/2d/elixir_euler_nonperiodic.jl @@ -43,25 +43,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) - - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_euler_sedov_blast_wave.jl b/examples/2d/elixir_euler_sedov_blast_wave.jl index 084909e655..7de25272f6 100644 --- a/examples/2d/elixir_euler_sedov_blast_wave.jl +++ b/examples/2d/elixir_euler_sedov_blast_wave.jl @@ -40,6 +40,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -55,20 +65,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.8) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) - - + amr_callback, stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_euler_shockcapturing.jl b/examples/2d/elixir_euler_shockcapturing.jl index b66259d8c1..28a7c701e3 100644 --- a/examples/2d/elixir_euler_shockcapturing.jl +++ b/examples/2d/elixir_euler_shockcapturing.jl @@ -40,16 +40,17 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) callbacks = CallbackSet(summary_callback, stepsize_callback, save_solution, diff --git a/examples/2d/elixir_euler_source_terms.jl b/examples/2d/elixir_euler_source_terms.jl index e141a30535..89b1272a9a 100644 --- a/examples/2d/elixir_euler_source_terms.jl +++ b/examples/2d/elixir_euler_source_terms.jl @@ -31,21 +31,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_euler_vortex.jl b/examples/2d/elixir_euler_vortex.jl index 6720e44690..5506608c71 100644 --- a/examples/2d/elixir_euler_vortex.jl +++ b/examples/2d/elixir_euler_vortex.jl @@ -29,27 +29,28 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.1) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) +stepsize_callback = StepsizeCallback(cfl=1.1) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_vortex_amr.jl b/examples/2d/elixir_euler_vortex_amr.jl index 41b4a1704a..6f3a4d9355 100644 --- a/examples/2d/elixir_euler_vortex_amr.jl +++ b/examples/2d/elixir_euler_vortex_amr.jl @@ -89,6 +89,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 200 + +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=50, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, TrixiExtension.IndicatorVortex(semi), base_level=3, med_level=4, med_threshold=-3.0, @@ -100,23 +114,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.1) -save_solution = SaveSolutionCallback(interval=50, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 200 -alive_callback = AliveCallback(analysis_interval=analysis_interval) - -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_vortex_mortar.jl b/examples/2d/elixir_euler_vortex_mortar.jl index e81e629164..a465b0fe73 100644 --- a/examples/2d/elixir_euler_vortex_mortar.jl +++ b/examples/2d/elixir_euler_vortex_mortar.jl @@ -32,27 +32,28 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_vortex_mortar_shockcapturing.jl b/examples/2d/elixir_euler_vortex_mortar_shockcapturing.jl index 883cb4b06b..371ff17040 100644 --- a/examples/2d/elixir_euler_vortex_mortar_shockcapturing.jl +++ b/examples/2d/elixir_euler_vortex_mortar_shockcapturing.jl @@ -43,27 +43,28 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.7) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) +stepsize_callback = StepsizeCallback(cfl=0.7) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_vortex_mortar_split.jl b/examples/2d/elixir_euler_vortex_mortar_split.jl index 87618d57c8..f90f619790 100644 --- a/examples/2d/elixir_euler_vortex_mortar_split.jl +++ b/examples/2d/elixir_euler_vortex_mortar_split.jl @@ -33,27 +33,28 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_euler_vortex_shockcapturing.jl b/examples/2d/elixir_euler_vortex_shockcapturing.jl index f07cecdabd..3932cd4de6 100644 --- a/examples/2d/elixir_euler_vortex_shockcapturing.jl +++ b/examples/2d/elixir_euler_vortex_shockcapturing.jl @@ -39,28 +39,28 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.7) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_errors=(:conservation_error,), + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_errors=(:conservation_error,), - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal)) +stepsize_callback = StepsizeCallback(cfl=0.7) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_hypdiff_harmonic_nonperiodic.jl b/examples/2d/elixir_hypdiff_harmonic_nonperiodic.jl index d5f5431d6a..a342b48149 100644 --- a/examples/2d/elixir_hypdiff_harmonic_nonperiodic.jl +++ b/examples/2d/elixir_hypdiff_harmonic_nonperiodic.jl @@ -37,20 +37,22 @@ summary_callback = SummaryCallback() resid_tol = 5.0e-12 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_hypdiff_lax_friedrichs.jl b/examples/2d/elixir_hypdiff_lax_friedrichs.jl index 28aa76d640..38e687fe3c 100644 --- a/examples/2d/elixir_hypdiff_lax_friedrichs.jl +++ b/examples/2d/elixir_hypdiff_lax_friedrichs.jl @@ -34,21 +34,23 @@ summary_callback = SummaryCallback() resid_tol = 5.0e-12 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=1.2) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +stepsize_callback = StepsizeCallback(cfl=1.2) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_hypdiff_nonperiodic.jl b/examples/2d/elixir_hypdiff_nonperiodic.jl index 1e8b4af12f..40be29163a 100644 --- a/examples/2d/elixir_hypdiff_nonperiodic.jl +++ b/examples/2d/elixir_hypdiff_nonperiodic.jl @@ -41,20 +41,22 @@ summary_callback = SummaryCallback() resid_tol = 5.0e-12 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_hypdiff_upwind.jl b/examples/2d/elixir_hypdiff_upwind.jl index d0c2360522..78f8802544 100644 --- a/examples/2d/elixir_hypdiff_upwind.jl +++ b/examples/2d/elixir_hypdiff_upwind.jl @@ -35,20 +35,22 @@ summary_callback = SummaryCallback() resid_tol = 5.0e-12 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_mhd_alfven_wave.jl b/examples/2d/elixir_mhd_alfven_wave.jl index 55b067f168..dc1ed0e738 100644 --- a/examples/2d/elixir_mhd_alfven_wave.jl +++ b/examples/2d/elixir_mhd_alfven_wave.jl @@ -31,24 +31,27 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal, + energy_magnetic, cross_helicity)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) - -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal, - energy_magnetic, cross_helicity)) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) + ############################################################################### diff --git a/examples/2d/elixir_mhd_alfven_wave_mortar.jl b/examples/2d/elixir_mhd_alfven_wave_mortar.jl index 28148da246..bb001e4f52 100644 --- a/examples/2d/elixir_mhd_alfven_wave_mortar.jl +++ b/examples/2d/elixir_mhd_alfven_wave_mortar.jl @@ -34,25 +34,26 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, + extra_analysis_integrals=(entropy, energy_total, + energy_kinetic, energy_internal, + energy_magnetic, cross_helicity)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) - -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true, - extra_analysis_integrals=(entropy, energy_total, - energy_kinetic, energy_internal, - energy_magnetic, cross_helicity)) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_mhd_blast_wave.jl b/examples/2d/elixir_mhd_blast_wave.jl index 3d9c3f5424..1041760c0d 100644 --- a/examples/2d/elixir_mhd_blast_wave.jl +++ b/examples/2d/elixir_mhd_blast_wave.jl @@ -40,6 +40,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -55,19 +65,12 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.3) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) - + amr_callback, + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_mhd_ec.jl b/examples/2d/elixir_mhd_ec.jl index 414b7cace6..106541add8 100644 --- a/examples/2d/elixir_mhd_ec.jl +++ b/examples/2d/elixir_mhd_ec.jl @@ -31,20 +31,23 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.0) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.0) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/2d/elixir_mhd_orszag_tang.jl b/examples/2d/elixir_mhd_orszag_tang.jl index 270001dad5..178755868d 100644 --- a/examples/2d/elixir_mhd_orszag_tang.jl +++ b/examples/2d/elixir_mhd_orszag_tang.jl @@ -40,6 +40,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -55,19 +65,12 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.4) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) - + amr_callback, + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/2d/elixir_mhd_rotor.jl b/examples/2d/elixir_mhd_rotor.jl index fbc597ca6d..35dbf0319a 100644 --- a/examples/2d/elixir_mhd_rotor.jl +++ b/examples/2d/elixir_mhd_rotor.jl @@ -41,6 +41,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=0.5, alpha_min=0.001, @@ -56,19 +66,12 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.35) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) - + amr_callback, + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/3d/elixir_advection_amr.jl b/examples/3d/elixir_advection_amr.jl index ac6f80d48e..cde4725165 100644 --- a/examples/3d/elixir_advection_amr.jl +++ b/examples/3d/elixir_advection_amr.jl @@ -31,6 +31,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=0.1, @@ -42,25 +56,13 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.2) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, - save_restart, save_solution, - analysis_callback, alive_callback); - +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, + save_restart, + save_solution, + amr_callback, + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/3d/elixir_advection_basic.jl b/examples/3d/elixir_advection_basic.jl index 56b8d05395..1bbc6ee09c 100644 --- a/examples/3d/elixir_advection_basic.jl +++ b/examples/3d/elixir_advection_basic.jl @@ -8,7 +8,7 @@ using Trixi advectionvelocity = (1.0, 1.0, 1.0) equations = LinearScalarAdvectionEquation3D(advectionvelocity) -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux solver = DGSEM(3, flux_lax_friedrichs) coordinates_min = (-1, -1, -1) # minimum coordinates (min(x), min(y), min(z)) @@ -33,18 +33,18 @@ ode = semidiscretize(semi, (0.0, 1.0)); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.2) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_callback = AnalysisCallback(semi, interval=100) # The SaveSolutionCallback allows to save the solution to a file in regular intervals save_solution = SaveSolutionCallback(interval=100, solution_variables=:primitive) - -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=100) +# +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.2) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, save_solution, analysis_callback) +callbacks = CallbackSet(summary_callback, analysis_callback, save_solution, stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_advection_extended.jl b/examples/3d/elixir_advection_extended.jl index 8e632701aa..0177409747 100644 --- a/examples/3d/elixir_advection_extended.jl +++ b/examples/3d/elixir_advection_extended.jl @@ -18,7 +18,7 @@ initial_condition = initial_condition_convergence_test # fully periodic domains. Here, however, it is included to allow easy override during testing boundary_conditions = boundary_condition_periodic -# Create DG solver with polynomial degree = 3 and Lax-Friedrichs flux as surface flux +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux surface_flux = flux_lax_friedrichs polydeg = 3 solver = DGSEM(polydeg, surface_flux) @@ -48,31 +48,32 @@ ode = semidiscretize(semi, tspan); # and resets the timers summary_callback = SummaryCallback() -# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step -stepsize_callback = StepsizeCallback(cfl=1.2) +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) -# The SaveSolutionCallback allows to save the solution to a file in regular intervals -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +# The AliveCallback prints short status information in regular intervals +alive_callback = AliveCallback(analysis_interval=analysis_interval) # The SaveRestartCallback allows to save a file from which a Trixi simulation can be restarted save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -# The AliveCallback prints short status information in regular intervals -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +# The SaveSolutionCallback allows to save the solution to a file in regular intervals +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +# The StepsizeCallback handles the re-calculcation of the maximum Δt after each time step +stepsize_callback = StepsizeCallback(cfl=1.2) # Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_advection_mortar.jl b/examples/3d/elixir_advection_mortar.jl index 7d3575f215..9950ab61cd 100644 --- a/examples/3d/elixir_advection_mortar.jl +++ b/examples/3d/elixir_advection_mortar.jl @@ -36,24 +36,29 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.2) +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + +stepsize_callback = StepsizeCallback(cfl=1.2) + analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) -callbacks = CallbackSet(summary_callback, stepsize_callback, - save_restart, save_solution, - analysis_callback, alive_callback) +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, + save_restart, + save_solution, + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_amr.jl b/examples/3d/elixir_euler_amr.jl index 8808ce191d..2c983ba4df 100644 --- a/examples/3d/elixir_euler_amr.jl +++ b/examples/3d/elixir_euler_amr.jl @@ -30,6 +30,20 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy,)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), base_level=4, med_level=5, med_threshold=1.05, @@ -41,23 +55,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.9) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy,)) - -# TODO: Taal decide, first AMR or save solution etc. -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, - save_restart, save_solution, analysis_callback, - alive_callback); +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, + save_restart, save_solution, + amr_callback, stepsize_callback); ############################################################################### diff --git a/examples/3d/elixir_euler_blob_amr.jl b/examples/3d/elixir_euler_blob_amr.jl index f1d741277a..ec7345bebe 100644 --- a/examples/3d/elixir_euler_blob_amr.jl +++ b/examples/3d/elixir_euler_blob_amr.jl @@ -38,6 +38,16 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 200 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_solution = SaveSolutionCallback(interval=200, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorLöhner(semi, variable=density) amr_controller = ControllerThreeLevel(semi, amr_indicator, @@ -51,18 +61,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.7) -save_solution = SaveSolutionCallback(interval=200, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -analysis_interval = 200 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) limiter! = PositivityPreservingLimiterZhangShu(thresholds=(1.0e-4, 1.0e-4), diff --git a/examples/3d/elixir_euler_density_pulse.jl b/examples/3d/elixir_euler_density_pulse.jl index 2ade24c67d..53390de024 100644 --- a/examples/3d/elixir_euler_density_pulse.jl +++ b/examples/3d/elixir_euler_density_pulse.jl @@ -31,23 +31,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.1) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.1) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_ec.jl b/examples/3d/elixir_euler_ec.jl index 7313e5fc49..b651d29856 100644 --- a/examples/3d/elixir_euler_ec.jl +++ b/examples/3d/elixir_euler_ec.jl @@ -31,23 +31,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.3) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.3) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_eoc_test.jl b/examples/3d/elixir_euler_eoc_test.jl index 624cfae542..902d96d2ff 100644 --- a/examples/3d/elixir_euler_eoc_test.jl +++ b/examples/3d/elixir_euler_eoc_test.jl @@ -32,23 +32,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.1) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.1) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_mortar.jl b/examples/3d/elixir_euler_mortar.jl index 413ea137a1..a2d114a53f 100644 --- a/examples/3d/elixir_euler_mortar.jl +++ b/examples/3d/elixir_euler_mortar.jl @@ -35,24 +35,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/3d/elixir_euler_sedov_blast_wave.jl b/examples/3d/elixir_euler_sedov_blast_wave.jl index 31fa114d28..719a496359 100644 --- a/examples/3d/elixir_euler_sedov_blast_wave.jl +++ b/examples/3d/elixir_euler_sedov_blast_wave.jl @@ -44,6 +44,19 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=10, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) + amr_indicator = IndicatorHennemannGassner(semi, alpha_max=1.0, alpha_min=0.0, @@ -61,21 +74,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=0.35) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=10, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_shockcapturing.jl b/examples/3d/elixir_euler_shockcapturing.jl index e660204538..ae335562c8 100644 --- a/examples/3d/elixir_euler_shockcapturing.jl +++ b/examples/3d/elixir_euler_shockcapturing.jl @@ -42,23 +42,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_shockcapturing_amr.jl b/examples/3d/elixir_euler_shockcapturing_amr.jl index a7ac2b74b9..d9286aee29 100644 --- a/examples/3d/elixir_euler_shockcapturing_amr.jl +++ b/examples/3d/elixir_euler_shockcapturing_amr.jl @@ -42,6 +42,18 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) + +save_solution = SaveSolutionCallback(interval=100, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) amr_indicator = IndicatorHennemannGassner(semi, alpha_smooth=false, @@ -58,21 +70,10 @@ amr_callback = AMRCallback(semi, amr_controller, stepsize_callback = StepsizeCallback(cfl=1.3) -save_solution = SaveSolutionCallback(interval=100, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) - -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) - -callbacks = CallbackSet(summary_callback, amr_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + amr_callback, stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_source_terms.jl b/examples/3d/elixir_euler_source_terms.jl index 11e52f0c20..05ca93101e 100644 --- a/examples/3d/elixir_euler_source_terms.jl +++ b/examples/3d/elixir_euler_source_terms.jl @@ -32,23 +32,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=0.6) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=0.6) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_euler_taylor_green_vortex.jl b/examples/3d/elixir_euler_taylor_green_vortex.jl index 13e5aed848..eab9396572 100644 --- a/examples/3d/elixir_euler_taylor_green_vortex.jl +++ b/examples/3d/elixir_euler_taylor_green_vortex.jl @@ -31,23 +31,25 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) + +save_restart = SaveRestartCallback(interval=100, + save_final_restart=true) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -save_restart = SaveRestartCallback(interval=100, - save_final_restart=true) - -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_restart, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_eulergravity_eoc_test.jl b/examples/3d/elixir_eulergravity_eoc_test.jl index bee9d61440..9d3ca0fe1c 100644 --- a/examples/3d/elixir_eulergravity_eoc_test.jl +++ b/examples/3d/elixir_eulergravity_eoc_test.jl @@ -51,25 +51,28 @@ ode = semidiscretize(semi, tspan); summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.1) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi_euler, interval=analysis_interval, + save_analysis=true) -save_solution = SaveSolutionCallback(interval=10, - save_initial_solution=true, - save_final_solution=true, - solution_variables=:primitive) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_restart = SaveRestartCallback(interval=100, save_final_restart=true) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) +save_solution = SaveSolutionCallback(interval=10, + save_initial_solution=true, + save_final_solution=true, + solution_variables=:primitive) -analysis_callback = AnalysisCallback(semi_euler, interval=analysis_interval, - save_analysis=true) +stepsize_callback = StepsizeCallback(cfl=1.1) -callbacks = CallbackSet(summary_callback, stepsize_callback, - save_restart, save_solution, - analysis_callback, alive_callback) +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, + save_restart, + save_solution, + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_hypdiff_lax_friedrichs.jl b/examples/3d/elixir_hypdiff_lax_friedrichs.jl index 6065cbe0ab..4e0da86121 100644 --- a/examples/3d/elixir_hypdiff_lax_friedrichs.jl +++ b/examples/3d/elixir_hypdiff_lax_friedrichs.jl @@ -34,22 +34,23 @@ summary_callback = SummaryCallback() resid_tol = 5.0e-12 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=2.4) +analysis_interval = 200 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 200 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +stepsize_callback = StepsizeCallback(cfl=2.4) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) - + stepsize_callback) ############################################################################### # run the simulation diff --git a/examples/3d/elixir_hypdiff_nonperiodic.jl b/examples/3d/elixir_hypdiff_nonperiodic.jl index 16a9af5144..b247a5edfd 100644 --- a/examples/3d/elixir_hypdiff_nonperiodic.jl +++ b/examples/3d/elixir_hypdiff_nonperiodic.jl @@ -42,21 +42,23 @@ summary_callback = SummaryCallback() resid_tol = 1.0e-5 steady_state_callback = SteadyStateCallback(abstol=resid_tol, reltol=0.0) -stepsize_callback = StepsizeCallback(cfl=1.8) +analysis_interval = 200 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval, + extra_analysis_integrals=(entropy, energy_total)) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=100, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 200 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval, - extra_analysis_integrals=(entropy, energy_total)) +stepsize_callback = StepsizeCallback(cfl=1.8) -callbacks = CallbackSet(summary_callback, steady_state_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, steady_state_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_mhd_alfven_wave.jl b/examples/3d/elixir_mhd_alfven_wave.jl index afe56adf7b..987350c4bb 100644 --- a/examples/3d/elixir_mhd_alfven_wave.jl +++ b/examples/3d/elixir_mhd_alfven_wave.jl @@ -31,20 +31,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.4) + -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_mhd_alfven_wave_mortar.jl b/examples/3d/elixir_mhd_alfven_wave_mortar.jl index cb3683ed10..44f87160b5 100644 --- a/examples/3d/elixir_mhd_alfven_wave_mortar.jl +++ b/examples/3d/elixir_mhd_alfven_wave_mortar.jl @@ -34,20 +34,21 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_mhd_ec.jl b/examples/3d/elixir_mhd_ec.jl index 970957a356..a0439a0537 100644 --- a/examples/3d/elixir_mhd_ec.jl +++ b/examples/3d/elixir_mhd_ec.jl @@ -31,20 +31,22 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.4) +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) -analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) +stepsize_callback = StepsizeCallback(cfl=1.4) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/examples/3d/elixir_mhd_orszag_tang.jl b/examples/3d/elixir_mhd_orszag_tang.jl index 14d45e4cdc..7296a79a2e 100644 --- a/examples/3d/elixir_mhd_orszag_tang.jl +++ b/examples/3d/elixir_mhd_orszag_tang.jl @@ -29,20 +29,24 @@ ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl=1.1) +analysis_callback = AnalysisCallback(semi, interval=analysis_interval) + +alive_callback = AliveCallback(analysis_interval=analysis_interval) save_solution = SaveSolutionCallback(interval=10, save_initial_solution=true, save_final_solution=true, solution_variables=:primitive) +stepsize_callback = StepsizeCallback(cfl=1.1) + analysis_interval = 100 -alive_callback = AliveCallback(analysis_interval=analysis_interval) -analysis_callback = AnalysisCallback(semi, interval=analysis_interval) -callbacks = CallbackSet(summary_callback, stepsize_callback, +callbacks = CallbackSet(summary_callback, + analysis_callback, + alive_callback, save_solution, - analysis_callback, alive_callback) + stepsize_callback) ############################################################################### diff --git a/src/callbacks_step/callbacks_step.jl b/src/callbacks_step/callbacks_step.jl index 9bd08f6e1d..d64519407e 100644 --- a/src/callbacks_step/callbacks_step.jl +++ b/src/callbacks_step/callbacks_step.jl @@ -24,14 +24,27 @@ end # `include` callback definitions in the order that we currently prefer -# when combining them into a `CallbackSet` which is called after a complete step +# when combining them into a `CallbackSet` which is called *after* a complete step +# The motivation is as follows: +# * `SummaryCallback` controls, among other things, timers and should thus be first +# * `SteadyStateCallback` may mark a time step as the last step, which is needed by other callbacks +# * `AnalysisCallback` may also do some checks that mark a step as the last one +# * `AliveCallback` belongs to `AnalysisCallback` and should thus be nearby +# * `SaveRestartCallback`/`SaveSolutionCallback` should save the current solution state before it is +# potentially degraded by AMR +# * `AMRCallback` really belongs to the next time step already, as it should be the "first" callback +# in a time step loop (however, callbacks are always executed *after* a step, thus it comes near +# the end here) +# * `StepsizeCallback` must come after AMR to accomodate potential changes in the minimum cell size include("summary.jl") include("steady_state.jl") -include("amr.jl") -include("stepsize.jl") -include("save_restart.jl") -include("save_solution.jl") include("analysis.jl") include("alive.jl") +include("save_restart.jl") +include("save_solution.jl") +include("amr.jl") +include("stepsize.jl") +# The `TrivialCallback` purposely does nothing: It allows to quickly disable specific callbacks +# when using `trixi_include` or `test_trixi_include` include("trivial.jl") diff --git a/test/test_examples_1d.jl b/test/test_examples_1d.jl index eecdb76bf8..09dd828eab 100644 --- a/test/test_examples_1d.jl +++ b/test/test_examples_1d.jl @@ -44,7 +44,6 @@ end end @testset "elixir_advection_extended.jl with initial_condition_linear_x" begin - # TODO Taal: create separate `*_linear_x.jl` elixir to keep `basic` simple @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_advection_extended.jl"), l2 = [1.9882464973192864e-16], linf = [1.4432899320127035e-15], diff --git a/test/test_examples_2d.jl b/test/test_examples_2d.jl index 8441832242..db8a0813bf 100644 --- a/test/test_examples_2d.jl +++ b/test/test_examples_2d.jl @@ -34,7 +34,6 @@ end # Coverage test for all initial conditions @testset "Tests for initial conditions" begin - # TODO Taal: create separate elixirs for ICs/BCs to keep `basic` simple # Linear scalar advection @testset "elixir_advection_extended.jl with initial_condition_sin_sin" begin @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_advection_extended.jl"), diff --git a/test/test_examples_2d_euler.jl b/test/test_examples_2d_euler.jl index 7cb6ff0bca..6feefc8402 100644 --- a/test/test_examples_2d_euler.jl +++ b/test/test_examples_2d_euler.jl @@ -102,8 +102,8 @@ EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", "2d") # minor versions of Julia. # See https://github.com/trixi-framework/Trixi.jl/issues/232#issuecomment-709738400 @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_kelvin_helmholtz_instability_amr.jl"), - l2 = [0.0016547879036312315, 0.0023815990489650233, 0.0013738124611069249, 0.0031578210702852003], - linf = [0.022466749278200915, 0.016671527732386116, 0.007178033902807723, 0.015014697702609325], + l2 = [0.0015773943210539198, 0.0023012411276933705, 0.0013793453564426015, 0.003239622733845669], + linf = [0.025791632274568155, 0.015170620391733003, 0.00958159135384009, 0.013265593557157729], tspan = (0.0, 0.2)) else @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_kelvin_helmholtz_instability_amr.jl"), diff --git a/test/test_examples_2d_parallel.jl b/test/test_examples_2d_parallel.jl index cbac8bcc33..c274f1228e 100644 --- a/test/test_examples_2d_parallel.jl +++ b/test/test_examples_2d_parallel.jl @@ -57,6 +57,8 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " # Compressible Euler + # Note: Some tests here have manually increased relative tolerances since reduction via MPI can + # slightly change the L2 error norms (different floating point truncation errors) @testset "elixir_euler_source_terms.jl" begin @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_source_terms.jl"), l2 = [8.517783186497567e-7, 1.2350199409361865e-6, 1.2350199409828616e-6, 4.277884398786315e-6], diff --git a/test/test_examples_3d.jl b/test/test_examples_3d.jl index a90292b140..6b3f2262c9 100644 --- a/test/test_examples_3d.jl +++ b/test/test_examples_3d.jl @@ -16,7 +16,6 @@ isdir(outdir) && rm(outdir, recursive=true) # Run basic tests @testset "Examples 3D" begin - # TODO Taal: create separate elixirs for ICs/BCs etc. to keep `basic` simple # Linear scalar advection include("test_examples_3d_advection.jl") diff --git a/test/test_trixi.jl b/test/test_trixi.jl index a996cb1625..42547d7a79 100644 --- a/test/test_trixi.jl +++ b/test/test_trixi.jl @@ -29,7 +29,7 @@ macro test_trixi_include(elixir, args...) end quote - Trixi.mpi_isroot() && println("#"^80) + Trixi.mpi_isroot() && println("═"^100) Trixi.mpi_isroot() && println($elixir) # evaluate examples in the scope of the module they're called from @@ -54,7 +54,7 @@ macro test_trixi_include(elixir, args...) end end - Trixi.mpi_isroot() && println("#"^80) + Trixi.mpi_isroot() && println("═"^100) Trixi.mpi_isroot() && println("\n\n") end end