diff --git a/examples/3d/elixir_euler_amr.jl b/examples/3d/elixir_euler_amr.jl new file mode 100644 index 0000000000..859a7ba4ef --- /dev/null +++ b/examples/3d/elixir_euler_amr.jl @@ -0,0 +1,69 @@ + +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the compressible Euler equations + +equations = CompressibleEulerEquations3D(1.4) + +initial_condition = initial_condition_density_pulse + +surface_flux = flux_lax_friedrichs +solver = DGSEM(3, surface_flux) + +coordinates_min = (-5, -5, -5) +coordinates_max = ( 5, 5, 5) +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level=4, + n_cells_max=10_000) + + +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) + + +############################################################################### +# ODE solvers, callbacks etc. + +tspan = (0.0, 10.0) +ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + +amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable=first), + base_level=4, + med_level=5, med_threshold=1.05, + max_level=6, max_threshold=1.3) +amr_callback = AMRCallback(semi, amr_controller, + interval=5, + adapt_initial_condition=true, + adapt_initial_condition_only_refine=true) + +# FIXME Taal restore after Taam sync +stepsize_callback = StepsizeCallback(cfl=0.4) + +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); + + +############################################################################### +# run the simulation + +sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=1.0, # solve needs some value here but it will be overwritten by the stepsize_callback + save_everystep=false, callback=callbacks); +summary_callback() # print the timer summary diff --git a/examples/3d/elixir_euler_density_pulse.jl b/examples/3d/elixir_euler_density_pulse.jl index bd9a0e8ddf..80b904b467 100644 --- a/examples/3d/elixir_euler_density_pulse.jl +++ b/examples/3d/elixir_euler_density_pulse.jl @@ -7,7 +7,7 @@ using Trixi equations = CompressibleEulerEquations3D(1.4) -initial_condition = Trixi.initial_condition_density_pulse +initial_condition = initial_condition_density_pulse surface_flux = flux_ranocha volume_flux = flux_ranocha diff --git a/examples/3d/elixir_euler_sedov_blast_wave_shockcapturing_amr.jl b/examples/3d/elixir_euler_sedov_blast_wave_shockcapturing_amr.jl new file mode 100644 index 0000000000..68944e5553 --- /dev/null +++ b/examples/3d/elixir_euler_sedov_blast_wave_shockcapturing_amr.jl @@ -0,0 +1,87 @@ + +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the compressible Euler equations + +equations = CompressibleEulerEquations3D(1.4) + +initial_condition = initial_condition_sedov_self_gravity +boundary_conditions = boundary_condition_sedov_self_gravity + +surface_flux = flux_hll +volume_flux = flux_ranocha +polydeg = 3 +basis = LobattoLegendreBasis(polydeg) +indicator_sc = IndicatorHennemannGassner(equations, basis, + alpha_max=0.7, + alpha_min=0.001, + alpha_smooth=true, + variable=density_pressure) +volume_integral = VolumeIntegralShockCapturingHG(indicator_sc; + volume_flux_dg=volume_flux, + volume_flux_fv=surface_flux) +solver = DGSEM(basis, surface_flux, volume_integral) + +coordinates_min = (-4, -4, -4) +coordinates_max = ( 4, 4, 4) +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level=2, + n_cells_max=1_000_000, + periodicity=false) + + +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver, + boundary_conditions=boundary_conditions) + + +############################################################################### +# ODE solvers, callbacks etc. + +tspan = (0.0, 0.4) +ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + +amr_indicator = IndicatorHennemannGassner(semi, + alpha_max=1.0, + alpha_min=0.0, + alpha_smooth=false, + variable=density_pressure) + +amr_controller = ControllerThreeLevel(semi, amr_indicator, + base_level=2, + max_level =7, max_threshold=0.0003) + +amr_callback = AMRCallback(semi, amr_controller, + interval=1, + adapt_initial_condition=true, + adapt_initial_condition_only_refine=true) + +# FIXME Taal restore after Taam sync +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, + save_restart, save_solution, + analysis_callback, alive_callback) + + +############################################################################### +# run the simulation + +sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=1.0, # solve needs some value here but it will be overwritten by the stepsize_callback + save_everystep=false, callback=callbacks, maxiters=1e5); +summary_callback() # print the timer summary diff --git a/examples/3d/elixir_euler_shockcapturing_amr.jl b/examples/3d/elixir_euler_shockcapturing_amr.jl new file mode 100644 index 0000000000..b1b4a407da --- /dev/null +++ b/examples/3d/elixir_euler_shockcapturing_amr.jl @@ -0,0 +1,85 @@ + +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the compressible Euler equations + +equations = CompressibleEulerEquations3D(1.4) + +initial_condition = initial_condition_weak_blast_wave + +surface_flux = flux_ranocha # OBS! Using a non-dissipative flux is only sensible to test EC, + # but not for real shock simulations +volume_flux = flux_ranocha +polydeg = 3 +basis = LobattoLegendreBasis(polydeg) +indicator_sc = IndicatorHennemannGassner(equations, basis, + alpha_max=0.5, + alpha_min=0.001, + alpha_smooth=true, + variable=density_pressure) +volume_integral = VolumeIntegralShockCapturingHG(indicator_sc; + volume_flux_dg=volume_flux, + volume_flux_fv=surface_flux) +solver = DGSEM(basis, surface_flux, volume_integral) + +coordinates_min = (-2, -2, -2) +coordinates_max = ( 2, 2, 2) +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level=3, + n_cells_max=100_000) + + +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) + + +############################################################################### +# ODE solvers, callbacks etc. + +tspan = (0.0, 0.4) +ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + + +amr_indicator = IndicatorHennemannGassner(semi, + alpha_smooth=false, + variable=density_pressure) + +amr_controller = ControllerThreeLevel(semi, amr_indicator, + base_level=2, + max_level =4, max_threshold=0.0003) + +amr_callback = AMRCallback(semi, amr_controller, + interval=1, + adapt_initial_condition=true, + adapt_initial_condition_only_refine=true) + +# FIXME Taal restore after Taam sync to something better +stepsize_callback = StepsizeCallback(cfl=0.5) + +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, + save_restart, save_solution, + analysis_callback, alive_callback) + + +############################################################################### +# run the simulation + +sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=1.0, # solve needs some value here but it will be overwritten by the stepsize_callback + save_everystep=false, callback=callbacks, maxiters=1e5); +summary_callback() # print the timer summary + diff --git a/examples/3d/elixir_mhd_alfven_wave_mortar.jl b/examples/3d/elixir_mhd_alfven_wave_mortar.jl new file mode 100644 index 0000000000..b3585ce6e3 --- /dev/null +++ b/examples/3d/elixir_mhd_alfven_wave_mortar.jl @@ -0,0 +1,59 @@ + +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the compressible ideal GLM-MHD equations + +equations = IdealGlmMhdEquations3D(5/3) + +initial_condition = initial_condition_convergence_test + +surface_flux = flux_hll +volume_flux = flux_derigs_etal +solver = DGSEM(3, surface_flux, VolumeIntegralFluxDifferencing(volume_flux)) + +coordinates_min = (-1, -1, -1) +coordinates_max = ( 1, 1, 1) +refinement_patches = ( + (type="box", coordinates_min=(-0.5, -0.5, -0.5), + coordinates_max=( 0.5, 0.5, 0.5)), +) +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level=2, + refinement_patches=refinement_patches, + n_cells_max=10_000) + +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) + +############################################################################### +# ODE solvers, callbacks etc. + +tspan = (0.0, 1.0) +ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + +# FIXME Taal restore after Taam sync to something better +stepsize_callback = StepsizeCallback(cfl=0.5) + +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) + +callbacks = CallbackSet(summary_callback, stepsize_callback, + save_solution, + analysis_callback, alive_callback) + + +############################################################################### +# run the simulation + +sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=1.0, # solve needs some value here but it will be overwritten by the stepsize_callback + save_everystep=false, callback=callbacks); +summary_callback() # print the timer summary diff --git a/examples/3d/elixir_mhd_orszag_tang.jl b/examples/3d/elixir_mhd_orszag_tang.jl new file mode 100644 index 0000000000..0efc9f1fda --- /dev/null +++ b/examples/3d/elixir_mhd_orszag_tang.jl @@ -0,0 +1,54 @@ + +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the compressible ideal GLM-MHD equations + +equations = IdealGlmMhdEquations3D(5/3) + +initial_condition = initial_condition_orszag_tang + +surface_flux = flux_hll +volume_flux = flux_central +solver = DGSEM(3, surface_flux, VolumeIntegralFluxDifferencing(volume_flux)) + +coordinates_min = (0, 0, 0) +coordinates_max = (1, 1, 1) +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level=3, + n_cells_max=10_000) + +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) + +############################################################################### +# ODE solvers, callbacks etc. + +tspan = (0.0, 0.5) +ode = semidiscretize(semi, tspan) + +summary_callback = SummaryCallback() + +# FIXME Taal restore after Taam sync to something better +stepsize_callback = StepsizeCallback(cfl=0.5) + +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) + +callbacks = CallbackSet(summary_callback, stepsize_callback, + save_solution, + analysis_callback, alive_callback) + + +############################################################################### +# run the simulation + +sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=1.0, # solve needs some value here but it will be overwritten by the stepsize_callback + save_everystep=false, callback=callbacks); +summary_callback() # print the timer summary diff --git a/src/Trixi.jl b/src/Trixi.jl index 80f5fa2c7f..230d4e9220 100644 --- a/src/Trixi.jl +++ b/src/Trixi.jl @@ -79,7 +79,7 @@ export flux_central, flux_lax_friedrichs, flux_hll, flux_upwind, export initial_condition_constant, initial_condition_gauss, - initial_condition_density_wave, + initial_condition_density_wave, initial_condition_density_pulse, initial_condition_isentropic_vortex, initial_condition_khi, initial_condition_weak_blast_wave, initial_condition_blast_wave, diff --git a/src/callbacks/analysis.jl b/src/callbacks/analysis.jl index 09e199b29b..3dc44e4f06 100644 --- a/src/callbacks/analysis.jl +++ b/src/callbacks/analysis.jl @@ -164,6 +164,8 @@ function (analysis_callback::AnalysisCallback)(integrator) " " * " Time/DOF/rhs!: " * @sprintf("%10.8e s", runtime_relative)) println(" sim. time: " * @sprintf("%10.8e", t)) + println(" #DOF: " * @sprintf("% 14d", ndofs(semi))) + println(" #elements: " * @sprintf("% 14d", nelements(solver, cache))) # Level information (only show for AMR) uses_amr = false @@ -187,7 +189,6 @@ function (analysis_callback::AnalysisCallback)(integrator) max_level = max(max_level, current_level) end - println(" #elements: " * @sprintf("% 14d", nelements(solver, cache))) for level = max_level:-1:min_level+1 println(" ├── level $level: " * @sprintf("% 14d", count(isequal(level), levels))) end diff --git a/src/solvers/dg/dg_3d.jl b/src/solvers/dg/dg_3d.jl index 566d79bd7d..38aec2edf3 100644 --- a/src/solvers/dg/dg_3d.jl +++ b/src/solvers/dg/dg_3d.jl @@ -1010,7 +1010,7 @@ function calc_mortar_flux!(surface_flux_values::AbstractArray{<:Any,5}, for j in eachnode(dg), i in eachnode(dg), v in eachvariable(equations) fstar_lower_right[v, i, j] += noncons_diamond_lower_right[v, i, j] end - mortar_fluxes_to_elements!(surface_flux_values, dg, mortar_type, mortar, + mortar_fluxes_to_elements!(surface_flux_values, equations, mortar_l2, dg, cache, mortar, fstar_upper_left, fstar_upper_right, fstar_lower_left, fstar_lower_right, fstar_tmp1) diff --git a/src/solvers/dg/indicators_3d.jl b/src/solvers/dg/indicators_3d.jl index 919b6ce00b..60e2037bd3 100644 --- a/src/solvers/dg/indicators_3d.jl +++ b/src/solvers/dg/indicators_3d.jl @@ -106,26 +106,22 @@ function (indicator_hg::IndicatorHennemannGassner)(u::AbstractArray{<:Any,5}, # Loop over L2 mortars for mortar in eachmortar(dg, cache) # Get neighboring element ids - lower_left = dg.l2mortars.neighbor_ids[1, l2mortar_id] - lower_right = dg.l2mortars.neighbor_ids[2, l2mortar_id] - upper_left = dg.l2mortars.neighbor_ids[3, l2mortar_id] - upper_right = dg.l2mortars.neighbor_ids[4, l2mortar_id] - large = dg.l2mortars.neighbor_ids[5, l2mortar_id] + lower_left = cache.mortars.neighbor_ids[1, mortar] + lower_right = cache.mortars.neighbor_ids[2, mortar] + upper_left = cache.mortars.neighbor_ids[3, mortar] + upper_right = cache.mortars.neighbor_ids[4, mortar] + large = cache.mortars.neighbor_ids[5, mortar] # Apply smoothing - alpha[lower_left] = max(alpha_pre_smooth[lower_left], - 0.5 * alpha_pre_smooth[large], alpha[lower_left]) - alpha[lower_right] = max(alpha_pre_smooth[lower_right], - 0.5 * alpha_pre_smooth[large], alpha[lower_right]) - alpha[upper_left] = max(alpha_pre_smooth[upper_left], - 0.5 * alpha_pre_smooth[large], alpha[upper_left]) - alpha[upper_right] = max(alpha_pre_smooth[upper_right], - 0.5 * alpha_pre_smooth[large], alpha[upper_right]) - - alpha[large] = max(alpha_pre_smooth[large], 0.5 * alpha_pre_smooth[lower_left], alpha[large]) - alpha[large] = max(alpha_pre_smooth[large], 0.5 * alpha_pre_smooth[lower_right], alpha[large]) - alpha[large] = max(alpha_pre_smooth[large], 0.5 * alpha_pre_smooth[upper_left], alpha[large]) - alpha[large] = max(alpha_pre_smooth[large], 0.5 * alpha_pre_smooth[upper_right], alpha[large]) + alpha[lower_left] = max(alpha_tmp[lower_left], 0.5 * alpha_tmp[large], alpha[lower_left]) + alpha[lower_right] = max(alpha_tmp[lower_right], 0.5 * alpha_tmp[large], alpha[lower_right]) + alpha[upper_left] = max(alpha_tmp[upper_left], 0.5 * alpha_tmp[large], alpha[upper_left]) + alpha[upper_right] = max(alpha_tmp[upper_right], 0.5 * alpha_tmp[large], alpha[upper_right]) + + alpha[large] = max(alpha_tmp[large], 0.5 * alpha_tmp[lower_left], alpha[large]) + alpha[large] = max(alpha_tmp[large], 0.5 * alpha_tmp[lower_right], alpha[large]) + alpha[large] = max(alpha_tmp[large], 0.5 * alpha_tmp[upper_left], alpha[large]) + alpha[large] = max(alpha_tmp[large], 0.5 * alpha_tmp[upper_right], alpha[large]) end end diff --git a/test/test_examples_1d.jl b/test/test_examples_1d.jl index 190149be25..c4483449ff 100644 --- a/test/test_examples_1d.jl +++ b/test/test_examples_1d.jl @@ -51,7 +51,7 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_density_wave.jl"), l2 = [0.003724642049410045, 0.0037246420494099837, 0.0018623210247047657], linf = [0.018538787219922304, 0.018538787219903874, 0.009269393609915078], - initial_condition = Trixi.initial_condition_density_pulse) + initial_condition = initial_condition_density_pulse) end @testset "taal-confirmed elixir_euler_density_wave.jl with initial_condition_constant" begin diff --git a/test/test_examples_2d.jl b/test/test_examples_2d.jl index b13226f4f3..dffe24816f 100644 --- a/test/test_examples_2d.jl +++ b/test/test_examples_2d.jl @@ -390,7 +390,7 @@ end l2 = [0.003201074851451383, 0.0032010748514513724, 0.0032010748514513716, 0.0032010748514513794], linf = [0.043716393835876444, 0.043716393835876444, 0.043716393835876, 0.04371639383587578], maxiters = 1, - initial_condition = Trixi.initial_condition_density_pulse) + initial_condition = initial_condition_density_pulse) end @testset "taal-confirmed elixir_euler_vortex.jl one step with initial_condition_pressure_pulse" begin diff --git a/test/test_examples_3d.jl b/test/test_examples_3d.jl index 82a8097944..80c9e8e824 100644 --- a/test/test_examples_3d.jl +++ b/test/test_examples_3d.jl @@ -40,7 +40,7 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_advection_basic.jl"), l2 = [9.770171014620371e-16], linf = [2.4424906541753444e-15], - initial_condition=Trixi.initial_condition_constant) + initial_condition=initial_condition_constant) end @testset "taal-confirmed elixir_advection_basic.jl with initial_condition_linear_z and periodicity=false" begin @@ -89,6 +89,12 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " linf = [0.0005853874124926092]) end + @testset "taal-confirmed elixir_euler_amr.jl" begin + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_amr.jl"), + l2 = [0.00382819196730758, 0.0038281919673075725, 0.0038281919673075746, 0.0038281919673075738, 0.0057422879509614905], + linf = [0.07390560349428554, 0.07390560349428577, 0.07390560349428621, 0.07390560349428643, 0.11085840524143098], + tspan=(0.0, 0.1)) + end @testset "taal-confirmed elixir_hyp_diff_llf.jl" begin test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_hyp_diff_llf.jl"), @@ -103,6 +109,13 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " linf = [0.0016329580288680923, 0.0029870270738030775, 0.009177053066089513, 0.009177053066084184]) end + @testset "taal-confirmed elixir_hyp_diff_llf.jl with initial_refinement_level=2, surface_flux=flux_upwind)" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_hyp_diff_llf.jl"), + l2 = [0.0015377708559180534, 0.011376842329542572, 0.011376842329542624, 0.0113768423295426], + linf = [0.02271542063004106, 0.10191067906109286, 0.10191067906109552, 0.10191067906109286], + initial_refinement_level=2, surface_flux=flux_upwind) + end + @testset "taal-confirmed elixir_euler_mortar.jl" begin test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_mortar.jl"), l2 = [0.0019011097431965655, 0.0018289464087588392, 0.0018289464087585998, 0.0018289464087588862, 0.003354766311541738], @@ -111,35 +124,83 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " @testset "taal-confirmed elixir_euler_taylor_green_vortex.jl" begin - test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_taylor_green_vortex.jl"), + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_taylor_green_vortex.jl"), l2 = [0.0003494971047256544, 0.03133386380969968, 0.031333863809699644, 0.04378595081016185, 0.015796569210801217], linf = [0.0013934701399120897, 0.07284947983025436, 0.07284947983025408, 0.12803234075782724, 0.07624639122292365], tspan = (0.0, 0.5)) end @testset "taal-confirmed elixir_euler_shockcapturing.jl" begin - test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_shockcapturing.jl"), + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_shockcapturing.jl"), l2 = [0.025558219399128387, 0.01612806446620796, 0.016128064466207948, 0.016120400619198158, 0.09208276987000782], linf = [0.3950327737713353, 0.26324766244272796, 0.2632476624427279, 0.2634129727753079, 1.371321006006725]) end + @testset "taal-confirmed elixir_euler_shockcapturing.jl with initial_condition_sedov_blast_wave" begin + # OBS! This setup does not run longer but crashes (also the parameters do not make sense) -> only for testing the IC! + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_shockcapturing.jl"), + l2 = [0.03627060784392582, 0.05178777376859809, 0.05178777376859804, 0.05178777376859802, 0.23043996953698023], + linf = [0.9307998233177583, 1.4326649193439467, 1.4326649193439467, 1.4326649193439467, 12.80585041235138], + initial_condition=initial_condition_sedov_blast_wave, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) + end + + @testset "taal-confirmed elixir_euler_shockcapturing.jl with initial_condition_sedov_self_gravity" begin + # OBS! This setup does not run longer but crashes (also the parameters do not make sense) -> only for testing the IC! + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_shockcapturing.jl"), + l2 = [0.04846527000320781, 0.051787773760055514, 0.051787773760055486, 0.05178777376005548, 0.23043996953467236], + linf = [0.9307979866990295, 1.4326649193456429, 1.4326649193456429, 1.4326649193456429, 12.805850412386896], + initial_condition=initial_condition_sedov_self_gravity, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) + end + + @testset "taal-confirmed elixir_euler_shockcapturing_amr.jl" begin + # OBS! This setup does not make much practical sense. It is only added to exercise the + # `sedov_self_gravity` AMR indicator, which in its original configuration is too expensive for + # CI testing + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_shockcapturing_amr.jl"), + l2 = [0.022890627324485553, 0.013353127563710173, 0.013353127563710156, 0.013352146925243637, 0.08348119429398775], + linf = [0.3769085161148348, 0.380358363190641, 0.3803583631906434, 0.380366775575835, 1.3162027903728162], + maxiters=10) + end + @testset "taal-confirmed elixir_euler_density_pulse.jl with source_terms_harmonic" begin - test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_density_pulse.jl"), + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_density_pulse.jl"), l2 = [0.05719652660597408, 0.0571965266059741, 0.05719652660597407, 0.05719652660597409, 0.08579478990896279], linf = [0.27375961853433606, 0.27375961853433517, 0.27375961853433384, 0.2737596185343343, 0.4106394278015033], source_terms=Trixi.source_terms_harmonic) end @testset "taal-confirmed elixir_euler_ec.jl" begin - test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), l2 = [0.025101741317688664, 0.01655620530022176, 0.016556205300221737, 0.016549388264402515, 0.09075092792976944], linf = [0.43498932208478724, 0.2821813924028202, 0.28218139240282025, 0.2838043627560838, 1.5002293438086647]) end - @testset "taal-confirmed elixir_mhd_alfven_wave.jl" begin - test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_mhd_alfven_wave.jl"), - l2 = [0.0038729054515012624, 0.00903693761037057, 0.0041729297273898815, 0.01160504558506348, 0.006241548790045999, 0.009227641613254402, 0.0034580608435846143, 0.011684993365513006, 0.0022068452165023645], - linf = [0.012628629484152443, 0.03265276295369954, 0.012907838374176334, 0.044746702024108326, 0.02796611265824822, 0.03453054781110626, 0.010261557301859958, 0.044762592434299864, 0.010012319622784436]) + @testset "taal-confirmed elixir_euler_ec.jl with initial_condition=initial_condition_constant" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), + l2 = [5.717218008425079e-16, 6.088971423170968e-16, 6.23130776282275e-16, 7.29884557381127e-16, 5.167198077601542e-15], + linf = [3.885780586188048e-15, 4.454769886308441e-15, 3.219646771412954e-15, 4.884981308350689e-15, 4.440892098500626e-14], + initial_condition=initial_condition_constant) + end + + @testset "taal-confirmed elixir_euler_ec.jl with flux_chandrashekar" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), + l2 = [0.025105743648126774, 0.016571417754430256, 0.01657141775443023, 0.016565202090289916, 0.09077232065771225], + linf = [0.4349225166034201, 0.27945714200874, 0.2794571420087401, 0.28021366413271664, 1.5240679700745954], + surface_flux=flux_chandrashekar, volume_flux=flux_chandrashekar) + end + + @testset "taal-confirmed elixir_euler_ec.jl with flux_kennedy_gruber" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), + l2 = [0.025120431810845507, 0.016599310737401483, 0.01659931073740148, 0.016592567464138185, 0.090856457771812], + linf = [0.43120500632996794, 0.28419288751363336, 0.2841928875136334, 0.28583515705222146, 1.515485025725378], + surface_flux=flux_kennedy_gruber, volume_flux=flux_kennedy_gruber) + end + + @testset "taal-confirmed elixir_euler_ec.jl with flux_shima_etal" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_euler_ec.jl"), + l2 = [0.025099944530993942, 0.016561611274319134, 0.016561611274319127, 0.01655478190136039, 0.09076538812894279], + linf = [0.43472962954165273, 0.2824065323711477, 0.2824065323711474, 0.28409419760015847, 1.4995295774522692], + surface_flux=flux_shima_etal, volume_flux=flux_shima_etal) end @testset "taal-confirmed elixir_mhd_ec.jl" begin @@ -147,6 +208,35 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " l2 = [0.01921453037426997, 0.01924853398980921, 0.01924853398980923, 0.019247118340533328, 0.08310482412935676, 0.010362656540935251, 0.010362656540935237, 0.010364587080559528, 0.00020760700572485828], linf = [0.2645851360519166, 0.33611482816103344, 0.33611482816103466, 0.36952265576762666, 1.230825809630423, 0.09818527443798974, 0.09818527443798908, 0.10507242371450054, 0.008456471524217968]) end + + @testset "taal-confirmed elixir_mhd_ec.jl with initial_condition=initial_condition_constant" begin + test_trixi_run(joinpath(EXAMPLES_DIR, "elixir_mhd_ec.jl"), + l2 = [4.850506049646793e-16, 2.4804155700127237e-15, 3.579471462379534e-15, 2.7395862184339726e-15, 2.4916602560342516e-14, 1.669368799061149e-15, 1.4052897861706032e-15, 1.0685989093080367e-15, 1.1611070325375158e-15], + linf = [3.552713678800501e-15, 1.4710455076283324e-14, 2.3814283878209608e-14, 2.6423307986078726e-14, 1.6342482922482304e-13, 1.1546319456101628e-14, 1.0880185641326534e-14, 1.4099832412739488e-14, 1.1483287543575534e-14], + atol = 1000*eps(), + initial_condition=initial_condition_constant) + end + + @testset "taal-confirmed elixir_mhd_alfven_wave.jl" begin + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_mhd_alfven_wave.jl"), + l2 = [0.0038729054515012624, 0.00903693761037057, 0.0041729297273898815, 0.01160504558506348, 0.006241548790045999, 0.009227641613254402, 0.0034580608435846143, 0.011684993365513006, 0.0022068452165023645], + linf = [0.012628629484152443, 0.03265276295369954, 0.012907838374176334, 0.044746702024108326, 0.02796611265824822, 0.03453054781110626, 0.010261557301859958, 0.044762592434299864, 0.010012319622784436]) + end + + @testset "taal-confirmed elixir_mhd_alfven_wave_mortar.jl" begin + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_mhd_alfven_wave_mortar.jl"), + l2 = [0.0021484102061835623, 0.006826504155492453, 0.0030653111370061784, 0.008735898256361025, 0.0051601878379492335, 0.007157480202233399, 0.0028291977973972948, 0.008815052614117018, 0.0022321821323698257], + linf = [0.012956870409227328, 0.05529249146399706, 0.020854504834048836, 0.05898012498637771, 0.03162799656904003, 0.05512773554440975, 0.017941374395225362, 0.060061114374191496, 0.013036070296136178], + tspan = (0.0, 0.25)) + end + + # 3D Orszag-Tang included to exercise all terms in the HLL flux + @testset "taal-confirmed elixir_mhd_orszag_tang.jl" begin + test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_mhd_orszag_tang.jl"), + l2 = [0.0043911605751115424, 0.04144735653371165, 0.04150129965650717, 0.04150353600000829, 0.036931197750736805, 0.021125598820694595, 0.032956068087418154, 0.03296235602392588, 6.318083915607208e-6], + linf = [0.01789383976134809, 0.08496187610572214, 0.08909116075943745, 0.08505952838326755, 0.10443373959204932, 0.05387852204182135, 0.08812990990777562, 0.07804874749131957, 8.138512446081734e-5], + tspan = (0.0, 0.06)) + end end diff --git a/test/test_examples_3d_old.jl b/test/test_examples_3d_old.jl index d7094e2687..25b0776c60 100644 --- a/test/test_examples_3d_old.jl +++ b/test/test_examples_3d_old.jl @@ -36,7 +36,7 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_advection_basic.toml"), l2 = [9.770171014620371e-16], linf = [2.4424906541753444e-15], - initial_condition=Trixi.initial_condition_constant) + initial_condition=initial_condition_constant) end @testset "taal-confirmed parameters_advection_basic.toml with initial_condition_linear_z and periodicity=false" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_advection_basic.toml"), @@ -82,7 +82,7 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " l2 = [9.773858425669403e-6], linf = [0.0005853874124926092]) end - @testset "taal-check-me parameters_euler_amr.toml" begin + @testset "taal-confirmed parameters_euler_amr.toml" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_amr.toml"), l2 = [0.00382819196730758, 0.0038281919673075725, 0.0038281919673075746, 0.0038281919673075738, 0.0057422879509614905], linf = [0.07390560349428554, 0.07390560349428577, 0.07390560349428621, 0.07390560349428643, 0.11085840524143098], @@ -99,25 +99,25 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " l2 = [0.025101741317688664, 0.01655620530022176, 0.016556205300221737, 0.016549388264402515, 0.09075092792976944], linf = [0.43498932208478724, 0.2821813924028202, 0.28218139240282025, 0.2838043627560838, 1.5002293438086647]) end - @testset "taal-check-me parameters_euler_ec.toml with initial_condition=Trixi.initial_condition_constant" begin + @testset "taal-confirmed parameters_euler_ec.toml with initial_condition=initial_condition_constant" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_ec.toml"), l2 = [5.717218008425079e-16, 6.088971423170968e-16, 6.23130776282275e-16, 7.29884557381127e-16, 5.167198077601542e-15], linf = [3.885780586188048e-15, 4.454769886308441e-15, 3.219646771412954e-15, 4.884981308350689e-15, 4.440892098500626e-14], - initial_condition=Trixi.initial_condition_constant) + initial_condition=initial_condition_constant) end - @testset "taal-check-me parameters_euler_ec.toml with flux_chandrashekar" begin + @testset "taal-confirmed parameters_euler_ec.toml with flux_chandrashekar" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_ec.toml"), l2 = [0.025105743648126774, 0.016571417754430256, 0.01657141775443023, 0.016565202090289916, 0.09077232065771225], linf = [0.4349225166034201, 0.27945714200874, 0.2794571420087401, 0.28021366413271664, 1.5240679700745954], surface_flux=flux_chandrashekar, volume_flux=flux_chandrashekar) end - @testset "taal-check-me parameters_euler_ec.toml with flux_kennedry_gruber" begin + @testset "taal-confirmed parameters_euler_ec.toml with flux_kennedy_gruber" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_ec.toml"), l2 = [0.025120431810845507, 0.016599310737401483, 0.01659931073740148, 0.016592567464138185, 0.090856457771812], linf = [0.43120500632996794, 0.28419288751363336, 0.2841928875136334, 0.28583515705222146, 1.515485025725378], surface_flux=flux_kennedy_gruber, volume_flux=flux_kennedy_gruber) end - @testset "taal-check-me parameters_euler_ec.toml with flux_shima_etal" begin + @testset "taal-confirmed parameters_euler_ec.toml with flux_shima_etal" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_ec.toml"), l2 = [0.025099944530993942, 0.016561611274319134, 0.016561611274319127, 0.01655478190136039, 0.09076538812894279], linf = [0.43472962954165273, 0.2824065323711477, 0.2824065323711474, 0.28409419760015847, 1.4995295774522692], @@ -141,21 +141,21 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " l2 = [0.025558219399128387, 0.01612806446620796, 0.016128064466207948, 0.016120400619198158, 0.09208276987000782], linf = [0.3950327737713353, 0.26324766244272796, 0.2632476624427279, 0.2634129727753079, 1.371321006006725]) end - @testset "taal-check-me parameters_euler_shockcapturing.toml with initial_condition_sedov_blast_wave" begin + @testset "taal-confirmed parameters_euler_shockcapturing.toml with initial_condition_sedov_blast_wave" begin # OBS! This setup does not run longer but crashes (also the parameters do not make sense) -> only for testing the IC! test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_shockcapturing.toml"), l2 = [0.03627060784392582, 0.05178777376859809, 0.05178777376859804, 0.05178777376859802, 0.23043996953698023], linf = [0.9307998233177583, 1.4326649193439467, 1.4326649193439467, 1.4326649193439467, 12.80585041235138], - initial_condition=Trixi.initial_condition_sedov_blast_wave, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) + initial_condition=initial_condition_sedov_blast_wave, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) end - @testset "taal-check-me parameters_euler_shockcapturing.toml with initial_condition_sedov_self_gravity" begin + @testset "taal-confirmed parameters_euler_shockcapturing.toml with initial_condition_sedov_self_gravity" begin # OBS! This setup does not run longer but crashes (also the parameters do not make sense) -> only for testing the IC! test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_shockcapturing.toml"), l2 = [0.04846527000320781, 0.051787773760055514, 0.051787773760055486, 0.05178777376005548, 0.23043996953467236], linf = [0.9307979866990295, 1.4326649193456429, 1.4326649193456429, 1.4326649193456429, 12.805850412386896], - initial_condition=Trixi.initial_condition_sedov_self_gravity, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) + initial_condition=initial_condition_sedov_self_gravity, cfl=0.25, shock_alpha_max=1.0, t_end=0.1) end - @testset "taal-check-me parameters_euler_shockcapturing.toml with amr_indicator=`sedov_self_gravity`" begin + @testset "taal-confirmed parameters_euler_shockcapturing.toml with amr_indicator=`sedov_self_gravity`" begin # OBS! This setup does not make much practical sense. It is only added to exercise the # `sedov_self_gravity` AMR indicator, which in its original configuration is too expensive for # CI testing @@ -170,11 +170,11 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " linf = [0.022634590339093097, 0.10150613595329361, 0.10150613595329361, 0.10150613595329361], initial_refinement_level=2) end - @testset "taal-check-me parameters_hyp_diff_llf.toml with initial_refinement_level=2, surface_flux=Trixi.flux_upwind)" begin + @testset "taal-confirmed parameters_hyp_diff_llf.toml with initial_refinement_level=2, surface_flux=flux_upwind)" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_hyp_diff_llf.toml"), l2 = [0.0015377708559180534, 0.011376842329542572, 0.011376842329542624, 0.0113768423295426], linf = [0.02271542063004106, 0.10191067906109286, 0.10191067906109552, 0.10191067906109286], - initial_refinement_level=2, surface_flux=Trixi.flux_upwind) + initial_refinement_level=2, surface_flux=flux_upwind) end @testset "taal-confirmed parameters_hyp_diff_nonperiodic.toml" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_hyp_diff_nonperiodic.toml"), @@ -186,33 +186,33 @@ const EXAMPLES_DIR = joinpath(pathof(Trixi) |> dirname |> dirname, "examples", " l2 = [0.01921453037426997, 0.01924853398980921, 0.01924853398980923, 0.019247118340533328, 0.08310482412935676, 0.010362656540935251, 0.010362656540935237, 0.010364587080559528, 0.00020760700572485828], linf = [0.2645851360519166, 0.33611482816103344, 0.33611482816103466, 0.36952265576762666, 1.230825809630423, 0.09818527443798974, 0.09818527443798908, 0.10507242371450054, 0.008456471524217968]) end - @testset "taal-check-me parameters_mhd_ec.toml with initial_condition=Trixi.initial_condition_constant" begin + @testset "taal-confirmed parameters_mhd_ec.toml with initial_condition=initial_condition_constant" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_mhd_ec.toml"), l2 = [4.850506049646793e-16, 2.4804155700127237e-15, 3.579471462379534e-15, 2.7395862184339726e-15, 2.4916602560342516e-14, 1.669368799061149e-15, 1.4052897861706032e-15, 1.0685989093080367e-15, 1.1611070325375158e-15], linf = [3.552713678800501e-15, 1.4710455076283324e-14, 2.3814283878209608e-14, 2.6423307986078726e-14, 1.6342482922482304e-13, 1.1546319456101628e-14, 1.0880185641326534e-14, 1.4099832412739488e-14, 1.1483287543575534e-14], atol = 1000*eps(), - initial_condition=Trixi.initial_condition_constant) + initial_condition=initial_condition_constant) end @testset "taal-confirmed parameters_mhd_alfven_wave.toml" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_mhd_alfven_wave.toml"), l2 = [0.0038729054515012624, 0.00903693761037057, 0.0041729297273898815, 0.01160504558506348, 0.006241548790045999, 0.009227641613254402, 0.0034580608435846143, 0.011684993365513006, 0.0022068452165023645], linf = [0.012628629484152443, 0.03265276295369954, 0.012907838374176334, 0.044746702024108326, 0.02796611265824822, 0.03453054781110626, 0.010261557301859958, 0.044762592434299864, 0.010012319622784436]) end - @testset "taal-check-me parameters_mhd_alfven_wave_mortar.toml" begin + @testset "taal-confirmed parameters_mhd_alfven_wave_mortar.toml" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_mhd_alfven_wave_mortar.toml"), l2 = [0.0021484102061835623, 0.006826504155492453, 0.0030653111370061784, 0.008735898256361025, 0.0051601878379492335, 0.007157480202233399, 0.0028291977973972948, 0.008815052614117018, 0.0022321821323698257], linf = [0.012956870409227328, 0.05529249146399706, 0.020854504834048836, 0.05898012498637771, 0.03162799656904003, 0.05512773554440975, 0.017941374395225362, 0.060061114374191496, 0.013036070296136178], t_end = 0.25) end # 3D Orszag-Tang included to exercise all terms in the HLL flux - @testset "taal-check-me parameters_mhd_orszag_tang.toml" begin + @testset "taal-confirmed parameters_mhd_orszag_tang.toml" begin test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_mhd_orszag_tang.toml"), l2 = [0.0043911605751115424, 0.04144735653371165, 0.04150129965650717, 0.04150353600000829, 0.036931197750736805, 0.021125598820694595, 0.032956068087418154, 0.03296235602392588, 6.318083915607208e-6], linf = [0.01789383976134809, 0.08496187610572214, 0.08909116075943745, 0.08505952838326755, 0.10443373959204932, 0.05387852204182135, 0.08812990990777562, 0.07804874749131957, 8.138512446081734e-5], t_end = 0.06) end # too expensive for CI - # @testset "taal-check-me parameters_euler_sedov_blast_wave_shockcapturing_amr.toml with n_steps_max = 2" begin + # @testset "taal-confirmed parameters_euler_sedov_blast_wave_shockcapturing_amr.toml with n_steps_max = 2" begin # test_trixi_run(joinpath(EXAMPLES_DIR, "parameters_euler_sedov_blast_wave_shockcapturing_amr.toml"), # l2 = [0.00015213881280510253, 0.001481110249423103, 0.0014811102494231387, 0.001481110249423187, 0.002940437008367858], # linf = [0.03254534843490764, 0.38932044051654113, 0.38932044051654097, 0.38932044051654097, 1.050399588579145],