diff --git a/.github/workflows/FormatCheck.yml b/.github/workflows/FormatCheck.yml index 7297f1c3ff5..26006b9555f 100644 --- a/.github/workflows/FormatCheck.yml +++ b/.github/workflows/FormatCheck.yml @@ -29,7 +29,7 @@ jobs: # TODO: Change the call below to # format(".") run: | - julia -e 'using Pkg; Pkg.add(PackageSpec(name = "JuliaFormatter", version="1.0.45"))' + julia -e 'using Pkg; Pkg.add(PackageSpec(name = "JuliaFormatter", version="1.0.60"))' julia -e 'using JuliaFormatter; format(["benchmark", "examples", "ext", "src", "test", "utils"])' - name: Format check run: | diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml index fedf097ec7e..50e064068c9 100644 --- a/.github/workflows/SpellCheck.yml +++ b/.github/workflows/SpellCheck.yml @@ -10,4 +10,4 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling - uses: crate-ci/typos@v1.24.3 + uses: crate-ci/typos@v1.25.0 diff --git a/NEWS.md b/NEWS.md index 9371cafa07f..3d64f7b78f7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,16 @@ Trixi.jl follows the interpretation of [semantic versioning (semver)](https://ju used in the Julia ecosystem. Notable changes will be documented in this file for human readability. +## Changes when updating to v0.9 from v0.8.x + +#### Changed + +- We removed the first argument `semi` corresponding to a `Semidiscretization` from the + `AnalysisSurfaceIntegral` constructor, as it is no longer needed (see [#1959]). + The `AnalysisSurfaceIntegral` now only takes the arguments `boundary_symbols` and `variable`. ([#2069]) +- In functions `rhs!`, `rhs_parabolic!` we removed the unused argument `initial_condition`. ([#2037]) + Users should not be affected by this. + ## Changes in the v0.8 lifecycle #### Changed @@ -11,6 +21,8 @@ for human readability. - The AMR routines for `P4estMesh` and `T8codeMesh` were changed to work on the product of the Jacobian and the conserved variables instead of the conserved variables only to make AMR fully conservative ([#2028]). This may change AMR results slightly. +- Subcell (IDP) limiting is now officially supported and not marked as experimental + anymore (see `VolumeIntegralSubcellLimiting`). ## Changes when updating to v0.8 from v0.7.x diff --git a/Project.toml b/Project.toml index 6a887d71d2c..612b65ec6f0 100644 --- a/Project.toml +++ b/Project.toml @@ -1,9 +1,10 @@ name = "Trixi" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" authors = ["Michael Schlottke-Lakemper ", "Gregor Gassner ", "Hendrik Ranocha ", "Andrew R. Winters ", "Jesse Chan "] -version = "0.8.9-DEV" +version = "0.8.11-DEV" [deps] +Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" CodeTracking = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" @@ -60,6 +61,7 @@ TrixiConvexECOSExt = ["Convex", "ECOS"] TrixiMakieExt = "Makie" [compat] +Accessors = "0.1.12" CodeTracking = "1.0.5" ConstructionBase = "1.3" Convex = "0.16" diff --git a/README.md b/README.md index a76fa268437..30e9da243d7 100644 --- a/README.md +++ b/README.md @@ -19,28 +19,6 @@

-*** -**Trixi.jl at JuliaCon 2024**
-At this year's JuliaCon in Eindhoven, Netherlands, we will be present with several contributions -from the Trixi Framework ecosystem: - -* [**Julia for Particle-Based Multiphysics with TrixiParticles.jl**](https://pretalx.com/juliacon2024/talk/TPFF8L/),
- [*Erik Faulhaber*](https://github.com/efaulhaber/), [*Niklas Neher*](https://github.com/lasnikas/), - 10th July 2024, 11:00–11:30, Function (4.1) -* [**Towards Aerodynamic Simulations in Julia with Trixi.jl**](https://pretalx.com/juliacon2024/talk/XH8KBG/),
- [*Daniel Doehring*](https://github.com/danieldoehring/), - 10th July 2024, 15:30–16:00, While Loop (4.2) -* [**libtrixi: serving legacy codes in earth system modeling with fresh Julia CFD**](https://pretalx.com/juliacon2024/talk/SXC7LA/),
- [*Benedict Geihe*](https://github.com/benegee/), - 12th July 2024, 14:00–17:00, Function (4.1) - -The last talk is part of the -[Julia for High-Performance Computing](https://juliacon.org/2024/minisymposia/hpc/) -minisymposium, which this year is hosted by our own [*Hendrik Ranocha*](https://github.com/ranocha/). - -We are looking forward to seeing you there ♥️ -*** - **Trixi.jl** is a numerical simulation framework for conservation laws written in [Julia](https://julialang.org). A key objective for the framework is to be useful to both scientists and students. Therefore, next to @@ -59,6 +37,7 @@ installation and postprocessing procedures. Its features include: * Kinetic energy-preserving and entropy-stable methods based on flux differencing * Entropy-stable shock capturing * Positivity-preserving limiting + * Subcell invariant domain-preserving (IDP) limiting * [Finite difference summation by parts (SBP) methods](https://github.com/ranocha/SummationByPartsOperators.jl) * Compatible with the [SciML ecosystem for ordinary differential equations](https://diffeq.sciml.ai/latest/) * [Explicit low-storage Runge-Kutta time integration](https://diffeq.sciml.ai/latest/solvers/ode_solve/#Low-Storage-Methods) diff --git a/docs/literate/src/files/behind_the_scenes_simulation_setup_plots/src/rhs_structure_figure.jl b/docs/literate/src/files/behind_the_scenes_simulation_setup_plots/src/rhs_structure_figure.jl index 19083dad68c..75c2e03188b 100644 --- a/docs/literate/src/files/behind_the_scenes_simulation_setup_plots/src/rhs_structure_figure.jl +++ b/docs/literate/src/files/behind_the_scenes_simulation_setup_plots/src/rhs_structure_figure.jl @@ -35,7 +35,7 @@ plot!(Shape([(-1.7,-11), (1.7,-11), (1.7,-17), (-1.7,-17)]), linecolor=:blue, fi annotate!(1.5, -14, ("Trixi.jl", 12, :blue, :center)) plot!(Shape([(-1.4,-14.5), (1.4,-14.5), (1.4,-16.5), (-1.4,-16.5)]), linecolor="black", fillcolor="white", label=false,linewidth=2) -annotate!(0, -15.5, ("Trixi.rhs!(du, u, t, mesh, equations, initial_condition, \nboundary_conditions, source_terms, dg, cache)", 12, :black, :center)) +annotate!(0, -15.5, ("Trixi.rhs!(du, u, t, mesh, equations, \nboundary_conditions, source_terms, dg, cache)", 12, :black, :center)) diff --git a/docs/literate/src/files/subcell_shock_capturing.jl b/docs/literate/src/files/subcell_shock_capturing.jl index 8b5399c23a9..f47cdb69965 100644 --- a/docs/literate/src/files/subcell_shock_capturing.jl +++ b/docs/literate/src/files/subcell_shock_capturing.jl @@ -51,7 +51,11 @@ # The Newton-bisection algorithm is an iterative method and requires some parameters. # It uses a fixed maximum number of iteration steps (`max_iterations_newton = 10`) and # relative/absolute tolerances (`newton_tolerances = (1.0e-12, 1.0e-14)`). The given values are -# sufficient in most cases and therefore used as default. Additionally, there is the parameter +# sufficient in most cases and therefore used as default. If the implemented bounds checking +# functionality indicates problems with the limiting (see [below](@ref subcell_bounds_check)) +# the Newton method with the chosen parameters might not manage to converge. If so, adapting +# the mentioned parameters helps fix that. +# Additionally, there is the parameter # `gamma_constant_newton`, which can be used to scale the antidiffusive flux for the computation # of the blending coefficients of nonlinear variables. The default value is `2 * ndims(equations)`, # as it was shown by [Pazner (2020)](https://doi.org/10.1016/j.cma.2021.113876) [Section 4.2.2.] @@ -244,7 +248,7 @@ plot(sol) # ![blast_wave_paraview_reinterpolate=false](https://github.com/trixi-framework/Trixi.jl/assets/74359358/39274f18-0064-469c-b4da-bac4b843e116) -# ## Bounds checking +# ## [Bounds checking](@id subcell_bounds_check) # Subcell limiting is based on the fulfillment of target bounds - either global or local. # Although the implementation works and has been thoroughly tested, there are some cases where # these bounds are not met. diff --git a/docs/src/index.md b/docs/src/index.md index 869caaed85f..0e4749dde33 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -30,6 +30,7 @@ installation and postprocessing procedures. Its features include: * Kinetic energy-preserving and entropy-stable methods based on flux differencing * Entropy-stable shock capturing * Positivity-preserving limiting + * Subcell invariant domain-preserving (IDP) limiting * [Finite difference summation by parts (SBP) methods](https://github.com/ranocha/SummationByPartsOperators.jl) * Compatible with the [SciML ecosystem for ordinary differential equations](https://diffeq.sciml.ai/latest/) * [Explicit low-storage Runge-Kutta time integration](https://diffeq.sciml.ai/latest/solvers/ode_solve/#Low-Storage-Methods) diff --git a/docs/src/styleguide.md b/docs/src/styleguide.md index 83d4dfee1bb..b192d6288c4 100644 --- a/docs/src/styleguide.md +++ b/docs/src/styleguide.md @@ -51,7 +51,7 @@ PRs that verify that running JuliaFormatter.jl again will not change the source To format your contributions before created a PR (or, at least, before requesting a review of your PR), you need to install JuliaFormatter.jl first by running ```shell -julia -e 'using Pkg; Pkg.add(PackageSpec(name = "JuliaFormatter", version="1.0.45"))' +julia -e 'using Pkg; Pkg.add(PackageSpec(name = "JuliaFormatter", version="1.0.60"))' ``` You can then recursively format the core Julia files in the Trixi.jl repo by executing ```shell diff --git a/examples/p4est_2d_dgsem/elixir_euler_NACA0012airfoil_mach085.jl b/examples/p4est_2d_dgsem/elixir_euler_NACA0012airfoil_mach085.jl index 45b750728c9..638aff1b10c 100644 --- a/examples/p4est_2d_dgsem/elixir_euler_NACA0012airfoil_mach085.jl +++ b/examples/p4est_2d_dgsem/elixir_euler_NACA0012airfoil_mach085.jl @@ -85,11 +85,11 @@ analysis_interval = 2000 l_inf = 1.0 # Length of airfoil force_boundary_names = (:AirfoilBottom, :AirfoilTop) -drag_coefficient = AnalysisSurfaceIntegral(semi, force_boundary_names, +drag_coefficient = AnalysisSurfaceIntegral(force_boundary_names, DragCoefficientPressure(aoa(), rho_inf(), u_inf(equations), l_inf)) -lift_coefficient = AnalysisSurfaceIntegral(semi, force_boundary_names, +lift_coefficient = AnalysisSurfaceIntegral(force_boundary_names, LiftCoefficientPressure(aoa(), rho_inf(), u_inf(equations), l_inf)) diff --git a/examples/p4est_2d_dgsem/elixir_euler_subsonic_cylinder.jl b/examples/p4est_2d_dgsem/elixir_euler_subsonic_cylinder.jl index 21df724da4d..4fb62d358dd 100644 --- a/examples/p4est_2d_dgsem/elixir_euler_subsonic_cylinder.jl +++ b/examples/p4est_2d_dgsem/elixir_euler_subsonic_cylinder.jl @@ -89,11 +89,11 @@ rho_inf = 1.4 u_inf = 0.38 l_inf = 1.0 # Diameter of circle -drag_coefficient = AnalysisSurfaceIntegral(semi, (:x_neg,), +drag_coefficient = AnalysisSurfaceIntegral((:x_neg,), DragCoefficientPressure(aoa, rho_inf, u_inf, l_inf)) -lift_coefficient = AnalysisSurfaceIntegral(semi, (:x_neg,), +lift_coefficient = AnalysisSurfaceIntegral((:x_neg,), LiftCoefficientPressure(aoa, rho_inf, u_inf, l_inf)) diff --git a/examples/p4est_2d_dgsem/elixir_navierstokes_NACA0012airfoil_mach08.jl b/examples/p4est_2d_dgsem/elixir_navierstokes_NACA0012airfoil_mach08.jl index fdb23d876f3..89773a41e2f 100644 --- a/examples/p4est_2d_dgsem/elixir_navierstokes_NACA0012airfoil_mach08.jl +++ b/examples/p4est_2d_dgsem/elixir_navierstokes_NACA0012airfoil_mach08.jl @@ -120,23 +120,23 @@ summary_callback = SummaryCallback() analysis_interval = 2000 force_boundary_names = (:AirfoilBottom, :AirfoilTop) -drag_coefficient = AnalysisSurfaceIntegral(semi, force_boundary_names, +drag_coefficient = AnalysisSurfaceIntegral(force_boundary_names, DragCoefficientPressure(aoa(), rho_inf(), u_inf(equations), l_inf())) -lift_coefficient = AnalysisSurfaceIntegral(semi, force_boundary_names, +lift_coefficient = AnalysisSurfaceIntegral(force_boundary_names, LiftCoefficientPressure(aoa(), rho_inf(), u_inf(equations), l_inf())) -drag_coefficient_shear_force = AnalysisSurfaceIntegral(semi, force_boundary_names, +drag_coefficient_shear_force = AnalysisSurfaceIntegral(force_boundary_names, DragCoefficientShearStress(aoa(), rho_inf(), u_inf(equations), l_inf())) -lift_coefficient_shear_force = AnalysisSurfaceIntegral(semi, force_boundary_names, +lift_coefficient_shear_force = AnalysisSurfaceIntegral(force_boundary_names, LiftCoefficientShearStress(aoa(), rho_inf(), u_inf(equations), diff --git a/examples/paper_self_gravitating_gas_dynamics/elixir_eulergravity_jeans_instability.jl b/examples/paper_self_gravitating_gas_dynamics/elixir_eulergravity_jeans_instability.jl index 7461198fbb2..22e1d1f3d82 100644 --- a/examples/paper_self_gravitating_gas_dynamics/elixir_eulergravity_jeans_instability.jl +++ b/examples/paper_self_gravitating_gas_dynamics/elixir_eulergravity_jeans_instability.jl @@ -91,7 +91,7 @@ semi_gravity = SemidiscretizationHyperbolic(mesh, equations_gravity, initial_con # combining both semidiscretizations for Euler + self-gravity parameters = ParametersEulerGravity(background_density = 1.5e7, # aka rho0 gravitational_constant = 6.674e-8, # aka G - cfl = 1.6, + cfl = 0.8, # value as used in the paper resid_tol = 1.0e-4, n_iterations_max = 1000, timestep_gravity = timestep_gravity_carpenter_kennedy_erk54_2N!) @@ -105,7 +105,7 @@ ode = semidiscretize(semi, tspan); summary_callback = SummaryCallback() -stepsize_callback = StepsizeCallback(cfl = 1.0) +stepsize_callback = StepsizeCallback(cfl = 0.5) # value as used in the paper save_solution = SaveSolutionCallback(interval = 10, save_initial_solution = true, diff --git a/examples/structured_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl b/examples/structured_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl index 5c11a7d15a7..ce603359bec 100644 --- a/examples/structured_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl +++ b/examples/structured_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl @@ -51,7 +51,9 @@ limiter_idp = SubcellLimiterIDP(equations, basis; local_twosided_variables_cons = ["rho"], local_onesided_variables_nonlinear = [(Trixi.entropy_guermond_etal, min)], - max_iterations_newton = 40, # Default value of 10 iterations is too low to fulfill bounds. + # Default parameters are not sufficient to fulfill bounds properly. + max_iterations_newton = 40, + newton_tolerances = (1.0e-13, 1.0e-15), positivity_variables_cons = [], positivity_variables_nonlinear = []) # Variables for global limiting (`positivity_variables_cons` and @@ -96,7 +98,7 @@ save_solution = SaveSolutionCallback(interval = 100, save_final_solution = true, solution_variables = cons2prim) -stepsize_callback = StepsizeCallback(cfl = 0.7) +stepsize_callback = StepsizeCallback(cfl = 0.6) callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback, diff --git a/examples/tree_1d_dgsem/elixir_advection_perk2_optimal_cfl.jl b/examples/tree_1d_dgsem/elixir_advection_perk2_optimal_cfl.jl new file mode 100644 index 00000000000..2b9602ab4a4 --- /dev/null +++ b/examples/tree_1d_dgsem/elixir_advection_perk2_optimal_cfl.jl @@ -0,0 +1,84 @@ + +using Convex, ECOS +using OrdinaryDiffEq +using Trixi + +############################################################################### +# semidiscretization of the linear advection equation + +advection_velocity = 1.0 +equations = LinearScalarAdvectionEquation1D(advection_velocity) + +# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux +solver = DGSEM(polydeg = 3, surface_flux = flux_lax_friedrichs) + +coordinates_min = -1.0 # minimum coordinate +coordinates_max = 1.0 # maximum coordinate + +# Create a uniformly refined mesh with periodic boundaries +mesh = TreeMesh(coordinates_min, coordinates_max, + initial_refinement_level = 4, + n_cells_max = 30_000) # set maximum capacity of tree data structure + +# A semidiscretization collects data structures and functions for the spatial discretization +semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition_convergence_test, + solver) + +############################################################################### +# ODE solvers, callbacks etc. + +# Create ODE problem with time span from 0.0 to 20.0 +tspan = (0.0, 20.0) +ode = semidiscretize(semi, tspan); + +# At the beginning of the main loop, the SummaryCallback prints a summary of the simulation setup +# and resets the timers +summary_callback = SummaryCallback() + +# The AnalysisCallback allows to analyse the solution in regular intervals and prints the results +analysis_interval = 100 +analysis_callback = AnalysisCallback(semi, interval = analysis_interval) + +alive_callback = AliveCallback(alive_interval = analysis_interval) + +save_solution = SaveSolutionCallback(dt = 0.1, + save_initial_solution = true, + save_final_solution = true, + solution_variables = cons2prim) + +amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable = first), + base_level = 4, + med_level = 5, med_threshold = 0.1, + max_level = 6, max_threshold = 0.6) + +amr_callback = AMRCallback(semi, amr_controller, + interval = 5, + adapt_initial_condition = true, + adapt_initial_condition_only_refine = true) + +# Construct second order paired explicit Runge-Kutta method with 6 stages for given simulation setup. +# Pass `tspan` to calculate maximum time step allowed for the bisection algorithm used +# in calculating the polynomial coefficients in the ODE algorithm. +ode_algorithm = Trixi.PairedExplicitRK2(6, tspan, semi) + +# For Paired Explicit Runge-Kutta methods, we receive an optimized timestep for a given reference semidiscretization. +# To allow for e.g. adaptivity, we reverse-engineer the corresponding CFL number to make it available during the simulation. +cfl_number = Trixi.calculate_cfl(ode_algorithm, ode) +stepsize_callback = StepsizeCallback(cfl = cfl_number) + +# Create a CallbackSet to collect all callbacks such that they can be passed to the ODE solver +callbacks = CallbackSet(summary_callback, + alive_callback, + save_solution, + analysis_callback, + amr_callback, + stepsize_callback) + +############################################################################### +# run the simulation +sol = Trixi.solve(ode, ode_algorithm, + dt = 1.0, # Manual time step value, will be overwritten by the stepsize_callback when it is specified. + save_everystep = false, callback = callbacks); + +# Print the timer summary +summary_callback() diff --git a/examples/tree_1d_dgsem/elixir_burgers_rarefaction.jl b/examples/tree_1d_dgsem/elixir_burgers_rarefaction.jl index d32b9d6f1f4..843d8a7aa4c 100644 --- a/examples/tree_1d_dgsem/elixir_burgers_rarefaction.jl +++ b/examples/tree_1d_dgsem/elixir_burgers_rarefaction.jl @@ -43,10 +43,7 @@ end ############################################################################### # Specify non-periodic boundary conditions -function inflow(x, t, equations::InviscidBurgersEquation1D) - return initial_condition_rarefaction(coordinate_min, t, equations) -end -boundary_condition_inflow = BoundaryConditionDirichlet(inflow) +boundary_condition_inflow = BoundaryConditionDirichlet(initial_condition_rarefaction) function boundary_condition_outflow(u_inner, orientation, normal_direction, x, t, surface_flux_function, diff --git a/examples/tree_1d_dgsem/elixir_burgers_shock.jl b/examples/tree_1d_dgsem/elixir_burgers_shock.jl index 1f0b0e7e042..09c6cee9f98 100644 --- a/examples/tree_1d_dgsem/elixir_burgers_shock.jl +++ b/examples/tree_1d_dgsem/elixir_burgers_shock.jl @@ -43,10 +43,7 @@ end ############################################################################### # Specify non-periodic boundary conditions -function inflow(x, t, equations::InviscidBurgersEquation1D) - return initial_condition_shock(coordinate_min, t, equations) -end -boundary_condition_inflow = BoundaryConditionDirichlet(inflow) +boundary_condition_inflow = BoundaryConditionDirichlet(initial_condition_shock) function boundary_condition_outflow(u_inner, orientation, normal_direction, x, t, surface_flux_function, diff --git a/examples/tree_2d_dgsem/elixir_euler_blast_wave_sc_subcell_nonperiodic.jl b/examples/tree_2d_dgsem/elixir_euler_blast_wave_sc_subcell_nonperiodic.jl index 00d3c69f2e6..21a89fdcbe6 100644 --- a/examples/tree_2d_dgsem/elixir_euler_blast_wave_sc_subcell_nonperiodic.jl +++ b/examples/tree_2d_dgsem/elixir_euler_blast_wave_sc_subcell_nonperiodic.jl @@ -43,7 +43,10 @@ basis = LobattoLegendreBasis(3) limiter_idp = SubcellLimiterIDP(equations, basis; local_twosided_variables_cons = ["rho"], local_onesided_variables_nonlinear = [(Trixi.entropy_math, - max)]) + max)], + # Default parameters are not sufficient to fulfill bounds properly. + max_iterations_newton = 70, + newton_tolerances = (1.0e-13, 1.0e-14)) volume_integral = VolumeIntegralSubcellLimiting(limiter_idp; volume_flux_dg = volume_flux, volume_flux_fv = surface_flux) diff --git a/examples/tree_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl b/examples/tree_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl index 2089d35397d..1dc0586ec7e 100644 --- a/examples/tree_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl +++ b/examples/tree_2d_dgsem/elixir_euler_sedov_blast_wave_sc_subcell.jl @@ -44,7 +44,11 @@ basis = LobattoLegendreBasis(3) limiter_idp = SubcellLimiterIDP(equations, basis; local_twosided_variables_cons = ["rho"], local_onesided_variables_nonlinear = [(Trixi.entropy_guermond_etal, - min)]) + min)], + positivity_variables_nonlinear = [pressure], + # Default parameters are not sufficient to fulfill bounds properly. + max_iterations_newton = 60, + newton_tolerances = (1.0e-13, 1.0e-15)) volume_integral = VolumeIntegralSubcellLimiting(limiter_idp; volume_flux_dg = volume_flux, volume_flux_fv = surface_flux) @@ -53,7 +57,7 @@ solver = DGSEM(basis, surface_flux, volume_integral) coordinates_min = (-2.0, -2.0) coordinates_max = (2.0, 2.0) mesh = TreeMesh(coordinates_min, coordinates_max, - initial_refinement_level = 3, + initial_refinement_level = 5, n_cells_max = 100_000) semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver) @@ -76,7 +80,7 @@ save_solution = SaveSolutionCallback(interval = 1000, save_final_solution = true, solution_variables = cons2prim) -stepsize_callback = StepsizeCallback(cfl = 0.6) +stepsize_callback = StepsizeCallback(cfl = 0.4) callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback, diff --git a/examples/tree_2d_dgsem/elixir_eulermulti_shock_bubble_shockcapturing_subcell_minmax.jl b/examples/tree_2d_dgsem/elixir_eulermulti_shock_bubble_shockcapturing_subcell_minmax.jl index b2d49ecbd48..9bf310d7536 100644 --- a/examples/tree_2d_dgsem/elixir_eulermulti_shock_bubble_shockcapturing_subcell_minmax.jl +++ b/examples/tree_2d_dgsem/elixir_eulermulti_shock_bubble_shockcapturing_subcell_minmax.jl @@ -121,7 +121,7 @@ save_solution = SaveSolutionCallback(interval = 600, save_final_solution = true, solution_variables = cons2prim) -stepsize_callback = StepsizeCallback(cfl = 0.5) +stepsize_callback = StepsizeCallback(cfl = 0.4) callbacks = CallbackSet(summary_callback, analysis_callback, diff --git a/src/Trixi.jl b/src/Trixi.jl index 88b37b0d0a5..1b8cb5c5658 100644 --- a/src/Trixi.jl +++ b/src/Trixi.jl @@ -18,6 +18,7 @@ module Trixi # Include other packages that are used in Trixi.jl # (standard library packages first, other packages next, all of them sorted alphabetically) +using Accessors: @reset using LinearAlgebra: LinearAlgebra, Diagonal, diag, dot, mul!, norm, cross, normalize, I, UniformScaling, det using Printf: @printf, @sprintf, println diff --git a/src/auxiliary/math.jl b/src/auxiliary/math.jl index fa816da9a1e..6ae09588861 100644 --- a/src/auxiliary/math.jl +++ b/src/auxiliary/math.jl @@ -284,6 +284,11 @@ end # when using `@fastmath`, which we also get from # [Fortran](https://godbolt.org/z/Yrsa1js7P) # or [C++](https://godbolt.org/z/674G7Pccv). +# +# Note however that such a custom reimplementation can cause incompatibilities with other +# packages. Currently we are affected by an issue with MPI.jl on ARM, see +# https://github.com/trixi-framework/Trixi.jl/issues/1922 +# The workaround is to resort to Base.min / Base.max when using MPI reductions. """ Trixi.max(x, y, ...) diff --git a/src/callbacks_stage/subcell_limiter_idp_correction.jl b/src/callbacks_stage/subcell_limiter_idp_correction.jl index 69125ebecd9..d234a6a5507 100644 --- a/src/callbacks_stage/subcell_limiter_idp_correction.jl +++ b/src/callbacks_stage/subcell_limiter_idp_correction.jl @@ -23,9 +23,6 @@ called with [`VolumeIntegralSubcellLimiting`](@ref). - Pazner (2020) Sparse invariant domain preserving discontinuous Galerkin methods with subcell convex limiting [DOI: 10.1016/j.cma.2021.113876](https://doi.org/10.1016/j.cma.2021.113876) - -!!! warning "Experimental implementation" - This is an experimental feature and may change in future releases. """ struct SubcellLimiterIDPCorrection end diff --git a/src/callbacks_step/alive.jl b/src/callbacks_step/alive.jl index 9700f7e4cdc..fe2234166cd 100644 --- a/src/callbacks_step/alive.jl +++ b/src/callbacks_step/alive.jl @@ -45,7 +45,7 @@ function Base.show(io::IO, ::MIME"text/plain", alive_callback = cb.affect! setup = [ - "interval" => alive_callback.alive_interval, + "interval" => alive_callback.alive_interval ] summary_box(io, "AliveCallback", setup) end diff --git a/src/callbacks_step/analysis.jl b/src/callbacks_step/analysis.jl index f1b9b6c3d28..71d9ec82f12 100644 --- a/src/callbacks_step/analysis.jl +++ b/src/callbacks_step/analysis.jl @@ -457,7 +457,8 @@ function (analysis_callback::AnalysisCallback)(io, du, u, u_ode, t, semi, iter) res = maximum(abs, view(du, v, ..)) if mpi_isparallel() # TODO: Debugging, here is a type instability - global_res = MPI.Reduce!(Ref(res), max, mpi_root(), mpi_comm()) + # Base.max instead of max needed, see comment in src/auxiliary/math.jl + global_res = MPI.Reduce!(Ref(res), Base.max, mpi_root(), mpi_comm()) if mpi_isroot() res::eltype(du) = global_res[] end diff --git a/src/callbacks_step/analysis_dg2d.jl b/src/callbacks_step/analysis_dg2d.jl index de6b9a2a4a6..4cd92ce7c5f 100644 --- a/src/callbacks_step/analysis_dg2d.jl +++ b/src/callbacks_step/analysis_dg2d.jl @@ -29,10 +29,39 @@ function create_cache_analysis(analyzer, mesh::TreeMesh{2}, return (; u_local, u_tmp1, x_local, x_tmp1) end +# Specialized cache for P4estMesh to allow for different ambient dimension from mesh dimension +function create_cache_analysis(analyzer, mesh::P4estMesh{2, NDIMS_AMBIENT}, + equations, dg::DG, cache, + RealT, uEltype) where {NDIMS_AMBIENT} + + # pre-allocate buffers + # We use `StrideArray`s here since these buffers are used in performance-critical + # places and the additional information passed to the compiler makes them faster + # than native `Array`s. + u_local = StrideArray(undef, uEltype, + StaticInt(nvariables(equations)), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer))) + u_tmp1 = StrideArray(undef, uEltype, + StaticInt(nvariables(equations)), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(dg))) + x_local = StrideArray(undef, RealT, + StaticInt(NDIMS_AMBIENT), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer))) + x_tmp1 = StrideArray(undef, RealT, + StaticInt(NDIMS_AMBIENT), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(dg))) + jacobian_local = StrideArray(undef, RealT, + StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer))) + jacobian_tmp1 = StrideArray(undef, RealT, + StaticInt(nnodes(analyzer)), StaticInt(nnodes(dg))) + + return (; u_local, u_tmp1, x_local, x_tmp1, jacobian_local, jacobian_tmp1) +end + function create_cache_analysis(analyzer, mesh::Union{StructuredMesh{2}, StructuredMeshView{2}, - UnstructuredMesh2D, - P4estMesh{2}, T8codeMesh{2}}, + UnstructuredMesh2D, T8codeMesh{2}}, equations, dg::DG, cache, RealT, uEltype) diff --git a/src/callbacks_step/analysis_dg2d_parallel.jl b/src/callbacks_step/analysis_dg2d_parallel.jl index 000daa015dc..5b3ae858ab7 100644 --- a/src/callbacks_step/analysis_dg2d_parallel.jl +++ b/src/callbacks_step/analysis_dg2d_parallel.jl @@ -131,7 +131,8 @@ function calc_error_norms(func, u, t, analyzer, global_l2_error = Vector(l2_error) global_linf_error = Vector(linf_error) MPI.Reduce!(global_l2_error, +, mpi_root(), mpi_comm()) - MPI.Reduce!(global_linf_error, max, mpi_root(), mpi_comm()) + # Base.max instead of max needed, see comment in src/auxiliary/math.jl + MPI.Reduce!(global_linf_error, Base.max, mpi_root(), mpi_comm()) total_volume = MPI.Reduce(volume, +, mpi_root(), mpi_comm()) if mpi_isroot() l2_error = convert(typeof(l2_error), global_l2_error) diff --git a/src/callbacks_step/analysis_dg3d.jl b/src/callbacks_step/analysis_dg3d.jl index 27e8a2b722f..fd501a7257c 100644 --- a/src/callbacks_step/analysis_dg3d.jl +++ b/src/callbacks_step/analysis_dg3d.jl @@ -35,9 +35,51 @@ function create_cache_analysis(analyzer, mesh::TreeMesh{3}, return (; u_local, u_tmp1, u_tmp2, x_local, x_tmp1, x_tmp2) end +# Specialized cache for P4estMesh to allow for different ambient dimension from mesh dimension function create_cache_analysis(analyzer, - mesh::Union{StructuredMesh{3}, P4estMesh{3}, - T8codeMesh{3}}, + mesh::P4estMesh{3, NDIMS_AMBIENT}, + equations, dg::DG, cache, + RealT, uEltype) where {NDIMS_AMBIENT} + + # pre-allocate buffers + # We use `StrideArray`s here since these buffers are used in performance-critical + # places and the additional information passed to the compiler makes them faster + # than native `Array`s. + u_local = StrideArray(undef, uEltype, + StaticInt(nvariables(equations)), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), StaticInt(nnodes(analyzer))) + u_tmp1 = StrideArray(undef, uEltype, + StaticInt(nvariables(equations)), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(dg)), StaticInt(nnodes(dg))) + u_tmp2 = StrideArray(undef, uEltype, + StaticInt(nvariables(equations)), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), StaticInt(nnodes(dg))) + x_local = StrideArray(undef, RealT, + StaticInt(NDIMS_AMBIENT), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), StaticInt(nnodes(analyzer))) + x_tmp1 = StrideArray(undef, RealT, + StaticInt(NDIMS_AMBIENT), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(dg)), StaticInt(nnodes(dg))) + x_tmp2 = StrideArray(undef, RealT, + StaticInt(NDIMS_AMBIENT), StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), StaticInt(nnodes(dg))) + jacobian_local = StrideArray(undef, RealT, + StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer))) + jacobian_tmp1 = StrideArray(undef, RealT, + StaticInt(nnodes(analyzer)), StaticInt(nnodes(dg)), + StaticInt(nnodes(dg))) + jacobian_tmp2 = StrideArray(undef, RealT, + StaticInt(nnodes(analyzer)), + StaticInt(nnodes(analyzer)), StaticInt(nnodes(dg))) + + return (; u_local, u_tmp1, u_tmp2, x_local, x_tmp1, x_tmp2, jacobian_local, + jacobian_tmp1, jacobian_tmp2) +end + +function create_cache_analysis(analyzer, + mesh::Union{StructuredMesh{3}, T8codeMesh{3}}, equations, dg::DG, cache, RealT, uEltype) diff --git a/src/callbacks_step/analysis_dg3d_parallel.jl b/src/callbacks_step/analysis_dg3d_parallel.jl index de777be406d..70a616367cd 100644 --- a/src/callbacks_step/analysis_dg3d_parallel.jl +++ b/src/callbacks_step/analysis_dg3d_parallel.jl @@ -49,7 +49,8 @@ function calc_error_norms(func, u, t, analyzer, global_l2_error = Vector(l2_error) global_linf_error = Vector(linf_error) MPI.Reduce!(global_l2_error, +, mpi_root(), mpi_comm()) - MPI.Reduce!(global_linf_error, max, mpi_root(), mpi_comm()) + # Base.max instead of max needed, see comment in src/auxiliary/math.jl + MPI.Reduce!(global_linf_error, Base.max, mpi_root(), mpi_comm()) total_volume = MPI.Reduce(volume, +, mpi_root(), mpi_comm()) if mpi_isroot() l2_error = convert(typeof(l2_error), global_l2_error) diff --git a/src/callbacks_step/analysis_surface_integral_2d.jl b/src/callbacks_step/analysis_surface_integral_2d.jl index 1a95db66d81..71aa95df598 100644 --- a/src/callbacks_step/analysis_surface_integral_2d.jl +++ b/src/callbacks_step/analysis_surface_integral_2d.jl @@ -20,7 +20,6 @@ For instance, this can be used to compute the lift [`LiftCoefficientPressure`](@ drag coefficient [`DragCoefficientPressure`](@ref) of e.g. an airfoil with the boundary symbol `:Airfoil` in 2D. -- `semi::Semidiscretization`: Passed in to retrieve boundary condition information - `boundary_symbols::NTuple{NBoundaries, Symbol}`: Name(s) of the boundary/boundaries where the quantity of interest is computed - `variable::Variable`: Quantity of interest, like lift or drag @@ -29,8 +28,7 @@ struct AnalysisSurfaceIntegral{Variable, NBoundaries} variable::Variable # Quantity of interest, like lift or drag boundary_symbols::NTuple{NBoundaries, Symbol} # Name(s) of the boundary/boundaries - function AnalysisSurfaceIntegral(semi, - boundary_symbols::NTuple{NBoundaries, Symbol}, + function AnalysisSurfaceIntegral(boundary_symbols::NTuple{NBoundaries, Symbol}, variable) where {NBoundaries} return new{typeof(variable), NBoundaries}(variable, boundary_symbols) end diff --git a/src/callbacks_step/averaging.jl b/src/callbacks_step/averaging.jl index efa71af9b91..d23abe28692 100644 --- a/src/callbacks_step/averaging.jl +++ b/src/callbacks_step/averaging.jl @@ -45,7 +45,7 @@ function Base.show(io::IO, ::MIME"text/plain", setup = [ "Start time" => first(averaging_callback.tspan), - "Final time" => last(averaging_callback.tspan), + "Final time" => last(averaging_callback.tspan) ] summary_box(io, "AveragingCallback", setup) end diff --git a/src/callbacks_step/glm_speed.jl b/src/callbacks_step/glm_speed.jl index 8ee406af5f9..0bd87c189bc 100644 --- a/src/callbacks_step/glm_speed.jl +++ b/src/callbacks_step/glm_speed.jl @@ -48,7 +48,7 @@ function Base.show(io::IO, ::MIME"text/plain", setup = [ "GLM wave speed scaling" => glm_speed_callback.glm_scale, "Expected CFL number" => glm_speed_callback.cfl, - "Selected semidiscretizations" => glm_speed_callback.semi_indices, + "Selected semidiscretizations" => glm_speed_callback.semi_indices ] summary_box(io, "GlmSpeedCallback", setup) end @@ -83,7 +83,10 @@ function update_cleaning_speed!(semi, glm_speed_callback, dt) c_h_deltat = calc_dt_for_cleaning_speed(cfl, mesh, equations, solver, cache) # c_h is proportional to its own time step divided by the complete MHD time step - equations.c_h = glm_scale * c_h_deltat / dt + # We use @reset here since the equations are immutable (to work on GPUs etc.). + # Thus, we need to modify the equations field of the semidiscretization. + @reset equations.c_h = glm_scale * c_h_deltat / dt + semi.equations = equations return semi end diff --git a/src/callbacks_step/save_restart.jl b/src/callbacks_step/save_restart.jl index 0b0d2420c7a..181d985a682 100644 --- a/src/callbacks_step/save_restart.jl +++ b/src/callbacks_step/save_restart.jl @@ -38,7 +38,7 @@ function Base.show(io::IO, ::MIME"text/plain", "interval" => save_restart_callback.interval, "save final solution" => save_restart_callback.save_final_restart ? "yes" : "no", - "output directory" => abspath(normpath(save_restart_callback.output_directory)), + "output directory" => abspath(normpath(save_restart_callback.output_directory)) ] summary_box(io, "SaveRestartCallback", setup) end diff --git a/src/callbacks_step/save_solution.jl b/src/callbacks_step/save_solution.jl index 870cea0b9f5..3f9abef7f33 100644 --- a/src/callbacks_step/save_solution.jl +++ b/src/callbacks_step/save_solution.jl @@ -62,7 +62,7 @@ function Base.show(io::IO, ::MIME"text/plain", "yes" : "no", "save final solution" => save_solution_callback.save_final_solution ? "yes" : "no", - "output directory" => abspath(normpath(save_solution_callback.output_directory)), + "output directory" => abspath(normpath(save_solution_callback.output_directory)) ] summary_box(io, "SaveSolutionCallback", setup) end @@ -85,7 +85,7 @@ function Base.show(io::IO, ::MIME"text/plain", "yes" : "no", "save final solution" => save_solution_callback.save_final_solution ? "yes" : "no", - "output directory" => abspath(normpath(save_solution_callback.output_directory)), + "output directory" => abspath(normpath(save_solution_callback.output_directory)) ] summary_box(io, "SaveSolutionCallback", setup) end diff --git a/src/callbacks_step/steady_state.jl b/src/callbacks_step/steady_state.jl index 15c2e834285..7085d05394f 100644 --- a/src/callbacks_step/steady_state.jl +++ b/src/callbacks_step/steady_state.jl @@ -43,7 +43,7 @@ function Base.show(io::IO, ::MIME"text/plain", setup = [ "absolute tolerance" => steady_state_callback.abstol, - "relative tolerance" => steady_state_callback.reltol, + "relative tolerance" => steady_state_callback.reltol ] summary_box(io, "SteadyStateCallback", setup) end diff --git a/src/callbacks_step/stepsize.jl b/src/callbacks_step/stepsize.jl index 8b5cb958318..0a95cb35ad3 100644 --- a/src/callbacks_step/stepsize.jl +++ b/src/callbacks_step/stepsize.jl @@ -33,7 +33,7 @@ function Base.show(io::IO, ::MIME"text/plain", stepsize_callback = cb.affect! setup = [ - "CFL number" => stepsize_callback.cfl_number, + "CFL number" => stepsize_callback.cfl_number ] summary_box(io, "StepsizeCallback", setup) end diff --git a/src/callbacks_step/stepsize_dg2d.jl b/src/callbacks_step/stepsize_dg2d.jl index 41251506a0d..c7922cecc66 100644 --- a/src/callbacks_step/stepsize_dg2d.jl +++ b/src/callbacks_step/stepsize_dg2d.jl @@ -54,7 +54,8 @@ function max_dt(u, t, mesh::ParallelTreeMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -70,7 +71,8 @@ function max_dt(u, t, mesh::ParallelTreeMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -154,7 +156,8 @@ function max_dt(u, t, mesh::ParallelP4estMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -170,7 +173,8 @@ function max_dt(u, t, mesh::ParallelP4estMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -186,7 +190,8 @@ function max_dt(u, t, mesh::ParallelT8codeMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -202,7 +207,8 @@ function max_dt(u, t, mesh::ParallelT8codeMesh{2}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end diff --git a/src/callbacks_step/stepsize_dg3d.jl b/src/callbacks_step/stepsize_dg3d.jl index 664596f989e..49976de6505 100644 --- a/src/callbacks_step/stepsize_dg3d.jl +++ b/src/callbacks_step/stepsize_dg3d.jl @@ -130,7 +130,8 @@ function max_dt(u, t, mesh::ParallelP4estMesh{3}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -146,7 +147,8 @@ function max_dt(u, t, mesh::ParallelP4estMesh{3}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -162,7 +164,8 @@ function max_dt(u, t, mesh::ParallelT8codeMesh{3}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end @@ -178,7 +181,8 @@ function max_dt(u, t, mesh::ParallelT8codeMesh{3}, typeof(constant_speed), typeof(equations), typeof(dg), typeof(cache)}, u, t, mesh, constant_speed, equations, dg, cache) - dt = MPI.Allreduce!(Ref(dt), min, mpi_comm())[] + # Base.min instead of min needed, see comment in src/auxiliary/math.jl + dt = MPI.Allreduce!(Ref(dt), Base.min, mpi_comm())[] return dt end diff --git a/src/callbacks_step/time_series.jl b/src/callbacks_step/time_series.jl index ae18c85700d..d3c9861d33d 100644 --- a/src/callbacks_step/time_series.jl +++ b/src/callbacks_step/time_series.jl @@ -72,7 +72,7 @@ function Base.show(io::IO, ::MIME"text/plain", "interval" => time_series_callback.interval, "solution_variables" => time_series_callback.solution_variables, "output_directory" => time_series_callback.output_directory, - "filename" => time_series_callback.filename, + "filename" => time_series_callback.filename ] summary_box(io, "TimeSeriesCallback", setup) end diff --git a/src/callbacks_step/visualization.jl b/src/callbacks_step/visualization.jl index f91fe27bd33..302e7e4462a 100644 --- a/src/callbacks_step/visualization.jl +++ b/src/callbacks_step/visualization.jl @@ -50,7 +50,7 @@ function Base.show(io::IO, ::MIME"text/plain", "variable names" => visualization_callback.variable_names, "show mesh" => visualization_callback.show_mesh, "plot creator" => visualization_callback.plot_creator, - "plot data creator" => visualization_callback.plot_data_creator, + "plot data creator" => visualization_callback.plot_data_creator ] summary_box(io, "VisualizationCallback", setup) end diff --git a/src/equations/ideal_glm_mhd_2d.jl b/src/equations/ideal_glm_mhd_2d.jl index ab2a4b066a1..7a6d19facd1 100644 --- a/src/equations/ideal_glm_mhd_2d.jl +++ b/src/equations/ideal_glm_mhd_2d.jl @@ -11,8 +11,8 @@ The ideal compressible GLM-MHD equations for an ideal gas with ratio of specific heats `gamma` in two space dimensions. """ -mutable struct IdealGlmMhdEquations2D{RealT <: Real} <: - AbstractIdealGlmMhdEquations{2, 9} +struct IdealGlmMhdEquations2D{RealT <: Real} <: + AbstractIdealGlmMhdEquations{2, 9} gamma::RealT # ratio of specific heats inv_gamma_minus_one::RealT # = inv(gamma - 1); can be used to write slow divisions as fast multiplications c_h::RealT # GLM cleaning speed @@ -28,6 +28,11 @@ function IdealGlmMhdEquations2D(gamma; initial_c_h = convert(typeof(gamma), NaN) IdealGlmMhdEquations2D(promote(gamma, initial_c_h)...) end +# Outer constructor for `@reset` works correctly +function IdealGlmMhdEquations2D(gamma, inv_gamma_minus_one, c_h) + IdealGlmMhdEquations2D(gamma, c_h) +end + have_nonconservative_terms(::IdealGlmMhdEquations2D) = True() n_nonconservative_terms(::IdealGlmMhdEquations2D) = 2 diff --git a/src/equations/ideal_glm_mhd_3d.jl b/src/equations/ideal_glm_mhd_3d.jl index 2ffaa575243..e922a2e6fd6 100644 --- a/src/equations/ideal_glm_mhd_3d.jl +++ b/src/equations/ideal_glm_mhd_3d.jl @@ -11,8 +11,8 @@ The ideal compressible GLM-MHD equations for an ideal gas with ratio of specific heats `gamma` in three space dimensions. """ -mutable struct IdealGlmMhdEquations3D{RealT <: Real} <: - AbstractIdealGlmMhdEquations{3, 9} +struct IdealGlmMhdEquations3D{RealT <: Real} <: + AbstractIdealGlmMhdEquations{3, 9} gamma::RealT # ratio of specific heats inv_gamma_minus_one::RealT # = inv(gamma - 1); can be used to write slow divisions as fast multiplications c_h::RealT # GLM cleaning speed @@ -28,6 +28,11 @@ function IdealGlmMhdEquations3D(gamma; initial_c_h = convert(typeof(gamma), NaN) IdealGlmMhdEquations3D(promote(gamma, initial_c_h)...) end +# Outer constructor for `@reset` works correctly +function IdealGlmMhdEquations3D(gamma, inv_gamma_minus_one, c_h) + IdealGlmMhdEquations3D(gamma, c_h) +end + have_nonconservative_terms(::IdealGlmMhdEquations3D) = True() function varnames(::typeof(cons2cons), ::IdealGlmMhdEquations3D) ("rho", "rho_v1", "rho_v2", "rho_v3", "rho_e", "B1", "B2", "B3", "psi") diff --git a/src/equations/ideal_glm_mhd_multicomponent_1d.jl b/src/equations/ideal_glm_mhd_multicomponent_1d.jl index b2ed06e53ea..86a69e9fe10 100644 --- a/src/equations/ideal_glm_mhd_multicomponent_1d.jl +++ b/src/equations/ideal_glm_mhd_multicomponent_1d.jl @@ -10,8 +10,8 @@ The ideal compressible multicomponent GLM-MHD equations in one space dimension. """ -mutable struct IdealGlmMhdMulticomponentEquations1D{NVARS, NCOMP, RealT <: Real} <: - AbstractIdealGlmMhdMulticomponentEquations{1, NVARS, NCOMP} +struct IdealGlmMhdMulticomponentEquations1D{NVARS, NCOMP, RealT <: Real} <: + AbstractIdealGlmMhdMulticomponentEquations{1, NVARS, NCOMP} gammas::SVector{NCOMP, RealT} gas_constants::SVector{NCOMP, RealT} cv::SVector{NCOMP, RealT} @@ -51,6 +51,11 @@ function IdealGlmMhdMulticomponentEquations1D(; gammas, gas_constants) __gas_constants) end +# Outer constructor for `@reset` works correctly +function IdealGlmMhdMulticomponentEquations1D(gammas, gas_constants, cv, cp, c_h) + IdealGlmMhdMulticomponentEquations1D(gammas = gammas, gas_constants = gas_constants) +end + @inline function Base.real(::IdealGlmMhdMulticomponentEquations1D{NVARS, NCOMP, RealT}) where { NVARS, NCOMP, diff --git a/src/equations/ideal_glm_mhd_multicomponent_2d.jl b/src/equations/ideal_glm_mhd_multicomponent_2d.jl index 3aab048bd99..c56294b6643 100644 --- a/src/equations/ideal_glm_mhd_multicomponent_2d.jl +++ b/src/equations/ideal_glm_mhd_multicomponent_2d.jl @@ -10,8 +10,8 @@ The ideal compressible multicomponent GLM-MHD equations in two space dimensions. """ -mutable struct IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT <: Real} <: - AbstractIdealGlmMhdMulticomponentEquations{2, NVARS, NCOMP} +struct IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT <: Real} <: + AbstractIdealGlmMhdMulticomponentEquations{2, NVARS, NCOMP} gammas::SVector{NCOMP, RealT} gas_constants::SVector{NCOMP, RealT} cv::SVector{NCOMP, RealT} @@ -21,18 +21,18 @@ mutable struct IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT <: Real} function IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT}(gammas::SVector{NCOMP, RealT}, gas_constants::SVector{NCOMP, - RealT}) where { - NVARS, - NCOMP, - RealT <: - Real - } + RealT}, + c_h::RealT) where { + NVARS, + NCOMP, + RealT <: + Real + } NCOMP >= 1 || throw(DimensionMismatch("`gammas` and `gas_constants` have to be filled with at least one value")) cv = gas_constants ./ (gammas .- 1) cp = gas_constants + gas_constants ./ (gammas .- 1) - c_h = convert(eltype(gammas), NaN) new(gammas, gas_constants, cv, cp, c_h) end @@ -49,8 +49,30 @@ function IdealGlmMhdMulticomponentEquations2D(; gammas, gas_constants) __gammas = SVector(map(RealT, _gammas)) __gas_constants = SVector(map(RealT, _gas_constants)) + c_h = convert(RealT, NaN) + + return IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT}(__gammas, + __gas_constants, + c_h) +end + +# Outer constructor for `@reset` works correctly +function IdealGlmMhdMulticomponentEquations2D(gammas, gas_constants, cv, cp, c_h) + _gammas = promote(gammas...) + _gas_constants = promote(gas_constants...) + RealT = promote_type(eltype(_gammas), eltype(_gas_constants)) + + NVARS = length(_gammas) + 8 + NCOMP = length(_gammas) + + __gammas = SVector(map(RealT, _gammas)) + __gas_constants = SVector(map(RealT, _gas_constants)) + + c_h = convert(RealT, c_h) + return IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT}(__gammas, - __gas_constants) + __gas_constants, + c_h) end @inline function Base.real(::IdealGlmMhdMulticomponentEquations2D{NVARS, NCOMP, RealT}) where { diff --git a/src/meshes/p4est_mesh.jl b/src/meshes/p4est_mesh.jl index 526f5d9f23b..65c0a431b29 100644 --- a/src/meshes/p4est_mesh.jl +++ b/src/meshes/p4est_mesh.jl @@ -6,12 +6,23 @@ #! format: noindent """ - P4estMesh{NDIMS} <: AbstractMesh{NDIMS} + P4estMesh{NDIMS, NDIMS_AMBIENT} <: AbstractMesh{NDIMS} An unstructured curved mesh based on trees that uses the C library `p4est` to manage trees and mesh refinement. + +The parameter `NDIMS` denotes the dimension of the spatial domain or manifold represented +by the mesh itself, while `NDIMS_AMBIENT` denotes the dimension of the ambient space in +which the mesh is embedded. For example, the type `P4estMesh{3, 3}` corresponds to a +standard mesh for a three-dimensional volume, whereas `P4estMesh{2, 3}` corresponds to a +mesh for a two-dimensional surface or shell in three-dimensional space. + +!!! warning "Experimental implementation" + The use of `NDIMS != NDIMS_AMBIENT` is an experimental feature and may change in future + releases. """ -mutable struct P4estMesh{NDIMS, RealT <: Real, IsParallel, P, Ghost, NDIMSP2, NNODES} <: +mutable struct P4estMesh{NDIMS, NDIMS_AMBIENT, RealT <: Real, IsParallel, P, Ghost, + NDIMSP2, NNODES} <: AbstractMesh{NDIMS} p4est :: P # Either PointerWrapper{p4est_t} or PointerWrapper{p8est_t} is_parallel :: IsParallel @@ -48,7 +59,14 @@ mutable struct P4estMesh{NDIMS, RealT <: Real, IsParallel, P, Ghost, NDIMSP2, NN ghost = ghost_new_p4est(p4est) ghost_pw = PointerWrapper(ghost) - mesh = new{NDIMS, eltype(tree_node_coordinates), typeof(is_parallel), + # To enable the treatment of a manifold of dimension NDIMS embedded within an + # ambient space of dimension NDIMS_AMBIENT, we store both as type parameters and + # allow them to differ in the general case. This functionality is used for + # constructing discretizations on spherical shell domains for applications in + # global atmospheric modelling. The ambient dimension NDIMS_AMBIENT is therefore + # set here in the inner constructor to size(tree_node_coordinates, 1). + mesh = new{NDIMS, size(tree_node_coordinates, 1), + eltype(tree_node_coordinates), typeof(is_parallel), typeof(p4est_pw), typeof(ghost_pw), NDIMS + 2, length(nodes)}(p4est_pw, is_parallel, ghost_pw, @@ -66,8 +84,8 @@ mutable struct P4estMesh{NDIMS, RealT <: Real, IsParallel, P, Ghost, NDIMSP2, NN end end -const SerialP4estMesh{NDIMS} = P4estMesh{NDIMS, <:Real, <:False} -const ParallelP4estMesh{NDIMS} = P4estMesh{NDIMS, <:Real, <:True} +const SerialP4estMesh{NDIMS} = P4estMesh{NDIMS, <:Any, <:Real, <:False} +const ParallelP4estMesh{NDIMS} = P4estMesh{NDIMS, <:Any, <:Real, <:True} @inline mpi_parallel(mesh::SerialP4estMesh) = False() @inline mpi_parallel(mesh::ParallelP4estMesh) = True() @@ -87,7 +105,8 @@ function destroy_mesh(mesh::P4estMesh{3}) end @inline Base.ndims(::P4estMesh{NDIMS}) where {NDIMS} = NDIMS -@inline Base.real(::P4estMesh{NDIMS, RealT}) where {NDIMS, RealT} = RealT +@inline Base.real(::P4estMesh{NDIMS, NDIMS_AMBIENT, RealT}) where {NDIMS, NDIMS_AMBIENT, RealT} = RealT +@inline ndims_ambient(::P4estMesh{NDIMS, NDIMS_AMBIENT}) where {NDIMS, NDIMS_AMBIENT} = NDIMS_AMBIENT @inline function ntrees(mesh::P4estMesh) return mesh.p4est.trees.elem_count[] @@ -97,7 +116,8 @@ end @inline ncellsglobal(mesh::P4estMesh) = Int(mesh.p4est.global_num_quadrants[]) function Base.show(io::IO, mesh::P4estMesh) - print(io, "P4estMesh{", ndims(mesh), ", ", real(mesh), "}") + print(io, "P4estMesh{", ndims(mesh), ", ", ndims_ambient(mesh), ", ", real(mesh), + "}") end function Base.show(io::IO, ::MIME"text/plain", mesh::P4estMesh) @@ -107,11 +127,12 @@ function Base.show(io::IO, ::MIME"text/plain", mesh::P4estMesh) setup = [ "#trees" => ntrees(mesh), "current #cells" => ncellsglobal(mesh), - "polydeg" => length(mesh.nodes) - 1, + "polydeg" => length(mesh.nodes) - 1 ] summary_box(io, - "P4estMesh{" * string(ndims(mesh)) * ", " * string(real(mesh)) * - "}", setup) + "P4estMesh{" * string(ndims(mesh)) * ", " * + string(ndims_ambient(mesh)) * + ", " * string(real(mesh)) * "}", setup) end end diff --git a/src/meshes/t8code_mesh.jl b/src/meshes/t8code_mesh.jl index 9b0e0b741a4..231e2965664 100644 --- a/src/meshes/t8code_mesh.jl +++ b/src/meshes/t8code_mesh.jl @@ -93,7 +93,7 @@ function Base.show(io::IO, ::MIME"text/plain", mesh::T8codeMesh) setup = [ "#trees" => ntrees(mesh), "current #cells" => ncellsglobal(mesh), - "polydeg" => length(mesh.nodes) - 1, + "polydeg" => length(mesh.nodes) - 1 ] summary_box(io, "T8codeMesh{" * string(ndims(mesh)) * ", " * string(real(mesh)) * "}", @@ -982,7 +982,7 @@ function fill_mesh_info!(mesh::T8codeMesh, interfaces, mortars, boundaries, [1, 2, 0, 0, 3, 4, 0, 0], # 2 [0, 0, 1, 2, 0, 0, 3, 4], # 3 [1, 2, 3, 4, 0, 0, 0, 0], # 4 - [0, 0, 0, 0, 1, 2, 3, 4], # 5 + [0, 0, 0, 0, 1, 2, 3, 4] # 5 ] # Helper variables to compute unique global MPI interface/mortar ids. @@ -1235,10 +1235,10 @@ function fill_mesh_info!(mesh::T8codeMesh, interfaces, mortars, boundaries, global_mortar_id_to_local[global_mortar_id] = local_mpi_mortar_id mpi_mesh_info.mpi_mortars.local_neighbor_ids[local_mpi_mortar_id] = [ - current_index + 1, + current_index + 1 ] mpi_mesh_info.mpi_mortars.local_neighbor_positions[local_mpi_mortar_id] = [ - map_iface_to_ichild_to_position[iface + 1][t8_element_child_id(eclass_scheme, element) + 1], + map_iface_to_ichild_to_position[iface + 1][t8_element_child_id(eclass_scheme, element) + 1] ] init_mortar_node_indices!(mpi_mesh_info.mpi_mortars, (iface, dual_faces[1]), @@ -1246,7 +1246,7 @@ function fill_mesh_info!(mesh::T8codeMesh, interfaces, mortars, boundaries, neighbor_ranks = [ remotes[findlast(ghost_remote_first_elem .<= - neighbor_ielements[1])], + neighbor_ielements[1])] ] mpi_mesh_info.neighbor_ranks_mortar[local_mpi_mortar_id] = neighbor_ranks diff --git a/src/meshes/tree_mesh.jl b/src/meshes/tree_mesh.jl index 1092fc54cc1..933bfa62722 100644 --- a/src/meshes/tree_mesh.jl +++ b/src/meshes/tree_mesh.jl @@ -200,7 +200,7 @@ function Base.show(io::IO, ::MIME"text/plain", "periodicity" => mesh.tree.periodicity, "current #cells" => mesh.tree.length, "#leaf-cells" => count_leaf_cells(mesh.tree), - "maximum #cells" => mesh.tree.capacity, + "maximum #cells" => mesh.tree.capacity ] summary_box(io, "TreeMesh{" * string(NDIMS) * ", " * string(TreeType) * "}", setup) diff --git a/src/semidiscretization/semidiscretization.jl b/src/semidiscretization/semidiscretization.jl index c6b82d5f37b..4fef0a893ce 100644 --- a/src/semidiscretization/semidiscretization.jl +++ b/src/semidiscretization/semidiscretization.jl @@ -421,7 +421,7 @@ end # - calc_error_norms(func, u, t, analyzer, mesh, equations, initial_condition, solver, cache, cache_analysis) # - allocate_coefficients(mesh, equations, solver, cache) # - compute_coefficients!(u, func, mesh, equations, solver, cache) -# - rhs!(du, u, t, mesh, equations, initial_condition, boundary_conditions, source_terms, solver, cache) +# - rhs!(du, u, t, mesh, equations, boundary_conditions, source_terms, solver, cache) # end # @muladd diff --git a/src/semidiscretization/semidiscretization_coupled.jl b/src/semidiscretization/semidiscretization_coupled.jl index 7c1fbef972b..745a8d3f6f8 100644 --- a/src/semidiscretization/semidiscretization_coupled.jl +++ b/src/semidiscretization/semidiscretization_coupled.jl @@ -16,7 +16,8 @@ The semidiscretizations can be coupled by gluing meshes together using [`Boundar !!! warning "Experimental code" This is an experimental feature and can change any time. """ -struct SemidiscretizationCoupled{S, Indices, EquationList} <: AbstractSemidiscretization +mutable struct SemidiscretizationCoupled{S, Indices, EquationList} <: + AbstractSemidiscretization semis::S u_indices::Indices # u_ode[u_indices[i]] is the part of u_ode corresponding to semis[i] performance_counter::PerformanceCounter @@ -383,7 +384,10 @@ function update_cleaning_speed!(semi_coupled::SemidiscretizationCoupled, c_h_deltat = calc_dt_for_cleaning_speed(cfl, mesh, equations, solver, cache) # c_h is proportional to its own time step divided by the complete MHD time step - equations.c_h = glm_scale * c_h_deltat / dt + # We use @reset here since the equations are immutable (to work on GPUs etc.). + # Thus, we need to modify the equations field of the semidiscretization. + @reset equations.c_h = glm_scale * c_h_deltat / dt + semi.equations = equations end return semi_coupled diff --git a/src/semidiscretization/semidiscretization_euler_gravity.jl b/src/semidiscretization/semidiscretization_euler_gravity.jl index 4201344df80..3ca429f63b6 100644 --- a/src/semidiscretization/semidiscretization_euler_gravity.jl +++ b/src/semidiscretization/semidiscretization_euler_gravity.jl @@ -59,7 +59,7 @@ function Base.show(io::IO, ::MIME"text/plain", parameters::ParametersEulerGravit "gravitational constant (G)" => parameters.gravitational_constant, "CFL (gravity)" => parameters.cfl, "max. #iterations" => parameters.n_iterations_max, - "time integrator" => parameters.timestep_gravity, + "time integrator" => parameters.timestep_gravity ] summary_box(io, "ParametersEulerGravity", setup) end @@ -134,7 +134,26 @@ function SemidiscretizationEulerGravity(semi_euler::SemiEuler, parameters, cache) end -# TODO: AD, add appropriate method for remake +function remake(semi::SemidiscretizationEulerGravity; + uEltype = real(semi.semi_gravity.solver), + semi_euler = semi.semi_euler, + semi_gravity = semi.semi_gravity, + parameters = semi.parameters) + semi_euler = remake(semi_euler, uEltype = uEltype) + semi_gravity = remake(semi_gravity, uEltype = uEltype) + + # Recreate cache, i.e., registers for u with e.g. AD datatype + u_ode = compute_coefficients(zero(real(semi_gravity)), semi_gravity) + du_ode = similar(u_ode) + u_tmp1_ode = similar(u_ode) + u_tmp2_ode = similar(u_ode) + cache = (; u_ode, du_ode, u_tmp1_ode, u_tmp2_ode) + + SemidiscretizationEulerGravity{typeof(semi_euler), typeof(semi_gravity), + typeof(parameters), typeof(cache)}(semi_euler, + semi_gravity, + parameters, cache) +end function Base.show(io::IO, semi::SemidiscretizationEulerGravity) @nospecialize semi # reduce precompilation time diff --git a/src/semidiscretization/semidiscretization_hyperbolic.jl b/src/semidiscretization/semidiscretization_hyperbolic.jl index e35c0e2ea97..ffe74af14cf 100644 --- a/src/semidiscretization/semidiscretization_hyperbolic.jl +++ b/src/semidiscretization/semidiscretization_hyperbolic.jl @@ -11,10 +11,10 @@ A struct containing everything needed to describe a spatial semidiscretization of a hyperbolic conservation law. """ -struct SemidiscretizationHyperbolic{Mesh, Equations, InitialCondition, - BoundaryConditions, - SourceTerms, Solver, Cache} <: - AbstractSemidiscretization +mutable struct SemidiscretizationHyperbolic{Mesh, Equations, InitialCondition, + BoundaryConditions, + SourceTerms, Solver, Cache} <: + AbstractSemidiscretization mesh::Mesh equations::Equations @@ -409,14 +409,14 @@ function compute_coefficients!(u_ode, t, semi::SemidiscretizationHyperbolic) end function rhs!(du_ode, u_ode, semi::SemidiscretizationHyperbolic, t) - @unpack mesh, equations, initial_condition, boundary_conditions, source_terms, solver, cache = semi + @unpack mesh, equations, boundary_conditions, source_terms, solver, cache = semi u = wrap_array(u_ode, mesh, equations, solver, cache) du = wrap_array(du_ode, mesh, equations, solver, cache) # TODO: Taal decide, do we need to pass the mesh? time_start = time_ns() - @trixi_timeit timer() "rhs!" rhs!(du, u, t, mesh, equations, initial_condition, + @trixi_timeit timer() "rhs!" rhs!(du, u, t, mesh, equations, boundary_conditions, source_terms, solver, cache) runtime = time_ns() - time_start put!(semi.performance_counter, runtime) diff --git a/src/semidiscretization/semidiscretization_hyperbolic_parabolic.jl b/src/semidiscretization/semidiscretization_hyperbolic_parabolic.jl index 16f8da21c1e..87204843ed9 100644 --- a/src/semidiscretization/semidiscretization_hyperbolic_parabolic.jl +++ b/src/semidiscretization/semidiscretization_hyperbolic_parabolic.jl @@ -296,14 +296,14 @@ function semidiscretize(semi::SemidiscretizationHyperbolicParabolic, tspan; end function rhs!(du_ode, u_ode, semi::SemidiscretizationHyperbolicParabolic, t) - @unpack mesh, equations, initial_condition, boundary_conditions, source_terms, solver, cache = semi + @unpack mesh, equations, boundary_conditions, source_terms, solver, cache = semi u = wrap_array(u_ode, mesh, equations, solver, cache) du = wrap_array(du_ode, mesh, equations, solver, cache) # TODO: Taal decide, do we need to pass the mesh? time_start = time_ns() - @trixi_timeit timer() "rhs!" rhs!(du, u, t, mesh, equations, initial_condition, + @trixi_timeit timer() "rhs!" rhs!(du, u, t, mesh, equations, boundary_conditions, source_terms, solver, cache) runtime = time_ns() - time_start put!(semi.performance_counter.counters[1], runtime) @@ -312,7 +312,7 @@ function rhs!(du_ode, u_ode, semi::SemidiscretizationHyperbolicParabolic, t) end function rhs_parabolic!(du_ode, u_ode, semi::SemidiscretizationHyperbolicParabolic, t) - @unpack mesh, equations_parabolic, initial_condition, boundary_conditions_parabolic, source_terms, solver, solver_parabolic, cache, cache_parabolic = semi + @unpack mesh, equations_parabolic, boundary_conditions_parabolic, source_terms, solver, solver_parabolic, cache, cache_parabolic = semi u = wrap_array(u_ode, mesh, equations_parabolic, solver, cache_parabolic) du = wrap_array(du_ode, mesh, equations_parabolic, solver, cache_parabolic) @@ -321,7 +321,6 @@ function rhs_parabolic!(du_ode, u_ode, semi::SemidiscretizationHyperbolicParabol time_start = time_ns() @trixi_timeit timer() "parabolic rhs!" rhs_parabolic!(du, u, t, mesh, equations_parabolic, - initial_condition, boundary_conditions_parabolic, source_terms, solver, solver_parabolic, diff --git a/src/solvers/dg.jl b/src/solvers/dg.jl index 628e39e6a87..0e4d667fbc2 100644 --- a/src/solvers/dg.jl +++ b/src/solvers/dg.jl @@ -86,7 +86,7 @@ function Base.show(io::IO, ::MIME"text/plain", integral::VolumeIntegralFluxDiffe show(io, integral) else setup = [ - "volume flux" => integral.volume_flux, + "volume flux" => integral.volume_flux ] summary_box(io, "VolumeIntegralFluxDifferencing", setup) end @@ -178,7 +178,7 @@ function Base.show(io::IO, ::MIME"text/plain", show(io, integral) else setup = [ - "FV flux" => integral.volume_flux_fv, + "FV flux" => integral.volume_flux_fv ] summary_box(io, "VolumeIntegralPureLGLFiniteVolume", setup) end @@ -196,9 +196,6 @@ with a low-order FV method. Used with limiter [`SubcellLimiterIDP`](@ref). mainly because the implementation assumes that low- and high-order schemes have the same surface terms, which is not guaranteed for non-conforming meshes. The low-order scheme with a high-order mortar is not invariant domain preserving. - -!!! warning "Experimental implementation" - This is an experimental feature and may change in future releases. """ struct VolumeIntegralSubcellLimiting{VolumeFluxDG, VolumeFluxFV, Limiter} <: AbstractVolumeIntegral @@ -275,7 +272,7 @@ function Base.show(io::IO, ::MIME"text/plain", integral::VolumeIntegralUpwind) show(io, integral) else setup = [ - "flux splitting" => integral.splitting, + "flux splitting" => integral.splitting ] summary_box(io, "VolumeIntegralUpwind", setup) end @@ -315,7 +312,7 @@ function Base.show(io::IO, ::MIME"text/plain", integral::SurfaceIntegralWeakForm show(io, integral) else setup = [ - "surface flux" => integral.surface_flux, + "surface flux" => integral.surface_flux ] summary_box(io, "SurfaceIntegralWeakForm", setup) end @@ -341,7 +338,7 @@ function Base.show(io::IO, ::MIME"text/plain", integral::SurfaceIntegralStrongFo show(io, integral) else setup = [ - "surface flux" => integral.surface_flux, + "surface flux" => integral.surface_flux ] summary_box(io, "SurfaceIntegralStrongForm", setup) end @@ -372,7 +369,7 @@ function Base.show(io::IO, ::MIME"text/plain", integral::SurfaceIntegralUpwind) show(io, integral) else setup = [ - "flux splitting" => integral.splitting, + "flux splitting" => integral.splitting ] summary_box(io, "SurfaceIntegralUpwind", setup) end diff --git a/src/solvers/dgmulti/dg.jl b/src/solvers/dgmulti/dg.jl index 695260f4b9b..be7dd3241d3 100644 --- a/src/solvers/dgmulti/dg.jl +++ b/src/solvers/dgmulti/dg.jl @@ -642,7 +642,7 @@ function calc_sources!(du, u, t, source_terms, end function rhs!(du, u, t, mesh, equations, - initial_condition, boundary_conditions::BC, source_terms::Source, + boundary_conditions::BC, source_terms::Source, dg::DGMulti, cache) where {BC, Source} @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgmulti/dg_parabolic.jl b/src/solvers/dgmulti/dg_parabolic.jl index 7dfe4430244..c0ecb4f1b5d 100644 --- a/src/solvers/dgmulti/dg_parabolic.jl +++ b/src/solvers/dgmulti/dg_parabolic.jl @@ -426,7 +426,7 @@ end # boundary conditions will be applied to both grad(u) and div(u). function rhs_parabolic!(du, u, t, mesh::DGMultiMesh, equations_parabolic::AbstractEquationsParabolic, - initial_condition, boundary_conditions, source_terms, + boundary_conditions, source_terms, dg::DGMulti, parabolic_scheme, cache, cache_parabolic) reset_du!(du, dg) diff --git a/src/solvers/dgmulti/flux_differencing.jl b/src/solvers/dgmulti/flux_differencing.jl index 36aa50dff4e..a2edf4ceca8 100644 --- a/src/solvers/dgmulti/flux_differencing.jl +++ b/src/solvers/dgmulti/flux_differencing.jl @@ -620,7 +620,7 @@ end # an entropy conservative/stable discretization. For modal DG schemes, an extra `entropy_projection!` # is required (see https://doi.org/10.1016/j.jcp.2018.02.033, Section 4.3). # Also called by DGMultiFluxDiff{<:GaussSBP} solvers. -function rhs!(du, u, t, mesh, equations, initial_condition, boundary_conditions::BC, +function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiff, cache) where {Source, BC} @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) @@ -666,7 +666,7 @@ end # for such schemes is very similar to the implementation of `rhs!` for standard DG methods, # but specializes `calc_volume_integral`. function rhs!(du, u, t, mesh, equations, - initial_condition, boundary_conditions::BC, source_terms::Source, + boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiffSBP, cache) where {BC, Source} @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl b/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl index 63a37f6780b..5be36a62d7b 100644 --- a/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl +++ b/src/solvers/dgmulti/flux_differencing_gauss_sbp.jl @@ -582,7 +582,7 @@ end # Specialize RHS so that we can call `invert_jacobian_and_interpolate!` instead of just `invert_jacobian!`, # since `invert_jacobian!` is also used in other places (e.g., parabolic terms). -function rhs!(du, u, t, mesh, equations, initial_condition, boundary_conditions::BC, +function rhs!(du, u, t, mesh, equations, boundary_conditions::BC, source_terms::Source, dg::DGMultiFluxDiff{<:GaussSBP}, cache) where {Source, BC} @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_p4est/containers.jl b/src/solvers/dgsem_p4est/containers.jl index f9830d0011c..3ef9cb2a421 100644 --- a/src/solvers/dgsem_p4est/containers.jl +++ b/src/solvers/dgsem_p4est/containers.jl @@ -81,7 +81,8 @@ function Base.resize!(elements::P4estElementContainer, capacity) end # Create element container and initialize element data -function init_elements(mesh::Union{P4estMesh{NDIMS, RealT}, T8codeMesh{NDIMS, RealT}}, +function init_elements(mesh::Union{P4estMesh{NDIMS, NDIMS, RealT}, + T8codeMesh{NDIMS, RealT}}, equations, basis, ::Type{uEltype}) where {NDIMS, RealT <: Real, uEltype <: Real} diff --git a/src/solvers/dgsem_p4est/containers_2d.jl b/src/solvers/dgsem_p4est/containers_2d.jl index 236d7d24c06..6af6fd6d90e 100644 --- a/src/solvers/dgsem_p4est/containers_2d.jl +++ b/src/solvers/dgsem_p4est/containers_2d.jl @@ -37,13 +37,14 @@ end # Interpolate tree_node_coordinates to each quadrant at the specified nodes function calc_node_coordinates!(node_coordinates, - mesh::P4estMesh{2}, - nodes::AbstractVector) + mesh::P4estMesh{2, NDIMS_AMBIENT}, + nodes::AbstractVector) where {NDIMS_AMBIENT} # We use `StrideArray`s here since these buffers are used in performance-critical # places and the additional information passed to the compiler makes them faster # than native `Array`s. tmp1 = StrideArray(undef, real(mesh), - StaticInt(2), static_length(nodes), static_length(mesh.nodes)) + StaticInt(NDIMS_AMBIENT), static_length(nodes), + static_length(mesh.nodes)) matrix1 = StrideArray(undef, real(mesh), static_length(nodes), static_length(mesh.nodes)) matrix2 = similar(matrix1) diff --git a/src/solvers/dgsem_p4est/dg_2d_parabolic.jl b/src/solvers/dgsem_p4est/dg_2d_parabolic.jl index 4bf4c79ebee..23968a2bfac 100644 --- a/src/solvers/dgsem_p4est/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_p4est/dg_2d_parabolic.jl @@ -51,7 +51,7 @@ instead of =# function rhs_parabolic!(du, u, t, mesh::Union{P4estMesh{2}, P4estMesh{3}}, equations_parabolic::AbstractEquationsParabolic, - initial_condition, boundary_conditions_parabolic, source_terms, + boundary_conditions_parabolic, source_terms, dg::DG, parabolic_scheme, cache, cache_parabolic) @unpack viscous_container = cache_parabolic @unpack u_transformed, gradients, flux_viscous = viscous_container diff --git a/src/solvers/dgsem_p4est/dg_3d_parallel.jl b/src/solvers/dgsem_p4est/dg_3d_parallel.jl index e504e06d2c4..635c8dc795e 100644 --- a/src/solvers/dgsem_p4est/dg_3d_parallel.jl +++ b/src/solvers/dgsem_p4est/dg_3d_parallel.jl @@ -7,7 +7,7 @@ function rhs!(du, u, t, mesh::Union{ParallelP4estMesh{3}, ParallelT8codeMesh{3}}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Start to receive MPI data @trixi_timeit timer() "start MPI receive" start_mpi_receive!(cache.mpi_cache) diff --git a/src/solvers/dgsem_structured/dg_1d.jl b/src/solvers/dgsem_structured/dg_1d.jl index 3d63cc5af36..4827063559b 100644 --- a/src/solvers/dgsem_structured/dg_1d.jl +++ b/src/solvers/dgsem_structured/dg_1d.jl @@ -7,7 +7,7 @@ function rhs!(du, u, t, mesh::StructuredMesh{1}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_structured/dg_2d.jl b/src/solvers/dgsem_structured/dg_2d.jl index 6023c9e6192..39bece53ca9 100644 --- a/src/solvers/dgsem_structured/dg_2d.jl +++ b/src/solvers/dgsem_structured/dg_2d.jl @@ -7,7 +7,7 @@ function rhs!(du, u, t, mesh::Union{StructuredMesh{2}, StructuredMeshView{2}}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_structured/dg_3d.jl b/src/solvers/dgsem_structured/dg_3d.jl index e8430eaa491..616a6b15131 100644 --- a/src/solvers/dgsem_structured/dg_3d.jl +++ b/src/solvers/dgsem_structured/dg_3d.jl @@ -7,7 +7,7 @@ function rhs!(du, u, t, mesh::StructuredMesh{3}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_tree/dg_1d.jl b/src/solvers/dgsem_tree/dg_1d.jl index 641c944d5f7..d9a8cc8bc6d 100644 --- a/src/solvers/dgsem_tree/dg_1d.jl +++ b/src/solvers/dgsem_tree/dg_1d.jl @@ -76,7 +76,7 @@ end function rhs!(du, u, t, mesh::TreeMesh{1}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_tree/dg_1d_parabolic.jl b/src/solvers/dgsem_tree/dg_1d_parabolic.jl index fb96e0535ad..034b1b73b82 100644 --- a/src/solvers/dgsem_tree/dg_1d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_1d_parabolic.jl @@ -15,7 +15,7 @@ # boundary conditions will be applied to both grad(u) and div(f(u, grad(u))). function rhs_parabolic!(du, u, t, mesh::TreeMesh{1}, equations_parabolic::AbstractEquationsParabolic, - initial_condition, boundary_conditions_parabolic, source_terms, + boundary_conditions_parabolic, source_terms, dg::DG, parabolic_scheme, cache, cache_parabolic) @unpack viscous_container = cache_parabolic @unpack u_transformed, gradients, flux_viscous = viscous_container diff --git a/src/solvers/dgsem_tree/dg_2d.jl b/src/solvers/dgsem_tree/dg_2d.jl index 734a31d5470..03f28659f5e 100644 --- a/src/solvers/dgsem_tree/dg_2d.jl +++ b/src/solvers/dgsem_tree/dg_2d.jl @@ -112,7 +112,7 @@ end function rhs!(du, u, t, mesh::Union{TreeMesh{2}, P4estMesh{2}, T8codeMesh{2}}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_tree/dg_2d_parabolic.jl b/src/solvers/dgsem_tree/dg_2d_parabolic.jl index f84a08cb69b..9123a3bcd21 100644 --- a/src/solvers/dgsem_tree/dg_2d_parabolic.jl +++ b/src/solvers/dgsem_tree/dg_2d_parabolic.jl @@ -15,7 +15,7 @@ # boundary conditions will be applied to both grad(u) and div(f(u, grad(u))). function rhs_parabolic!(du, u, t, mesh::Union{TreeMesh{2}, TreeMesh{3}}, equations_parabolic::AbstractEquationsParabolic, - initial_condition, boundary_conditions_parabolic, source_terms, + boundary_conditions_parabolic, source_terms, dg::DG, parabolic_scheme, cache, cache_parabolic) @unpack viscous_container = cache_parabolic @unpack u_transformed, gradients, flux_viscous = viscous_container diff --git a/src/solvers/dgsem_tree/dg_2d_parallel.jl b/src/solvers/dgsem_tree/dg_2d_parallel.jl index d7b76f5773a..d0287e00b88 100644 --- a/src/solvers/dgsem_tree/dg_2d_parallel.jl +++ b/src/solvers/dgsem_tree/dg_2d_parallel.jl @@ -450,7 +450,7 @@ end function rhs!(du, u, t, mesh::Union{ParallelTreeMesh{2}, ParallelP4estMesh{2}, ParallelT8codeMesh{2}}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Start to receive MPI data @trixi_timeit timer() "start MPI receive" start_mpi_receive!(cache.mpi_cache) diff --git a/src/solvers/dgsem_tree/dg_3d.jl b/src/solvers/dgsem_tree/dg_3d.jl index acd90cee09d..85150bc3040 100644 --- a/src/solvers/dgsem_tree/dg_3d.jl +++ b/src/solvers/dgsem_tree/dg_3d.jl @@ -144,7 +144,7 @@ end function rhs!(du, u, t, mesh::Union{TreeMesh{3}, P4estMesh{3}, T8codeMesh{3}}, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/solvers/dgsem_tree/indicators.jl b/src/solvers/dgsem_tree/indicators.jl index 323c1236c21..04b3bc98aec 100644 --- a/src/solvers/dgsem_tree/indicators.jl +++ b/src/solvers/dgsem_tree/indicators.jl @@ -96,7 +96,7 @@ function Base.show(io::IO, ::MIME"text/plain", indicator::IndicatorHennemannGass "indicator variable" => indicator.variable, "max. α" => indicator.alpha_max, "min. α" => indicator.alpha_min, - "smooth α" => (indicator.alpha_smooth ? "yes" : "no"), + "smooth α" => (indicator.alpha_smooth ? "yes" : "no") ] summary_box(io, "IndicatorHennemannGassner", setup) end @@ -196,7 +196,7 @@ function Base.show(io::IO, ::MIME"text/plain", indicator::IndicatorLöhner) else setup = [ "indicator variable" => indicator.variable, - "f_wave" => indicator.f_wave, + "f_wave" => indicator.f_wave ] summary_box(io, "IndicatorLöhner", setup) end @@ -254,7 +254,7 @@ function Base.show(io::IO, ::MIME"text/plain", indicator::IndicatorMax) show(io, indicator) else setup = [ - "indicator variable" => indicator.variable, + "indicator variable" => indicator.variable ] summary_box(io, "IndicatorMax", setup) end diff --git a/src/solvers/dgsem_tree/subcell_limiters.jl b/src/solvers/dgsem_tree/subcell_limiters.jl index f560018f461..21330eec451 100644 --- a/src/solvers/dgsem_tree/subcell_limiters.jl +++ b/src/solvers/dgsem_tree/subcell_limiters.jl @@ -60,9 +60,6 @@ where `d = #dimensions`). See equation (20) of Pazner (2020) and equation (30) o - Pazner (2020) Sparse invariant domain preserving discontinuous Galerkin methods with subcell convex limiting [DOI: 10.1016/j.cma.2021.113876](https://doi.org/10.1016/j.cma.2021.113876) - -!!! warning "Experimental implementation" - This is an experimental feature and may change in future releases. """ struct SubcellLimiterIDP{RealT <: Real, LimitingVariablesNonlinear, LimitingOnesidedVariablesNonlinear, Cache} <: diff --git a/src/solvers/dgsem_tree/subcell_limiters_2d.jl b/src/solvers/dgsem_tree/subcell_limiters_2d.jl index 5dae5798a83..df24a588858 100644 --- a/src/solvers/dgsem_tree/subcell_limiters_2d.jl +++ b/src/solvers/dgsem_tree/subcell_limiters_2d.jl @@ -329,9 +329,6 @@ end Pm = min(0, val_flux1_local) + min(0, val_flux1_local_ip1) + min(0, val_flux2_local) + min(0, val_flux2_local_jp1) - Qp = max(0, (var_max[i, j, element] - var) / dt) - Qm = min(0, (var_min[i, j, element] - var) / dt) - Pp = inverse_jacobian * Pp Pm = inverse_jacobian * Pm diff --git a/src/solvers/dgsem_unstructured/dg_2d.jl b/src/solvers/dgsem_unstructured/dg_2d.jl index a531ded91cc..1f8c1ffa16a 100644 --- a/src/solvers/dgsem_unstructured/dg_2d.jl +++ b/src/solvers/dgsem_unstructured/dg_2d.jl @@ -36,7 +36,7 @@ end function rhs!(du, u, t, mesh::UnstructuredMesh2D, equations, - initial_condition, boundary_conditions, source_terms::Source, + boundary_conditions, source_terms::Source, dg::DG, cache) where {Source} # Reset du @trixi_timeit timer() "reset ∂u/∂t" reset_du!(du, dg, cache) diff --git a/src/time_integration/methods_SSP.jl b/src/time_integration/methods_SSP.jl index 285827850c9..ffbc325c82a 100644 --- a/src/time_integration/methods_SSP.jl +++ b/src/time_integration/methods_SSP.jl @@ -19,9 +19,6 @@ The third-order SSP Runge-Kutta method of Shu and Osher. - Shu, Osher (1988) "Efficient Implementation of Essentially Non-oscillatory Shock-Capturing Schemes" (Eq. 2.18) [DOI: 10.1016/0021-9991(88)90177-5](https://doi.org/10.1016/0021-9991(88)90177-5) - -!!! warning "Experimental implementation" - This is an experimental feature and may change in future releases. """ struct SimpleSSPRK33{StageCallbacks} <: SimpleAlgorithmSSP numerator_a::SVector{3, Float64} @@ -133,9 +130,6 @@ end The following structures and methods provide the infrastructure for SSP Runge-Kutta methods of type `SimpleAlgorithmSSP`. - -!!! warning "Experimental implementation" - This is an experimental feature and may change in future releases. """ function solve(ode::ODEProblem, alg = SimpleSSPRK33()::SimpleAlgorithmSSP; dt, callback::Union{CallbackSet, Nothing} = nothing, kwargs...) diff --git a/src/time_integration/paired_explicit_runge_kutta/methods_PERK2.jl b/src/time_integration/paired_explicit_runge_kutta/methods_PERK2.jl index 23a3ceba76c..ad385e6df24 100644 --- a/src/time_integration/paired_explicit_runge_kutta/methods_PERK2.jl +++ b/src/time_integration/paired_explicit_runge_kutta/methods_PERK2.jl @@ -68,7 +68,7 @@ function compute_PairedExplicitRK2_butcher_tableau(num_stages, eig_vals, tspan, a_matrix[:, 1] -= A a_matrix[:, 2] = A - return a_matrix, c + return a_matrix, c, dt_opt end # Compute the Butcher tableau for a paired explicit Runge-Kutta method order 2 @@ -76,7 +76,6 @@ end function compute_PairedExplicitRK2_butcher_tableau(num_stages, base_path_monomial_coeffs::AbstractString, bS, cS) - # c Vector form Butcher Tableau (defines timestep per stage) c = zeros(num_stages) for k in 2:num_stages @@ -107,7 +106,7 @@ function compute_PairedExplicitRK2_butcher_tableau(num_stages, end @doc raw""" - PairedExplicitRK2(num_stages, base_path_monomial_coeffs::AbstractString, + PairedExplicitRK2(num_stages, base_path_monomial_coeffs::AbstractString, dt_opt, bS = 1.0, cS = 0.5) PairedExplicitRK2(num_stages, tspan, semi::AbstractSemidiscretization; verbose = false, bS = 1.0, cS = 0.5) @@ -118,6 +117,7 @@ end - `base_path_monomial_coeffs` (`AbstractString`): Path to a file containing monomial coefficients of the stability polynomial of PERK method. The coefficients should be stored in a text file at `joinpath(base_path_monomial_coeffs, "gamma_$(num_stages).txt")` and separated by line breaks. + - `dt_opt` (`Float64`): Optimal time step size for the simulation setup. - `tspan`: Time span of the simulation. - `semi` (`AbstractSemidiscretization`): Semidiscretization setup. - `eig_vals` (`Vector{ComplexF64}`): Eigenvalues of the Jacobian of the right-hand side (rhs) of the ODEProblem after the @@ -144,16 +144,19 @@ mutable struct PairedExplicitRK2 <: AbstractPairedExplicitRKSingle b1::Float64 bS::Float64 cS::Float64 + dt_opt::Float64 end # struct PairedExplicitRK2 # Constructor that reads the coefficients from a file function PairedExplicitRK2(num_stages, base_path_monomial_coeffs::AbstractString, + dt_opt, bS = 1.0, cS = 0.5) + # If the user has the monomial coefficients, they also must have the optimal time step a_matrix, c = compute_PairedExplicitRK2_butcher_tableau(num_stages, base_path_monomial_coeffs, bS, cS) - return PairedExplicitRK2(num_stages, a_matrix, c, 1 - bS, bS, cS) + return PairedExplicitRK2(num_stages, a_matrix, c, 1 - bS, bS, cS, dt_opt) end # Constructor that calculates the coefficients with polynomial optimizer from a @@ -171,12 +174,12 @@ end function PairedExplicitRK2(num_stages, tspan, eig_vals::Vector{ComplexF64}; verbose = false, bS = 1.0, cS = 0.5) - a_matrix, c = compute_PairedExplicitRK2_butcher_tableau(num_stages, - eig_vals, tspan, - bS, cS; - verbose) + a_matrix, c, dt_opt = compute_PairedExplicitRK2_butcher_tableau(num_stages, + eig_vals, tspan, + bS, cS; + verbose) - return PairedExplicitRK2(num_stages, a_matrix, c, 1 - bS, bS, cS) + return PairedExplicitRK2(num_stages, a_matrix, c, 1 - bS, bS, cS, dt_opt) end # This struct is needed to fake https://github.com/SciML/OrdinaryDiffEq.jl/blob/0c2048a502101647ac35faabd80da8a5645beac7/src/integrators/type.jl#L1 @@ -232,6 +235,26 @@ mutable struct PairedExplicitRK2Integrator{RealT <: Real, uType, Params, Sol, F, k_higher::uType end +""" + calculate_cfl(ode_algorithm::AbstractPairedExplicitRKSingle, ode) + +This function computes the CFL number once using the initial condition of the problem and the optimal timestep (`dt_opt`) from the ODE algorithm. +""" +function calculate_cfl(ode_algorithm::AbstractPairedExplicitRKSingle, ode) + t0 = first(ode.tspan) + u_ode = ode.u0 + semi = ode.p + dt_opt = ode_algorithm.dt_opt + + mesh, equations, solver, cache = mesh_equations_solver_cache(semi) + u = wrap_array(u_ode, mesh, equations, solver, cache) + + cfl_number = dt_opt / max_dt(u, t0, mesh, + have_constant_speed(equations), equations, + solver, cache) + return cfl_number +end + """ add_tstop!(integrator::PairedExplicitRK2Integrator, t) Add a time stop during the time integration process. diff --git a/test/test_dgmulti_1d.jl b/test/test_dgmulti_1d.jl index 7ac3c735642..1c3cd604df1 100644 --- a/test/test_dgmulti_1d.jl +++ b/test/test_dgmulti_1d.jl @@ -52,12 +52,12 @@ end l2=[ 7.853842541289665e-7, 9.609905503440606e-7, - 2.832322219966481e-6, + 2.832322219966481e-6 ] ./ sqrt(2.0), linf=[ 1.5003758788711963e-6, 1.802998748523521e-6, - 4.83599270806323e-6, + 4.83599270806323e-6 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -76,12 +76,12 @@ end l2=[ 1.673813320412685, 5.980737909458242, - 21.587822949251173, + 21.587822949251173 ], linf=[ 3.1388039126918064, 10.630952212105246, - 37.682826521024865, + 37.682826521024865 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -117,12 +117,12 @@ end l2=[ 6.437827414849647e-6, 2.1840558851820947e-6, - 1.3245669629438228e-5, + 1.3245669629438228e-5 ], linf=[ 2.0715843751295537e-5, 8.519520630301258e-6, - 4.2642194098885255e-5, + 4.2642194098885255e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -146,12 +146,12 @@ end l2=[ 1.8684509287853788e-5, 1.0641411823379635e-5, - 5.178010291876143e-5, + 5.178010291876143e-5 ], linf=[ 6.933493585936645e-5, 3.0277366229292113e-5, - 0.0002220020568932668, + 0.0002220020568932668 ]) show(stdout, semi.solver.basis) show(stdout, MIME"text/plain"(), semi.solver.basis) @@ -169,11 +169,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_fdsbp_periodic.jl"), l2=[ 9.146929178341782e-7, 1.8997616876521201e-6, - 3.991417701005622e-6, + 3.991417701005622e-6 ], linf=[ 1.7321089882393892e-6, 3.3252888869128583e-6, - 6.525278767988141e-6, + 6.525278767988141e-6 ]) show(stdout, semi.solver.basis) show(stdout, MIME"text/plain"(), semi.solver.basis) @@ -210,13 +210,13 @@ end 3.03001101100507e-6, 1.692177335948727e-5, 3.002634351734614e-16, - 1.1636653574178203e-15, + 1.1636653574178203e-15 ], linf=[ 1.2043401988570679e-5, 5.346847010329059e-5, 9.43689570931383e-16, - 2.220446049250313e-15, + 2.220446049250313e-15 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -236,13 +236,13 @@ end 1.633271343738687e-5, 9.575385661756332e-6, 1.2700331443128421e-5, - 0.0, + 0.0 ], linf=[ 7.304984704381567e-5, 5.2365944135601694e-5, 6.469559594934893e-5, - 0.0, + 0.0 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_dgmulti_2d.jl b/test/test_dgmulti_2d.jl index ab6b505e208..932fb9bc958 100644 --- a/test/test_dgmulti_2d.jl +++ b/test/test_dgmulti_2d.jl @@ -23,13 +23,13 @@ isdir(outdir) && rm(outdir, recursive = true) 0.0013536930300254945, 0.0014315603442106193, 0.001431560344211359, - 0.0047393341007602625, + 0.0047393341007602625 ] ./ 2.0, linf=[ 0.001514260921466004, 0.0020623991944839215, 0.002062399194485476, - 0.004897700392503701, + 0.004897700392503701 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -51,13 +51,13 @@ end 0.0074706882014934735, 0.005306220583603261, 0.005306220583613591, - 0.014724842607716771, + 0.014724842607716771 ] ./ 2.0, linf=[ 0.021563604940952885, 0.01359397832530762, 0.013593978324845324, - 0.03270995869587523, + 0.03270995869587523 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -79,13 +79,13 @@ end 0.00031892254415307093, 0.00033637562986771894, 0.0003363756298680649, - 0.0011100259064243145, + 0.0011100259064243145 ] ./ 2.0, linf=[ 0.001073298211445639, 0.0013568139808282087, 0.0013568139808290969, - 0.0032249020004324613, + 0.0032249020004324613 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -107,13 +107,13 @@ end 0.007801417730672109, 0.00708583561714128, 0.0070858356171393, - 0.015217574294198809, + 0.015217574294198809 ] ./ 2.0, linf=[ 0.011572828457858897, 0.013965298735070686, 0.01396529873508534, - 0.04227683691807904, + 0.04227683691807904 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -136,13 +136,13 @@ end 0.01280067571168776, 0.010607599608273302, 0.010607599608239775, - 0.026408338014056548, + 0.026408338014056548 ] ./ 2.0, linf=[ 0.037983023185674814, 0.05321027922533417, 0.05321027922608157, - 0.13392025411844033, + 0.13392025411844033 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -166,13 +166,13 @@ end 0.0029373718090697975, 0.0030629360605489465, 0.003062936060545615, - 0.0068486089344859755, + 0.0068486089344859755 ] ./ 2.0, linf=[ 0.01360165305316885, 0.01267402847925303, 0.012674028479251254, - 0.02210545278615017, + 0.02210545278615017 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -188,11 +188,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_bilinear.jl"), l2=[ 1.0259432774540821e-5, 9.014087689495575e-6, - 9.01408768888544e-6, 2.738953324859446e-5, + 9.01408768888544e-6, 2.738953324859446e-5 ], linf=[ 7.362605996297233e-5, 6.874189724781488e-5, - 6.874189703509614e-5, 0.00019124355334110277, + 6.874189703509614e-5, 0.00019124355334110277 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -208,11 +208,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_curved.jl"), l2=[ 1.7204593127904542e-5, 1.5921547179522804e-5, - 1.5921547180107928e-5, 4.894071422525737e-5, + 1.5921547180107928e-5, 4.894071422525737e-5 ], linf=[ 0.00010525416937667842, 0.00010003778102718464, - 0.00010003778071832059, 0.0003642628211952825, + 0.00010003778071832059, 0.0003642628211952825 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -232,13 +232,13 @@ end 3.4666312079259457e-6, 3.4392774480368986e-6, 3.439277447953705e-6, - 1.0965598424665836e-5, + 1.0965598424665836e-5 ], linf=[ 1.1327280377004811e-5, 1.1343911926253725e-5, 1.1343911906935844e-5, - 3.679582619220412e-5, + 3.679582619220412e-5 ], rtol=2 * sqrt(eps())) # Ensure that we do not have excessive memory allocations @@ -260,13 +260,13 @@ end 7.905498158659466e-6, 8.731690809663625e-6, 8.731690811576996e-6, - 2.9113296018693953e-5, + 2.9113296018693953e-5 ], linf=[ 3.298811230090237e-5, 4.032272476939269e-5, 4.032272526011127e-5, - 0.00012013725458537294, + 0.00012013725458537294 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -284,13 +284,13 @@ end 0.0008153911341517156, 0.0007768159701964676, 0.00047902606811690694, - 0.0015551846076348535, + 0.0015551846076348535 ], linf=[ 0.0029301131365355726, 0.0034427051471457304, 0.0028721569841545502, - 0.011125365074589944, + 0.011125365074589944 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -311,7 +311,7 @@ end 4.243843382379403, 4.128314378833922, 4.128314378397532, - 4.081366752807379, + 4.081366752807379 ], rtol = 0.05) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -328,11 +328,11 @@ end # division by 2.0 corresponds to normalization by the square root of the size of the domain l2=[ 0.0007492755162295128, 0.0007641875305302599, - 0.0007641875305306243, 0.0024232389721009447, + 0.0007641875305306243, 0.0024232389721009447 ], linf=[ 0.0015060064614331736, 0.0019371156800773726, - 0.0019371156800769285, 0.004742431684202408, + 0.0019371156800769285, 0.004742431684202408 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -348,11 +348,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_triangulate_pkg_mesh.jl"), l2=[ 2.344076909832665e-6, 1.8610002398709756e-6, - 2.4095132179484066e-6, 6.37330249340445e-6, + 2.4095132179484066e-6, 6.37330249340445e-6 ], linf=[ 2.509979394305084e-5, 2.2683711321080935e-5, - 2.6180377720841363e-5, 5.575278031910713e-5, + 2.6180377720841363e-5, 5.575278031910713e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -373,13 +373,13 @@ end 0.11140378947116614, 0.06598161188703612, 0.10448953167839563, - 0.16023209181809595, + 0.16023209181809595 ] ./ 2.0, linf=[ 0.24033843177853664, 0.1659992245272325, 0.1235468309508845, - 0.26911424973147735, + 0.26911424973147735 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -401,13 +401,13 @@ end 0.11141270656347146, 0.06598888014584121, 0.1044902203749932, - 0.16023037364774995, + 0.16023037364774995 ] ./ 2.0, linf=[ 0.2414760062126462, 0.1662111846065654, 0.12344140473946856, - 0.26978428189564774, + 0.26978428189564774 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -425,11 +425,11 @@ end cells_per_dimension=(8, 8), tspan=(0.0, 0.2), l2=[ 0.07097806723891838, 0.005168550941966817, - 0.013820912272220933, 0.03243357220022434, + 0.013820912272220933, 0.03243357220022434 ], linf=[ 0.4783395896753895, 0.02244629340135818, - 0.04023357731088538, 0.08515807256615027, + 0.04023357731088538, 0.08515807256615027 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -448,13 +448,13 @@ end 0.006680001611078062, 0.02151676347585447, 0.010696524235364626, - 0.15052841129694647, + 0.15052841129694647 ], linf=[ 0.01544756362800248, 0.09517304772476806, 0.021957154972646383, - 0.33773439650806303, + 0.33773439650806303 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -473,13 +473,13 @@ end 0.05685148333985476, 0.04308122135907089, 0.043081221359070915, - 0.21098131003847664, + 0.21098131003847664 ], linf=[ 0.2360672306096051, 0.16684417686971842, 0.1668441768697189, - 0.8572572782118661, + 0.8572572782118661 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -498,13 +498,13 @@ end 0.05565849298766252, 0.042322816017256494, 0.042322816017256466, - 0.2064212098324083, + 0.2064212098324083 ], linf=[ 0.23633287875008924, 0.16930148707515683, 0.16930148707515688, - 0.8587706761131937, + 0.8587706761131937 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -532,13 +532,13 @@ end 0.0008966318978421226, 0.0011418826379110242, 0.001141882637910878, - 0.0030918374335671393, + 0.0030918374335671393 ] ./ 2.0, linf=[ 0.0015281525343109337, 0.00162430960401716, 0.0016243096040242655, - 0.004447503691245913, + 0.004447503691245913 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -568,13 +568,13 @@ end 0.0014018725496871129, 0.0015887007320868913, 0.001588700732086329, - 0.003870926821031202, + 0.003870926821031202 ] ./ 2.0, linf=[ 0.0029541996523780867, 0.0034520465226108854, 0.003452046522624652, - 0.007677153211004928, + 0.007677153211004928 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -590,11 +590,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_fdsbp_periodic.jl"), l2=[ 1.333332033888785e-6, 2.044834627786368e-6, - 2.0448346278315884e-6, 5.282189803437435e-6, + 2.0448346278315884e-6, 5.282189803437435e-6 ], linf=[ 2.7000151703315822e-6, 3.988595025372632e-6, - 3.9885950240403645e-6, 8.848583036513702e-6, + 3.9885950240403645e-6, 8.848583036513702e-6 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -614,13 +614,13 @@ end 1.333332034149886e-6, 2.0448346280892024e-6, 2.0448346279766305e-6, - 5.282189803510037e-6, + 5.282189803510037e-6 ], linf=[ 2.700015170553627e-6, 3.988595024262409e-6, 3.988595024928543e-6, - 8.84858303740188e-6, + 8.84858303740188e-6 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -646,13 +646,13 @@ end 0.07318831033918516, 0.10039910610067465, 0.1003991061006748, - 0.2642450566234564, + 0.2642450566234564 ], linf=[ 0.36081081739439735, 0.5244468027020845, 0.5244468027020814, - 1.2210130256735705, + 1.2210130256735705 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -679,13 +679,13 @@ end 1.5440402410017893e-5, 1.4913189903083485e-5, 1.4913189902797073e-5, - 2.6104615985156992e-5, + 2.6104615985156992e-5 ], linf=[ 4.16334345412217e-5, 5.067812788173143e-5, 5.067812786885284e-5, - 9.887976803746312e-5, + 9.887976803746312e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -796,7 +796,7 @@ end 0.0018573693138866614, 0.0020807798141551166, 0.0, - 5.301188920230166e-5, + 5.301188920230166e-5 ], linf=[ 0.01692601228199253, @@ -807,7 +807,7 @@ end 0.00984964453299233, 0.01141708032148614, 0.0, - 0.0002992631411931389, + 0.0002992631411931389 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -827,13 +827,13 @@ end 0.0020316462913319046, 0.023669019044882247, 0.03446194752754684, - 1.9333465252381796e-15, + 1.9333465252381796e-15 ], linf=[ 0.010385010095182778, 0.08750628939565086, 0.12088392994348407, - 9.325873406851315e-15, + 9.325873406851315e-15 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -853,13 +853,13 @@ end 0.004180680322490383, 0.07026192411558974, 0.11815151697006446, - 2.329788936151192e-15, + 2.329788936151192e-15 ], linf=[ 0.02076003852980346, 0.29169601664914424, 0.5674183379872275, - 1.1546319456101628e-14, + 1.1546319456101628e-14 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -881,13 +881,13 @@ end 0.0008309356912456799, 0.01522451288799231, 0.016033969387208476, - 1.2820247308150876e-5, + 1.2820247308150876e-5 ], linf=[ 0.001888045014140971, 0.05466838692127718, 0.06345885709961152, - 3.3989933098554914e-5, + 3.3989933098554914e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -911,13 +911,13 @@ end 7.460461950323111e-5, 0.003685589808444905, 0.0039101604749887785, - 2.0636891126652983e-15, + 2.0636891126652983e-15 ], linf=[ 0.000259995400729629, 0.0072236204211630906, 0.010364675200833062, - 1.021405182655144e-14, + 1.021405182655144e-14 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_dgmulti_3d.jl b/test/test_dgmulti_3d.jl index d0671c0bfdf..5af8c9ee911 100644 --- a/test/test_dgmulti_3d.jl +++ b/test/test_dgmulti_3d.jl @@ -20,12 +20,12 @@ isdir(outdir) && rm(outdir, recursive = true) l2=[ 0.000354593110864001, 0.00041301573702385284, 0.00037934556184883277, 0.0003525767114354012, - 0.0013917457634530887, + 0.0013917457634530887 ], linf=[ 0.0036608123230692513, 0.005625540942772123, 0.0030565781898950206, 0.004158099048202857, - 0.01932716837214299, + 0.01932716837214299 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -47,14 +47,14 @@ end 0.017080219613061526, 0.016589517840793006, 0.015905000907070196, - 0.03903416208587798, + 0.03903416208587798 ] ./ sqrt(8), linf=[ 0.06856547797256729, 0.08225664880340489, 0.06925055630951782, 0.06913016119820181, - 0.19161418499621874, + 0.19161418499621874 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -76,14 +76,14 @@ end 0.00040146357607439464, 0.00040146357607564597, 0.000401463576075708, - 0.0015749412434154315, + 0.0015749412434154315 ] ./ sqrt(8), linf=[ 0.00036910287847780054, 0.00042659774184228283, 0.0004265977427213574, 0.00042659774250686233, - 0.00143803344597071, + 0.00143803344597071 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -102,14 +102,14 @@ end 0.003213659298633126, 0.003203104361527826, 0.0019407707245105426, - 0.0109274471764788, + 0.0109274471764788 ], linf=[ 0.01914151956454324, 0.0270195960766606, 0.026891238631389536, 0.019817504336972602, - 0.09645660501766873, + 0.09645660501766873 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -127,12 +127,12 @@ end l2=[ 0.0026311315195097097, 0.002914422404496567, 0.0029138891106640368, 0.002615140832315232, - 0.006881528610616624, + 0.006881528610616624 ], linf=[ 0.02099611487415931, 0.021314522450152307, 0.021288322783027613, 0.020273381695449455, - 0.05259874039006007, + 0.05259874039006007 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -149,12 +149,12 @@ end l2=[ 0.00036475807571383924, 0.00043404536371780537, 0.0003985850214093045, 0.0003683451584072326, - 0.00143503620472638, + 0.00143503620472638 ], linf=[ 0.0032278615418719347, 0.005620238272054934, 0.0030514261010661237, 0.0039871165455998, - 0.019282771780667396, + 0.019282771780667396 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -176,14 +176,14 @@ end 0.00044397204714598747, 0.0004439720471461567, 0.0004439720471464591, - 0.0016639410646990126, + 0.0016639410646990126 ] ./ sqrt(8), linf=[ 0.0003674374460325147, 0.0004253921341716982, 0.0004253921340786615, 0.0004253921340831024, - 0.0014333414071048267, + 0.0014333414071048267 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -207,14 +207,14 @@ end 0.002491315550718859, 0.0024913155507195303, 0.002491315550720031, - 0.008585818982343299, + 0.008585818982343299 ] ./ sqrt(8), linf=[ 0.003810078279323559, 0.004998778644230928, 0.004998778643986235, 0.0049987786444081195, - 0.016455044373650196, + 0.016455044373650196 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -234,14 +234,14 @@ end 0.06219350883951729, 0.062193508839503864, 0.08121963221634831, - 0.07082703570808184, + 0.07082703570808184 ], linf=[ 0.0007893509649821162, 0.1481953939988877, 0.14819539399791176, 0.14847291108358926, - 0.21313533492212855, + 0.21313533492212855 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -262,14 +262,14 @@ end 0.062193508839511434, 0.06219350883949677, 0.08121963221635205, - 0.07082703570765223, + 0.07082703570765223 ], linf=[ 0.000789350964946367, 0.14819539399525805, 0.14819539399590542, 0.14847291107658706, - 0.21313533492059378, + 0.21313533492059378 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -296,14 +296,14 @@ end 0.003318758964118284, 0.0033187589641182386, 0.003318758964118252, - 0.012689348410504253, + 0.012689348410504253 ], linf=[ 0.006118565824207778, 0.008486456080185167, 0.008486456080180282, 0.008486456080185611, - 0.035113544599208346, + 0.035113544599208346 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -332,14 +332,14 @@ end 0.004944363692625066, 0.0049443636926250435, 0.004944363692625037, - 0.01788695279620914, + 0.01788695279620914 ], linf=[ 0.013861851418853988, 0.02126572106620328, 0.021265721066209053, 0.021265721066210386, - 0.0771455289446683, + 0.0771455289446683 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -358,14 +358,14 @@ end 6.884047859361093e-5, 6.884047859363204e-5, 6.884047859361148e-5, - 0.000201107274617457, + 0.000201107274617457 ], linf=[ 0.0001337520020225913, 0.00011571467799287305, 0.0001157146779990903, 0.00011571467799376123, - 0.0003446082308800058, + 0.0003446082308800058 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_mpi_p4est_2d.jl b/test/test_mpi_p4est_2d.jl index 29de4efc6d0..6ac8133f5d2 100644 --- a/test/test_mpi_p4est_2d.jl +++ b/test/test_mpi_p4est_2d.jl @@ -136,13 +136,13 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "p4est_2d_dgsem") 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) # Ensure that we do not have excessive memory allocations diff --git a/test/test_mpi_p4est_3d.jl b/test/test_mpi_p4est_3d.jl index 4f9465b85dc..d6018e51c81 100644 --- a/test/test_mpi_p4est_3d.jl +++ b/test/test_mpi_p4est_3d.jl @@ -129,14 +129,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "p4est_3d_dgsem") 4.4993257426833716e-5, 5.10588457841744e-5, 5.102840924036687e-5, - 0.00019986264001630542, + 0.00019986264001630542 ], linf=[ 0.0016987332417202072, 0.003622956808262634, 0.002029576258317789, 0.0024206977281964193, - 0.008526972236273522, + 0.008526972236273522 ], tspan=(0.0, 0.01)) @@ -158,14 +158,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "p4est_3d_dgsem") 0.0014733349038567685, 0.00147333490385685, 0.001473334903856929, - 0.0028149479453087093, + 0.0028149479453087093 ], linf=[ 0.008070806335238156, 0.009007245083113125, 0.009007245083121784, 0.009007245083102688, - 0.01562861968368434, + 0.01562861968368434 ], tspan=(0.0, 1.0)) @@ -186,14 +186,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "p4est_3d_dgsem") 0.006192950051354618, 0.005970674274073704, 0.005965831290564327, - 0.02628875593094754, + 0.02628875593094754 ], linf=[ 0.3326911600075694, 0.2824952141320467, 0.41401037398065543, 0.45574161423218573, - 0.8099577682187109, + 0.8099577682187109 ], tspan=(0.0, 0.2), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -216,14 +216,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "p4est_3d_dgsem") 0.004122532789279737, 0.0042448149597303616, 0.0036361316700401765, - 0.007389845952982495, + 0.007389845952982495 ], linf=[ 0.04530610539892499, 0.02765695110527666, 0.05670295599308606, 0.048396544302230504, - 0.1154589758186293, + 0.1154589758186293 ]) # Ensure that we do not have excessive memory allocations diff --git a/test/test_mpi_t8code_2d.jl b/test/test_mpi_t8code_2d.jl index 75e65c8c380..dcbbf626e21 100644 --- a/test/test_mpi_t8code_2d.jl +++ b/test/test_mpi_t8code_2d.jl @@ -119,13 +119,13 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "t8code_2d_dgsem") 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) # Ensure that we do not have excessive memory allocations diff --git a/test/test_mpi_t8code_3d.jl b/test/test_mpi_t8code_3d.jl index 2e837f79ad8..c4ca592eaf9 100644 --- a/test/test_mpi_t8code_3d.jl +++ b/test/test_mpi_t8code_3d.jl @@ -96,14 +96,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "t8code_3d_dgsem") 4.4993257426833716e-5, 5.10588457841744e-5, 5.102840924036687e-5, - 0.00019986264001630542, + 0.00019986264001630542 ], linf=[ 0.0016987332417202072, 0.003622956808262634, 0.002029576258317789, 0.0024206977281964193, - 0.008526972236273522, + 0.008526972236273522 ], tspan=(0.0, 0.01)) @@ -125,14 +125,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "t8code_3d_dgsem") 0.0014733349038567685, 0.00147333490385685, 0.001473334903856929, - 0.0028149479453087093, + 0.0028149479453087093 ], linf=[ 0.008070806335238156, 0.009007245083113125, 0.009007245083121784, 0.009007245083102688, - 0.01562861968368434, + 0.01562861968368434 ], tspan=(0.0, 1.0)) @@ -153,14 +153,14 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "t8code_3d_dgsem") 0.006192950051354618, 0.005970674274073704, 0.005965831290564327, - 0.02628875593094754, + 0.02628875593094754 ], linf=[ 0.3326911600075694, 0.2824952141320467, 0.41401037398065543, 0.45574161423218573, - 0.8099577682187109, + 0.8099577682187109 ], tspan=(0.0, 0.2), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI diff --git a/test/test_mpi_tree.jl b/test/test_mpi_tree.jl index 6114e453e56..1e51da02c69 100644 --- a/test/test_mpi_tree.jl +++ b/test/test_mpi_tree.jl @@ -111,12 +111,12 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() l2=[ 0.00015687751816056159, 0.001025986772217084, - 0.0010259867722169909, + 0.0010259867722169909 ], linf=[ 0.0011986956416591976, 0.006423873516411049, - 0.006423873516411049, + 0.006423873516411049 ]) end end @@ -127,12 +127,12 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() l2=[ 8.61813235543625e-8, 5.619399844542781e-7, - 5.6193998447443e-7, + 5.6193998447443e-7 ], linf=[ 1.124861862180196e-6, 8.622436471039663e-6, - 8.622436470151484e-6, + 8.622436470151484e-6 ]) end @@ -141,12 +141,12 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() l2=[ 8.523077653955306e-6, 2.8779323653065056e-5, - 5.4549427691297846e-5, + 5.4549427691297846e-5 ], linf=[ 5.5227409524905013e-5, 0.0001454489597927185, - 0.00032396328684569653, + 0.00032396328684569653 ]) end @@ -156,12 +156,12 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() l2=[ 5.868147556427088e-6, 3.80517927324465e-5, - 3.805179273249344e-5, + 3.805179273249344e-5 ], linf=[ 3.701965498725812e-5, 0.0002122422943138247, - 0.00021224229431116015, + 0.00021224229431116015 ], atol=2.0e-12) #= required for CI on macOS =# end @@ -177,13 +177,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 9.321181253186009e-7, 1.4181210743438511e-6, 1.4181210743487851e-6, - 4.824553091276693e-6, + 4.824553091276693e-6 ], linf=[ 9.577246529612893e-6, 1.1707525976012434e-5, 1.1707525976456523e-5, - 4.8869615580926506e-5, + 4.8869615580926506e-5 ], rtol=2000 * sqrt(eps())) end @@ -198,13 +198,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 4.8226610349853444e-5, 4.117706709270575e-5, 4.1177067092959676e-5, - 0.00012205252427437389, + 0.00012205252427437389 ], linf=[ 0.0003543874851490436, 0.0002973166773747593, 0.0002973166773760916, - 0.001154106793870291, + 0.001154106793870291 ], # Let this test run until the end to cover the time-dependent lines # of the indicator and the MPI-specific AMR code. @@ -220,13 +220,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 2.259440511766445e-6, 2.318888155713922e-6, 2.3188881557894307e-6, - 6.3327863238858925e-6, + 6.3327863238858925e-6 ], linf=[ 1.498738264560373e-5, 1.9182011928187137e-5, 1.918201192685487e-5, - 6.0526717141407005e-5, + 6.0526717141407005e-5 ], rtol=0.001) end @@ -239,13 +239,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 0.061751715597716854, 0.05018223615408711, 0.05018989446443463, - 0.225871559730513, + 0.225871559730513 ], linf=[ 0.29347582879608825, 0.31081249232844693, 0.3107380389947736, - 1.0540358049885143, + 1.0540358049885143 ]) @testset "error-based step size control" begin @@ -262,13 +262,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 0.061653630426688116, 0.05006930431098764, 0.05007694316484242, - 0.22550689872331683, + 0.22550689872331683 ] rtol=1.0e-4 @test errors.linf≈[ 0.28516937484583693, 0.2983633696512788, 0.297812036335975, - 1.027368795517512, + 1.027368795517512 ] rtol=1.0e-4 end end @@ -281,13 +281,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 0.00013492249515826863, 0.006615696236378061, 0.006782108219800376, - 0.016393831451740604, + 0.016393831451740604 ], linf=[ 0.0020782600954247776, 0.08150078921935999, 0.08663621974991986, - 0.2829930622010579, + 0.2829930622010579 ], rtol=0.001) end @@ -299,13 +299,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 0.0017208369388227673, 0.09628684992237334, 0.09620157717330868, - 0.1758809552387432, + 0.1758809552387432 ], linf=[ 0.021869936355319086, 0.9956698009442038, 1.0002507727219028, - 2.223249697515648, + 2.223249697515648 ]) end @@ -316,13 +316,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 5.051719943432265e-5, 0.0022574259317084747, 0.0021755998463189713, - 0.004346492398617521, + 0.004346492398617521 ], linf=[ 0.0012880114865917447, 0.03857193149447702, 0.031090457959835893, - 0.12125130332971423, + 0.12125130332971423 ], coverage_override=(maxiters = 6,)) end @@ -335,13 +335,13 @@ CI_ON_WINDOWS = (get(ENV, "GITHUB_ACTIONS", false) == "true") && Sys.iswindows() 0.0017158367642679273, 0.09619888722871434, 0.09616432767924141, - 0.17553381166255197, + 0.17553381166255197 ], linf=[ 0.021853862449723982, 0.9878047229255944, 0.9880191167111795, - 2.2154030488035588, + 2.2154030488035588 ], rtol=0.001) end diff --git a/test/test_p4est_2d.jl b/test/test_p4est_2d.jl index aad6337ffcd..cba79b58b70 100644 --- a/test/test_p4est_2d.jl +++ b/test/test_p4est_2d.jl @@ -132,13 +132,13 @@ end 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -156,7 +156,7 @@ end 2.063350241405049e-15, 1.8571016296925367e-14, 3.1769447886391905e-14, - 1.4104095258528071e-14, + 1.4104095258528071e-14 ], linf=[1.9539925233402755e-14, 2e-12, 4.8e-12, 4e-12], atol=2.0e-12,) @@ -176,13 +176,13 @@ end 9.53984675e-02, 1.05633455e-01, 1.05636158e-01, - 3.50747237e-01, + 3.50747237e-01 ], linf=[ 2.94357464e-01, 4.07893014e-01, 3.97334516e-01, - 1.08142520e+00, + 1.08142520e+00 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -201,13 +201,13 @@ end 0.09527896382082567, 0.10557894830184737, 0.10559379376154387, - 0.3503791205165925, + 0.3503791205165925 ], linf=[ 0.2733486454092644, 0.3877283966722886, 0.38650482703821426, - 1.0053712251056308, + 1.0053712251056308 ], tspan=(0.0, 1.0), volume_flux=flux_chandrashekar) @@ -228,13 +228,13 @@ end 0.09539953f0, 0.10563527f0, 0.105637245f0, - 0.3507514f0, + 0.3507514f0 ], linf=[ 0.2942562f0, 0.4079147f0, 0.3972956f0, - 1.0810697f0, + 1.0810697f0 ], tspan=(0.0f0, 1.0f0), rtol=10 * sqrt(eps(Float32)), # to make CI pass @@ -255,13 +255,13 @@ end 3.76149952e-01, 2.46970327e-01, 2.46970327e-01, - 1.28889042e+00, + 1.28889042e+00 ], linf=[ 1.22139001e+00, 1.17742626e+00, 1.17742626e+00, - 6.20638482e+00, + 6.20638482e+00 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -281,13 +281,13 @@ end 0.4573787784168518, 0.28520972760728397, 0.28527281808006966, - 1.2881460122982442, + 1.2881460122982442 ], linf=[ 1.644411040701827, 1.6743368119653912, 1.6760847977977988, - 6.268843623142863, + 6.268843623142863 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -296,6 +296,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -306,13 +310,13 @@ end 0.4229948321239887, 0.2559038337457483, 0.2559038337457484, - 1.2990046683564136, + 1.2990046683564136 ], linf=[ 1.4989357969730492, 1.325456585141623, 1.3254565851416251, - 6.331283015053501, + 6.331283015053501 ], surface_flux=flux_hllc, tspan=(0.0, 0.3)) @@ -332,13 +336,13 @@ end 0.40853279043747015, 0.25356771650524296, 0.2535677165052422, - 1.2984601729572691, + 1.2984601729572691 ], linf=[ 1.3840909333784284, 1.3077772519086124, 1.3077772519086157, - 6.298798630968632, + 6.298798630968632 ], surface_flux=flux_hlle, tspan=(0.0, 0.3)) @@ -358,13 +362,13 @@ end 0.6321850210104147, 0.38691446170269167, 0.3868695626809587, - 1.0657553825683956, + 1.0657553825683956 ], linf=[ 2.7602280007469666, 2.3265993814913672, 2.3258078438689673, - 2.1577683028925416, + 2.1577683028925416 ], tspan=(0.0, 0.3), coverage_override=(maxiters = 6,)) @@ -384,13 +388,13 @@ end 0.02026685991647352, 0.017467584076280237, 0.011378371604813321, - 0.05138942558296091, + 0.05138942558296091 ], linf=[ 0.35924402060711524, 0.32068389566068806, 0.2361141752119986, - 0.9289840057748628, + 0.9289840057748628 ], tspan=(0.0, 0.15)) # Ensure that we do not have excessive memory allocations @@ -409,13 +413,13 @@ end 0.004191480950848891, 0.003781298410569231, 0.0013470418422981045, - 0.03262817609394949, + 0.03262817609394949 ], linf=[ 2.0581500751947113, 2.2051301367971288, 3.8502467979250254, - 17.750333649853616, + 17.750333649853616 ], tspan=(0.0, 0.0001), rtol=1.0e-7, @@ -438,13 +442,13 @@ end 0.051359355290192046, 0.4266034859911273, 0.2438304855475594, - 4.11487176105527, + 4.11487176105527 ], linf=[ 6.902000373057003, 53.95714139820832, 24.241610279839758, - 561.0630401858057, + 561.0630401858057 ], tspan=(0.0, 0.0001), skip_coverage=true) @@ -466,13 +470,13 @@ end 0.02676082999794676, 0.05110830068968181, 0.03205164257040607, - 0.1965981012724311, + 0.1965981012724311 ], linf=[ 3.6830683476364476, 4.284442685012427, 6.857777546171545, - 31.749285097390576, + 31.749285097390576 ], tspan=(0.0, 0.001), skip_coverage=true) @@ -495,13 +499,13 @@ end 0.11085870166618325, 0.23309905989870722, 0.13505351590735631, - 0.7932047512585592, + 0.7932047512585592 ], linf=[ 2.9808773737943564, 4.209364526217892, 6.265341002817672, - 24.077904874883338, + 24.077904874883338 ], tspan=(0.0, 0.02)) # Ensure that we do not have excessive memory allocations @@ -510,6 +514,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -518,11 +526,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_NACA6412airfoil_mach2.jl"), l2=[ 0.19107654776276498, 0.3545913719444839, - 0.18492730895077583, 0.817927213517244, + 0.18492730895077583, 0.817927213517244 ], linf=[ 2.5397624311491946, 2.7075156425517917, 2.200980534211764, - 9.031153939238115, + 9.031153939238115 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -541,13 +549,13 @@ end 0.00024871265138964204, 0.0003370077102132591, 0.0003370077102131964, - 0.0007231525513793697, + 0.0007231525513793697 ], linf=[ 0.0015813032944647087, 0.0020494288423820173, 0.0020494288423824614, - 0.004793821195083758, + 0.004793821195083758 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -566,13 +574,13 @@ end 9.168126407325352e-5, 0.0009795410115453788, 0.002546408320320785, - 3.941189812642317e-6, + 3.941189812642317e-6 ], linf=[ 0.0009903782521019089, 0.0059752684687262025, 0.010941106525454103, - 1.2129488214718265e-5, + 1.2129488214718265e-5 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -638,13 +646,13 @@ end 0.006047938590548741, 0.0040953286019907035, 0.004222698522497298, - 0.006269492499336128, + 0.006269492499336128 ], linf=[ 0.06386175207349379, 0.0378926444850457, 0.041759728067967065, - 0.06430136016259067, + 0.06430136016259067 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -662,13 +670,13 @@ end 0.00011914390523852561, 0.00010776028621724485, 6.139954358305467e-5, - 0.0003067693731825959, + 0.0003067693731825959 ], linf=[ 0.1653075586200805, 0.1868437275544909, 0.09772818519679008, - 0.4311796171737692, + 0.4311796171737692 ], tspan=(0.0, 0.001)) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -699,11 +707,11 @@ end "elixir_euler_NACA0012airfoil_mach085.jl"), l2=[ 5.56114097044427e-7, 6.62284247153255e-6, - 1.0823259724601275e-5, 0.000659804574787503, + 1.0823259724601275e-5, 0.000659804574787503 ], linf=[ 0.002157589754528455, 0.039163189253511164, - 0.038386804399707625, 2.6685831417913914, + 0.038386804399707625, 2.6685831417913914 ], amr_interval=1, base_level=0, med_level=1, max_level=1, @@ -744,13 +752,13 @@ end 0.39957047631960346, 0.21006912294983154, 0.21006903549932, - 0.6280328163981136, + 0.6280328163981136 ], linf=[ 2.20417889887697, 1.5487238480003327, 1.5486788679247812, - 2.4656795949035857, + 2.4656795949035857 ], tspan=(0.0, 0.5), mesh=P4estMesh((64, 64), polydeg = 3, @@ -772,13 +780,13 @@ end 0.11134260363848127, 0.11752357091804219, 0.11829112104640764, - 0.7557891142955036, + 0.7557891142955036 ], linf=[ 0.5728647031475109, 0.8353132977670252, 0.8266797080712205, - 3.9792506230548317, + 3.9792506230548317 ], tspan=(0.0, 0.1), coverage_override=(maxiters = 6,)) diff --git a/test/test_p4est_3d.jl b/test/test_p4est_3d.jl index 3432bd69b23..869b7554bf2 100644 --- a/test/test_p4est_3d.jl +++ b/test/test_p4est_3d.jl @@ -132,14 +132,14 @@ end 4.4993257426833716e-5, 5.10588457841744e-5, 5.102840924036687e-5, - 0.00019986264001630542, + 0.00019986264001630542 ], linf=[ 0.0016987332417202072, 0.003622956808262634, 0.002029576258317789, 0.0024206977281964193, - 0.008526972236273522, + 0.008526972236273522 ], tspan=(0.0, 0.01)) # Ensure that we do not have excessive memory allocations @@ -160,14 +160,14 @@ end 0.0014733349038567685, 0.00147333490385685, 0.001473334903856929, - 0.0028149479453087093, + 0.0028149479453087093 ], linf=[ 0.008070806335238156, 0.009007245083113125, 0.009007245083121784, 0.009007245083102688, - 0.01562861968368434, + 0.01562861968368434 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -187,14 +187,14 @@ end 1.941857343642486e-14, 2.0232366394187278e-14, 2.3381518645408552e-14, - 7.083114561232324e-14, + 7.083114561232324e-14 ], linf=[ 7.269740365245525e-13, 3.289868377720495e-12, 4.440087186807773e-12, 3.8686831516088205e-12, - 9.412914891981927e-12, + 9.412914891981927e-12 ], tspan=(0.0, 0.03)) # Ensure that we do not have excessive memory allocations @@ -214,14 +214,14 @@ end 4.889826056731442e-15, 2.2921260987087585e-15, 4.268460455702414e-15, - 1.1356712092620279e-14, + 1.1356712092620279e-14 ], linf=[ 7.749356711883593e-14, 2.8792246364872653e-13, 1.1121659149182506e-13, 3.3228975127030935e-13, - 9.592326932761353e-13, + 9.592326932761353e-13 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -240,12 +240,12 @@ end l2=[ 6.530157034651212e-16, 1.6057829680004379e-15, 3.31107455378537e-15, 3.908829498281281e-15, - 5.048390610424672e-15, + 5.048390610424672e-15 ], linf=[ 4.884981308350689e-15, 1.1921019726912618e-14, 1.5432100042289676e-14, 2.298161660974074e-14, - 6.039613253960852e-14, + 6.039613253960852e-14 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -266,14 +266,14 @@ end Float32(1.6057829680004379e-15), Float32(3.31107455378537e-15), Float32(3.908829498281281e-15), - Float32(5.048390610424672e-15), + Float32(5.048390610424672e-15) ], linf=[ Float32(4.884981308350689e-15), Float32(1.1921019726912618e-14), Float32(1.5432100042289676e-14), Float32(2.298161660974074e-14), - Float32(6.039613253960852e-14), + Float32(6.039613253960852e-14) ], RealT=Float32) # Ensure that we do not have excessive memory allocations @@ -293,14 +293,14 @@ end 4.889826056731442e-15, 2.2921260987087585e-15, 4.268460455702414e-15, - 1.1356712092620279e-14, + 1.1356712092620279e-14 ], linf=[ 7.749356711883593e-14, 4.513472928735496e-13, 2.9790059308254513e-13, 1.057154364048074e-12, - 1.6271428648906294e-12, + 1.6271428648906294e-12 ], tspan=(0.0, 0.1), surface_flux=flux_hllc) @@ -321,14 +321,14 @@ end 0.006192950051354618, 0.005970674274073704, 0.005965831290564327, - 0.02628875593094754, + 0.02628875593094754 ], linf=[ 0.3326911600075694, 0.2824952141320467, 0.41401037398065543, 0.45574161423218573, - 0.8099577682187109, + 0.8099577682187109 ], tspan=(0.0, 0.2), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -349,14 +349,14 @@ end 0.006216054794583285, 0.006020401857347216, 0.006019175682769779, - 0.026228080232814154, + 0.026228080232814154 ], linf=[ 0.3169376449662026, 0.28950510175646726, 0.4402523227566396, 0.4869168122387365, - 0.7999141641954051, + 0.7999141641954051 ], tspan=(0.0, 0.2), volume_flux=flux_chandrashekar, @@ -378,14 +378,14 @@ end 4.33260474e-02, 4.33260474e-02, 4.33260474e-02, - 3.75260911e-01, + 3.75260911e-01 ], linf=[ 7.45329845e-01, 3.21754792e-01, 3.21754792e-01, 3.21754792e-01, - 4.76151527e+00, + 4.76151527e+00 ], tspan=(0.0, 0.3), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -406,14 +406,14 @@ end 0.04863386374672001, 0.048633863746720116, 0.04863386374672032, - 0.3751015774232693, + 0.3751015774232693 ], linf=[ 0.789241521871487, 0.42046970270100276, 0.42046970270100276, 0.4204697027010028, - 4.730877375538398, + 4.730877375538398 ], tspan=(0.0, 0.3), surface_flux=flux_hlle) @@ -435,14 +435,14 @@ end 5.4254175153621895e-6, 5.677698851333843e-6, 5.8017136892469794e-6, - 1.3637854615117974e-5, + 1.3637854615117974e-5 ], linf=[ 0.00013996924184311865, 0.00013681539559939893, 0.00013681539539733834, 0.00013681539541021692, - 0.00016833038543762058, + 0.00016833038543762058 ], # Decrease tolerance of adaptive time stepping to get similar results across different systems abstol=1.0e-11, reltol=1.0e-11, @@ -465,14 +465,14 @@ end 3.8630261900166194e-5, 3.8672287531936816e-5, 3.6865116098660796e-5, - 0.05508620970403884, + 0.05508620970403884 ], linf=[ 2.268845333053271e-6, 0.000531462302113539, 0.0005314624461298934, 0.0005129931254772464, - 0.7942778058932163, + 0.7942778058932163 ], tspan=(0.0, 2e2), coverage_override=(trees_per_cube_face = (1, 1), polydeg = 3)) # Prevent long compile time in CI @@ -494,14 +494,14 @@ end 0.00021710076010951073, 0.0004386796338203878, 0.00020836270267103122, - 0.07601887903440395, + 0.07601887903440395 ], linf=[ 1.9107530539574924e-5, 0.02980358831035801, 0.048476331898047564, 0.02200137344113612, - 4.848310144356219, + 4.848310144356219 ], tspan=(0.0, 1e2), # Decrease tolerance of adaptive time stepping to get similar results across different systems @@ -525,14 +525,14 @@ end 0.004122532789279737, 0.0042448149597303616, 0.0036361316700401765, - 0.007389845952982495, + 0.007389845952982495 ], linf=[ 0.04530610539892499, 0.02765695110527666, 0.05670295599308606, 0.048396544302230504, - 0.1154589758186293, + 0.1154589758186293 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -600,11 +600,11 @@ end l2=[ 0.04452389418193219, 0.03688186699434862, 0.03688186699434861, 0.03688186699434858, - 0.044523894181932186, + 0.044523894181932186 ], linf=[ 0.2295447498696467, 0.058369658071546704, - 0.05836965807154648, 0.05836965807154648, 0.2295447498696468, + 0.05836965807154648, 0.05836965807154648, 0.2295447498696468 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -623,14 +623,14 @@ end 0.018525073963833696, 0.019102348105917946, 0.01920515438943838, - 0.15060493968460148, + 0.15060493968460148 ], linf=[ 0.2994949779783401, 0.5530175050084679, 0.5335803757792128, 0.5647252867336123, - 3.6462732329242566, + 3.6462732329242566 ], tspan=(0.0, 0.025), coverage_override=(maxiters = 6,)) diff --git a/test/test_paper_self_gravitating_gas_dynamics.jl b/test/test_paper_self_gravitating_gas_dynamics.jl index 10b4f93ad74..1e097efd51b 100644 --- a/test/test_paper_self_gravitating_gas_dynamics.jl +++ b/test/test_paper_self_gravitating_gas_dynamics.jl @@ -21,13 +21,13 @@ const EXAMPLES_DIR = pkgdir(Trixi, "examples", "paper_self_gravitating_gas_dynam 0.0001740977055972079, 0.0003369355182519592, 0.0003369355182518708, - 0.0006099171220334989, + 0.0006099171220334989 ], linf=[ 0.001079347149189669, 0.0018836938381321389, 0.001883693838132583, - 0.003971575376718217, + 0.003971575376718217 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -45,13 +45,13 @@ end 1.7187201161597772e-5, 2.678065111772951e-5, 2.678065111783027e-5, - 4.952504160091526e-5, + 4.952504160091526e-5 ], linf=[ 0.0001501749544159381, 0.00016549482504535362, 0.00016549482504601976, - 0.0004372960291432193, + 0.0004372960291432193 ], polydeg=4) # Ensure that we do not have excessive memory allocations @@ -69,12 +69,12 @@ end l2=[ 0.003154024896093942, 0.012394432074951856, - 0.02185973823794725, + 0.02185973823794725 ], linf=[ 0.01731850928579215, 0.07843510773347553, - 0.11242300176349201, + 0.11242300176349201 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -91,12 +91,12 @@ end l2=[ 0.0002511283012128458, 0.0008808243846610255, - 0.0016313343228567005, + 0.0016313343228567005 ], linf=[ 0.0017290715087938668, 0.003129184465704738, - 0.01000728849316701, + 0.01000728849316701 ], polydeg=4) # Ensure that we do not have excessive memory allocations @@ -115,13 +115,13 @@ end 0.00024871265138964204, 0.0003370077102132591, 0.0003370077102131964, - 0.0007231525513793697, + 0.0007231525513793697 ], linf=[ 0.0015813032944647087, 0.0020494288423820173, 0.0020494288423824614, - 0.004793821195083758, + 0.004793821195083758 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -140,13 +140,13 @@ end 1.9537712148648045e-5, 2.7564396197947587e-5, 2.7564396197967635e-5, - 5.688838772067586e-5, + 5.688838772067586e-5 ], linf=[ 0.00012335710672761735, 0.00020086268350816283, 0.00020086268350727465, - 0.0004962155455632278, + 0.0004962155455632278 ], tspan=(0.0, 0.1), polydeg=4) # Ensure that we do not have excessive memory allocations @@ -165,13 +165,13 @@ end 0.00024871265138959434, 0.000337007710281087, 0.0003370077102811394, - 0.0007231525515231289, + 0.0007231525515231289 ], linf=[ 0.0015813032941613958, 0.002049428843978518, 0.0020494288439798503, - 0.004793821198143977, + 0.004793821198143977 ], tspan=(0.0, 0.1), timestep_gravity=Trixi.timestep_gravity_erk51_3Sstar!) @@ -191,13 +191,13 @@ end 0.0002487126513894034, 0.00033700771023049785, 0.00033700771023048245, - 0.0007231525514158737, + 0.0007231525514158737 ], linf=[ 0.0015813032943847727, 0.002049428842844314, 0.0020494288428452023, - 0.004793821195971937, + 0.004793821195971937 ], tspan=(0.0, 0.1), timestep_gravity=Trixi.timestep_gravity_erk53_3Sstar!) @@ -215,16 +215,16 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_jeans_instability.jl"), l2=[ - 10733.63378538114, - 13356.780607423452, + 10733.28239179182, + 13356.0533511341, 1.6722844879795038e-6, - 26834.076821148774, + 26833.19833691448 ], linf=[ - 15194.296424901113, - 18881.481685044182, + 15193.794080890715, + 18880.45819785685, 6.809726988008751e-6, - 37972.99700513482, + 37971.74113135785 ], tspan=(0.0, 0.1), atol=4.0e-6) @@ -242,16 +242,16 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_jeans_instability.jl"), l2=[ - 10734.598193238024, - 13358.217234481384, + 10734.653995035567, + 13357.709699808021, 1.911011743371934e-6, - 26836.487841241516, + 26836.62734552835 ], linf=[ - 15195.661004798487, - 18883.512035906537, + 15195.73481107317, + 18882.799120551972, 7.867948710816926e-6, - 37976.408478975296, + 37976.592992473394 ], tspan=(0.0, 0.1), atol=4.0e-6, # the background field is reatively large, so this corresponds to our usual atol @@ -304,13 +304,13 @@ end 0.046315994852653024, 0.0650818006233669, 0.06508180062336677, - 0.4896707211656037, + 0.4896707211656037 ], linf=[ 2.3874843337593776, 4.07876384374792, 4.07876384374792, - 16.23914384809855, + 16.23914384809855 ], tspan=(0.0, 0.05), coverage_override=(maxiters = 2,)) @@ -331,13 +331,13 @@ end 0.00289222135995042, 0.013724813590853825, 0.013724813590853832, - 0.05822904710548214, + 0.05822904710548214 ], linf=[ 0.26361780693997594, 1.3908873830688688, 1.3908873830688688, - 4.066701303607613, + 4.066701303607613 ], tspan=(0.0, 0.005), initial_refinement_level=8, amr_callback=TrivialCallback()) diff --git a/test/test_parabolic_1d.jl b/test/test_parabolic_1d.jl index 38bebdcce1d..062e6363a2f 100644 --- a/test/test_parabolic_1d.jl +++ b/test/test_parabolic_1d.jl @@ -67,12 +67,12 @@ end l2=[ 0.0001133835907077494, 6.226282245610444e-5, - 0.0002820171699999139, + 0.0002820171699999139 ], linf=[ 0.0006255102377159538, 0.00036195501456059986, - 0.0016147729485886941, + 0.0016147729485886941 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -94,12 +94,12 @@ end l2=[ 0.00011310615871043463, 6.216495207074201e-5, - 0.00028195843110817814, + 0.00028195843110817814 ], linf=[ 0.0006240837363233886, 0.0003616694320713876, - 0.0016147339542413874, + 0.0016147339542413874 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -117,12 +117,12 @@ end l2=[ 0.00047023310868269237, 0.00032181736027057234, - 0.0014966266486095025, + 0.0014966266486095025 ], linf=[ 0.002996375101363302, 0.0028639041695096433, - 0.012691132694550689, + 0.012691132694550689 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -144,12 +144,12 @@ end l2=[ 0.0004608500483647771, 0.00032431091222851285, - 0.0015159733360626845, + 0.0015159733360626845 ], linf=[ 0.002754803146635787, 0.0028567713744625124, - 0.012941793784197131, + 0.012941793784197131 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -170,12 +170,12 @@ end l2=[ 2.5278845598681636e-5, 2.5540145802666872e-5, - 0.0001211867535580826, + 0.0001211867535580826 ], linf=[ 0.0001466387202588848, 0.00019422419092429135, - 0.0009556449835592673, + 0.0009556449835592673 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -197,12 +197,12 @@ end l2=[ 2.4593521887223632e-5, 2.3928212900127102e-5, - 0.00011252332663824173, + 0.00011252332663824173 ], linf=[ 0.00011850494672183132, 0.00018987676556476442, - 0.0009597461727750556, + 0.0009597461727750556 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_parabolic_2d.jl b/test/test_parabolic_2d.jl index 39511a6d4eb..d1547f23915 100644 --- a/test/test_parabolic_2d.jl +++ b/test/test_parabolic_2d.jl @@ -127,13 +127,13 @@ end 0.0015355076812510957, 0.0033843168272696756, 0.0036531858107443434, - 0.009948436427519214, + 0.009948436427519214 ], linf=[ 0.005522560467190019, 0.013425258500730508, 0.013962115643482154, - 0.027483102120502423, + 0.027483102120502423 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -153,13 +153,13 @@ end 0.004255101916146187, 0.011118488923215765, 0.011281831283462686, - 0.03573656447388509, + 0.03573656447388509 ], linf=[ 0.015071710669706473, 0.04103132025858458, 0.03990424085750277, - 0.1309401718598764, + 0.1309401718598764 ],) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -179,13 +179,13 @@ end 0.00022156125227115747, 0.028318325921401, 0.009509168701070296, - 0.028267900513550506, + 0.028267900513550506 ], linf=[ 0.001562278941298234, 0.14886653390744856, 0.0716323565533752, - 0.19472785105241996, + 0.19472785105241996 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -276,13 +276,13 @@ end 0.002111672530658797, 0.0034322351490857846, 0.0038742528195910416, - 0.012469246082568561, + 0.012469246082568561 ], linf=[ 0.012006418939223495, 0.035520871209746126, 0.024512747492231427, - 0.11191122588756564, + 0.11191122588756564 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -306,13 +306,13 @@ end 0.002103629650383915, 0.003435843933396454, 0.00386735987813341, - 0.012670355349235728, + 0.012670355349235728 ], linf=[ 0.012006261793147788, 0.03550212518982032, 0.025107947319661185, - 0.11647078036571124, + 0.11647078036571124 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -333,13 +333,13 @@ end 0.0021403742517389513, 0.0034258287094908572, 0.0038915122886898517, - 0.012506862343013842, + 0.012506862343013842 ], linf=[ 0.012244412004628336, 0.03507559186162224, 0.024580892345558894, - 0.11425600758350107, + 0.11425600758350107 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -364,13 +364,13 @@ end 0.0021349737347844907, 0.0034301388278203033, 0.0038928324474291572, - 0.012693611436230873, + 0.012693611436230873 ], linf=[ 0.01224423627586213, 0.035054066314102905, 0.025099598504931965, - 0.11795616324751634, + 0.11795616324751634 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -391,13 +391,13 @@ end 0.0021116725306633594, 0.0034322351490827557, 0.0038742528196093542, - 0.012469246082526909, + 0.012469246082526909 ], linf=[ 0.012006418939291663, 0.035520871209594115, 0.024512747491801577, - 0.11191122588591007, + 0.11191122588591007 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -454,13 +454,13 @@ end 0.00015144571529699053, 0.018766076072331623, 0.007065070765652574, - 0.0208399005734258, + 0.0208399005734258 ], linf=[ 0.0014523369373669048, 0.12366779944955864, 0.05532450997115432, - 0.16099927805328207, + 0.16099927805328207 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -479,13 +479,13 @@ end 0.005155557460409018, 0.4048446934219344, 0.43040068852937047, - 1.1255130552079322, + 1.1255130552079322 ], linf=[ 0.03287305649809613, 1.1656793717431393, 1.3917196016246969, - 8.146587380114653, + 8.146587380114653 ], tspan=(0.0, 0.7)) end @@ -497,13 +497,13 @@ end 0.001452856280034929, 0.0007538775539989481, 0.0007538775539988681, - 0.011035506549989587, + 0.011035506549989587 ], linf=[ 0.003291912841311362, 0.002986462478096974, 0.0029864624780958637, - 0.0231954665514138, + 0.0231954665514138 ], tspan=(0.0, 1.0)) end @@ -616,13 +616,13 @@ end 0.0003811978985836709, 0.0005874314969169538, 0.0009142898787923481, - 0.0011613918899727263, + 0.0011613918899727263 ], linf=[ 0.0021633623982135752, 0.009484348274135372, 0.004231572066492217, - 0.011661660275365193, + 0.011661660275365193 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -642,13 +642,13 @@ end 0.00040364962558511795, 0.0005869762481506936, 0.00091488537427274, - 0.0011984191566376762, + 0.0011984191566376762 ], linf=[ 0.0024993634941723464, 0.009487866203944725, 0.004505829506628117, - 0.011634902776245681, + 0.011634902776245681 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -668,13 +668,13 @@ end 0.00028716166408816073, 0.08101204560401647, 0.02099595625377768, - 0.05008149754143295, + 0.05008149754143295 ], linf=[ 0.014804500261322406, 0.9513271652357098, 0.7223919625994717, - 1.4846907331004786, + 1.4846907331004786 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -692,11 +692,11 @@ end tspan=(0.0, 1.0), l2=[ 0.0005323841980601085, 0.07892044543547208, - 0.02909671646389337, 0.11717468256112017, + 0.02909671646389337, 0.11717468256112017 ], linf=[ 0.006045292737899444, 0.9233292581786228, - 0.7982129977236198, 1.6864546235292153, + 0.7982129977236198, 1.6864546235292153 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_parabolic_3d.jl b/test/test_parabolic_3d.jl index 863daeeaf35..2690a08cbb9 100644 --- a/test/test_parabolic_3d.jl +++ b/test/test_parabolic_3d.jl @@ -21,14 +21,14 @@ isdir(outdir) && rm(outdir, recursive = true) 0.000659263490965341, 0.0007776436127362806, 0.0006592634909662951, - 0.0038073628897809185, + 0.0038073628897809185 ], linf=[ 0.0017039861523615585, 0.002628561703560073, 0.003531057425112172, 0.0026285617036090336, - 0.015587829540351095, + 0.015587829540351095 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -49,14 +49,14 @@ end 0.0021322235533273513, 0.0027873741447455194, 0.0024587473070627423, - 0.00997836818019202, + 0.00997836818019202 ], linf=[ 0.006341750402837576, 0.010306014252246865, 0.01520740250924979, 0.010968264045485565, - 0.047454389831591115, + 0.047454389831591115 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -77,14 +77,14 @@ end 0.015589736382772248, 0.015589736382771884, 0.021943924667273653, - 0.01927370280244222, + 0.01927370280244222 ], linf=[ 0.0006268463584697681, 0.03218881662749007, 0.03218881662697948, 0.053872495395614256, - 0.05183822000984151, + 0.05183822000984151 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -105,14 +105,14 @@ end 0.002653449504302844, 0.002898264205184629, 0.002653449504302853, - 0.009511572365085706, + 0.009511572365085706 ], linf=[ 0.013680656759085918, 0.0356910450154318, 0.023526343547736236, 0.035691045015431855, - 0.11482570604041165, + 0.11482570604041165 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -137,14 +137,14 @@ end 0.0026554367897028506, 0.002892730402724066, 0.002655436789702817, - 0.009596351796609566, + 0.009596351796609566 ], linf=[ 0.013680508110645473, 0.035673446359424356, 0.024024936779729028, 0.03567344635942474, - 0.11839497110809383, + 0.11839497110809383 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -166,14 +166,14 @@ end 0.0026524750946399327, 0.00290860030832445, 0.0026524750946399396, - 0.009509568981439294, + 0.009509568981439294 ], linf=[ 0.01387936112914212, 0.03526260609304053, 0.023554197097368997, 0.035262606093040896, - 0.11719963716509518, + 0.11719963716509518 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -199,14 +199,14 @@ end 0.002654768259143932, 0.002907031063651286, 0.002654768259143901, - 0.009587792882971452, + 0.009587792882971452 ], linf=[ 0.01387919380137137, 0.035244084526358944, 0.02398614622061363, 0.03524408452635828, - 0.12005056512506407, + 0.12005056512506407 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -228,14 +228,14 @@ end 0.002653449504301736, 0.0028982642051960006, 0.0026534495043017384, - 0.009511572364811033, + 0.009511572364811033 ], linf=[ 0.013680656758949583, 0.035691045015224444, 0.02352634354676752, 0.035691045015223424, - 0.11482570603751441, + 0.11482570603751441 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -273,14 +273,14 @@ end 0.0006473493036803503, 0.0007705277238213672, 0.0006280517917198335, - 0.000903927789884075, + 0.000903927789884075 ] @test linf_error ≈ [ 0.0023694155365339142, 0.010634932622402863, 0.006772070862236412, 0.010640551561726901, - 0.019256819038719897, + 0.019256819038719897 ] # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -301,14 +301,14 @@ end 0.015684268393762454, 0.01568426839376248, 0.021991909545192333, - 0.02825413672911425, + 0.02825413672911425 ], linf=[ 0.0008410587892853094, 0.04740176181772552, 0.04740176181772507, 0.07483494924031157, - 0.150181591534448, + 0.150181591534448 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -348,14 +348,14 @@ end 0.006266480163542894, 0.006266489911815533, 0.008829222305770226, - 0.0032859166842329228, + 0.0032859166842329228 ] @test linf_error ≈ [ 0.0002943968186086554, 0.013876261980614757, 0.013883619864959451, 0.025201279960491936, - 0.018679364985388247, + 0.018679364985388247 ] # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -377,14 +377,14 @@ end 0.000461877794472316, 0.0005424899076052261, 0.0004618777944723191, - 0.0015846392581126832, + 0.0015846392581126832 ], linf=[ 0.0025241668929956163, 0.006308461681816373, 0.004334939663169113, 0.006308461681804009, - 0.03176343480493493, + 0.03176343480493493 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -406,14 +406,14 @@ end 0.015637861347119624, 0.015637861347119687, 0.022024699158522523, - 0.009711013505930812, + 0.009711013505930812 ], linf=[ 0.0006696415247340326, 0.03442565722527785, 0.03442565722577423, 0.06295407168705314, - 0.032857472756916195, + 0.032857472756916195 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -464,14 +464,14 @@ end 0.03437058632045721, 0.03437058632045671, 0.041038898400430075, - 0.30978593009044153, + 0.30978593009044153 ], linf=[ 0.004173569912012121, 0.09168674832979556, 0.09168674832975021, 0.12129218723807476, - 0.8433893297612087, + 0.8433893297612087 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -490,11 +490,11 @@ end l2=[ 0.009472104410520866, 0.0017883742549557149, 0.0017883742549557147, 0.0017883742549557196, - 0.024388540048562748, + 0.024388540048562748 ], linf=[ 0.6782397526873181, 0.17663702154066238, - 0.17663702154066266, 0.17663702154066238, 1.7327849844825238, + 0.17663702154066266, 0.17663702154066238, 1.7327849844825238 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_special_elixirs.jl b/test/test_special_elixirs.jl index 277ade9bd5c..c268c923c0d 100644 --- a/test/test_special_elixirs.jl +++ b/test/test_special_elixirs.jl @@ -254,6 +254,17 @@ end tspan = (0.0, 0.0), initial_refinement_level = 0) @test_nowarn jacobian_ad_forward(semi) end + + @timed_testset "EulerGravity" begin + trixi_include(@__MODULE__, + joinpath(EXAMPLES_DIR, + "paper_self_gravitating_gas_dynamics", + "elixir_eulergravity_convergence.jl"), + tspan = (0.0, 0.0), initial_refinement_level = 1) + J = jacobian_ad_forward(semi) + λ = eigvals(J) + @test maximum(real, λ) < 1.5 + end end @timed_testset "Test linear structure (3D)" begin diff --git a/test/test_structured_1d.jl b/test/test_structured_1d.jl index 78230e5cf0d..f64b8c9c065 100644 --- a/test/test_structured_1d.jl +++ b/test/test_structured_1d.jl @@ -79,7 +79,7 @@ end linf=[ 3.1661064228547255, 0.16256363944708607, - 2.667676158812806, + 2.667676158812806 ], tspan=(0.0, 12.5), surface_flux=FluxHLL(min_max_speed_davis)) @@ -99,12 +99,12 @@ end l2=[ 2.2527950196212703e-8, 1.8187357193835156e-8, - 7.705669939973104e-8, + 7.705669939973104e-8 ], linf=[ 1.6205433861493646e-7, 1.465427772462391e-7, - 5.372255111879554e-7, + 5.372255111879554e-7 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -122,12 +122,12 @@ end l2=[ 3.8099996914101204e-6, 1.6745575717106341e-6, - 7.732189531480852e-6, + 7.732189531480852e-6 ], linf=[ 1.2971473393186272e-5, 9.270328934274374e-6, - 3.092514399671842e-5, + 3.092514399671842e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -176,12 +176,12 @@ end l2=[ 0.019355699748523896, 0.022326984561234497, - 0.02523665947241734, + 0.02523665947241734 ], linf=[ 0.02895961127645519, 0.03293442484199227, - 0.04246098278632804, + 0.04246098278632804 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_structured_2d.jl b/test/test_structured_2d.jl index 82c76cc5d27..ba2565e0dd9 100644 --- a/test/test_structured_2d.jl +++ b/test/test_structured_2d.jl @@ -52,13 +52,13 @@ end 7.816742843336293e-6, 7.816742843340186e-6, 7.816742843025513e-6, - 7.816742843061526e-6, + 7.816742843061526e-6 ], linf=[ 6.314906965276812e-5, 6.314906965187994e-5, 6.31490696496595e-5, - 6.314906965032563e-5, + 6.314906965032563e-5 ], coverage_override=(maxiters = 10^5,)) @@ -68,13 +68,13 @@ end 7.816742843336293e-6, 7.816742843340186e-6, 7.816742843025513e-6, - 7.816742843061526e-6, + 7.816742843061526e-6 ] rtol=1.0e-4 @test errors.linf≈[ 6.314906965276812e-5, 6.314906965187994e-5, 6.31490696496595e-5, - 6.314906965032563e-5, + 6.314906965032563e-5 ] rtol=1.0e-4 # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -91,11 +91,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_advection_meshview.jl"), l2=[ 8.311947673083206e-6, - 8.311947673068427e-6, + 8.311947673068427e-6 ], linf=[ 6.627000273318195e-5, - 6.62700027264096e-5, + 6.62700027264096e-5 ], coverage_override=(maxiters = 10^5,)) @@ -313,14 +313,14 @@ end 1.51236516273878e-5, 2.4544918394022538e-5, 5.904791661362391e-6, - 1.1809583322724782e-5, + 1.1809583322724782e-5 ], linf=[ 8.393471747591974e-5, 8.393471748258108e-5, 0.00015028562494778797, 3.504466610437795e-5, - 7.00893322087559e-5, + 7.00893322087559e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -339,13 +339,13 @@ end 9.321181253186009e-7, 1.4181210743438511e-6, 1.4181210743487851e-6, - 4.824553091276693e-6, + 4.824553091276693e-6 ], linf=[ 9.577246529612893e-6, 1.1707525976012434e-5, 1.1707525976456523e-5, - 4.8869615580926506e-5, + 4.8869615580926506e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -366,13 +366,13 @@ end 9.321181253186009e-7, 1.4181210743438511e-6, 1.4181210743487851e-6, - 4.824553091276693e-6, + 4.824553091276693e-6 ], linf=[ 9.577246529612893e-6, 1.1707525976012434e-5, 1.1707525976456523e-5, - 4.8869615580926506e-5, + 4.8869615580926506e-5 ], alpha=0.0) # Ensure that we do not have excessive memory allocations @@ -393,13 +393,13 @@ end 9.321188057029291e-7, 1.3195106906473365e-6, 1.510307360354032e-6, - 4.82455408101712e-6, + 4.82455408101712e-6 ], linf=[ 9.57723626271445e-6, 1.0480225511866337e-5, 1.2817828088262928e-5, - 4.886962393513272e-5, + 4.886962393513272e-5 ], alpha=0.1) # Ensure that we do not have excessive memory allocations @@ -420,13 +420,13 @@ end 9.32127973957391e-7, 8.477824799744325e-7, 1.8175286311402784e-6, - 4.824562453521076e-6, + 4.824562453521076e-6 ], linf=[ 9.576898420737834e-6, 5.057704352218195e-6, 1.635260719945464e-5, - 4.886978754825577e-5, + 4.886978754825577e-5 ], alpha=0.2 * pi) # Ensure that we do not have excessive memory allocations @@ -447,13 +447,13 @@ end 9.321181253186009e-7, 1.4181210743438511e-6, 1.4181210743487851e-6, - 4.824553091276693e-6, + 4.824553091276693e-6 ], linf=[ 9.577246529612893e-6, 1.1707525976012434e-5, 1.1707525976456523e-5, - 4.8869615580926506e-5, + 4.8869615580926506e-5 ], alpha=0.5 * pi) # Ensure that we do not have excessive memory allocations @@ -474,13 +474,13 @@ end 1.1167802955144833e-5, 1.0805775514153104e-5, 1.953188337010932e-5, - 5.5033856574857146e-5, + 5.5033856574857146e-5 ], linf=[ 8.297006495561199e-5, 8.663281475951301e-5, 0.00012264160606778596, - 0.00041818802502024965, + 0.00041818802502024965 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -499,13 +499,13 @@ end 2.991891317562739e-5, 3.6063177168283174e-5, 2.7082941743640572e-5, - 0.00011414695350996946, + 0.00011414695350996946 ], linf=[ 0.0002437454930492855, 0.0003438936171968887, 0.00024217622945688078, - 0.001266380414757684, + 0.001266380414757684 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -523,13 +523,13 @@ end 2.063350241405049e-15, 1.8571016296925367e-14, 3.1769447886391905e-14, - 1.4104095258528071e-14, + 1.4104095258528071e-14 ], linf=[ 1.9539925233402755e-14, 2.9791447087035294e-13, 6.502853810985698e-13, - 2.7000623958883807e-13, + 2.7000623958883807e-13 ], atol=7.0e-13) # Ensure that we do not have excessive memory allocations @@ -549,13 +549,13 @@ end 2.063350241405049e-15, 1.8571016296925367e-14, 3.1769447886391905e-14, - 1.4104095258528071e-14, + 1.4104095258528071e-14 ], linf=[ 1.9539925233402755e-14, 2.9791447087035294e-13, 6.502853810985698e-13, - 2.7000623958883807e-13, + 2.7000623958883807e-13 ], atol=7.0e-13) # Ensure that we do not have excessive memory allocations @@ -575,13 +575,13 @@ end 2.259440511901724e-6, 2.3188881559075347e-6, 2.3188881559568146e-6, - 6.332786324137878e-6, + 6.332786324137878e-6 ], linf=[ 1.4987382622067003e-5, 1.918201192063762e-5, 1.918201192019353e-5, - 6.052671713430158e-5, + 6.052671713430158e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -599,13 +599,13 @@ end 0.03774907669925568, 0.02845190575242045, 0.028262802829412605, - 0.13785915638851698, + 0.13785915638851698 ], linf=[ 0.3368296929764073, 0.27644083771519773, 0.27990039685141377, - 1.1971436487402016, + 1.1971436487402016 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -624,13 +624,13 @@ end 3.69856202e-01, 2.35242180e-01, 2.41444928e-01, - 1.28807120e+00, + 1.28807120e+00 ], linf=[ 1.82786223e+00, 1.30452904e+00, 1.40347257e+00, - 6.21791658e+00, + 6.21791658e+00 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -647,16 +647,16 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_sedov_blast_wave_sc_subcell.jl"), l2=[ - 0.6337774834710513, - 0.30377119245852724, - 0.3111372568571772, - 1.2976221893997268, + 0.6403528328480915, + 0.3068073114438902, + 0.3140151910019577, + 1.2977732581465693 ], linf=[ - 2.2064877103138207, - 1.541067099687334, - 1.5487587769900337, - 6.271271639873466, + 2.239791987419344, + 1.5580885989144924, + 1.5392923786831547, + 6.2729281824590855 ], tspan=(0.0, 0.5)) # Ensure that we do not have excessive memory allocations @@ -665,6 +665,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 10000 end end @@ -677,16 +681,16 @@ end local_twosided_variables_cons=[], local_onesided_variables_nonlinear=[], l2=[ - 0.7869912572385168, - 0.39170886758882073, - 0.39613257454431977, - 1.2951760266455101, + 0.7979084213982606, + 0.3980284851419719, + 0.4021949448633982, + 1.2956482394747346 ], linf=[ - 5.156044534854053, - 3.6261667239538986, - 3.1807681416546085, - 6.3028422220287235, + 5.477809925838038, + 3.7793130706228273, + 3.2838862964081637, + 6.316943647948965 ], tspan=(0.0, 0.5)) # Ensure that we do not have excessive memory allocations @@ -695,6 +699,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 10000 end end @@ -704,11 +712,11 @@ end "elixir_euler_rayleigh_taylor_instability.jl"), l2=[ 0.06365630515019809, 0.007166887172039836, - 0.0028787103533600804, 0.010247678008197966, + 0.0028787103533600804, 0.010247678008197966 ], linf=[ 0.47992143569849377, 0.02459548251933757, - 0.02059810091623976, 0.0319077000843877, + 0.02059810091623976, 0.0319077000843877 ], cells_per_dimension=(8, 8), tspan=(0.0, 0.3)) @@ -729,13 +737,13 @@ end 0.00019387402388722496, 0.03086514388623955, 0.04541427917165, - 43.892826583444716, + 43.892826583444716 ], linf=[ 0.0015942305974430138, 0.17449778969139373, 0.3729704262394843, - 307.6706958565337, + 307.6706958565337 ], cells_per_dimension=(32, 16), tspan=(0.0, 10.0)) @@ -753,11 +761,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulerpolytropic_convergence.jl"), l2=[ 0.00166898321776379, 0.00259202637930991, - 0.0032810744946276406, + 0.0032810744946276406 ], linf=[ 0.010994883201888683, 0.013309526619369905, - 0.020080326611175536, + 0.020080326611175536 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -777,11 +785,11 @@ end volume_integral = VolumeIntegralFluxDifferencing(volume_flux)), l2=[ 0.001668882059653298, 0.002592168188567654, - 0.0032809503514328307, + 0.0032809503514328307 ], linf=[ 0.01099467966437917, 0.013311978456333584, - 0.020080117011337606, + 0.020080117011337606 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -798,12 +806,12 @@ end l2=[ 0.03647890611450939, 0.025284915444045052, - 0.025340697771609126, + 0.025340697771609126 ], linf=[ 0.32516731565355583, 0.37509762516540046, - 0.29812843284727336, + 0.29812843284727336 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -820,11 +828,11 @@ end "elixir_eulerpolytropic_isothermal_wave.jl"), l2=[ 0.004998778512795407, 0.004998916021367992, - 8.991558055435833e-17, + 8.991558055435833e-17 ], linf=[ 0.010001103632831354, 0.010051165055185603, - 7.60697457718599e-16, + 7.60697457718599e-16 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -840,11 +848,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulerpolytropic_wave.jl"), l2=[ 0.23642871172548174, 0.2090519382039672, - 8.778842676292274e-17, + 8.778842676292274e-17 ], linf=[ 0.4852276879687425, 0.25327870807625175, - 5.533921691832115e-16, + 5.533921691832115e-16 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -868,6 +876,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -878,12 +890,12 @@ end l2=[ 0.19357947606509474, 0.47041398037626814, - 0.4704139803762686, + 0.4704139803762686 ], linf=[ 0.35026352556630114, 0.8344372248051408, - 0.8344372248051408, + 0.8344372248051408 ], tspan=(0.0, 0.1), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -949,13 +961,13 @@ end 0.0017286908591070864, 0.025585037307655684, 0.028374244567802766, - 6.274146767730866e-5, + 6.274146767730866e-5 ], linf=[ 0.012973752001194772, 0.10829375385832263, 0.15832858475438094, - 0.00018196759554722775, + 0.00018196759554722775 ], tspan=(0.0, 0.05)) # Ensure that we do not have excessive memory allocations @@ -974,13 +986,13 @@ end 0.7920927046419308, 9.92129670988898e-15, 1.0118635033124588e-14, - 0.7920927046419308, + 0.7920927046419308 ], linf=[ 2.408429868800133, 5.5835419986809516e-14, 5.448874313931364e-14, - 2.4084298688001335, + 2.4084298688001335 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -1026,7 +1038,7 @@ end 0.03090169852186498, 0.030901698662039206, 0.04370160129981657, 8.259193829690747e-8, 0.03090169908364624, 0.030901699039770726, - 0.04370160128147445, 8.73592340076897e-9, + 0.04370160128147445, 8.73592340076897e-9 ], linf=[ 9.021023431587949e-7, 0.043701454182710486, @@ -1037,7 +1049,7 @@ end 0.043701454182710764, 0.043701458294525895, 0.06180314632253597, 9.487023254761695e-7, 0.04370156101034084, 0.04370147392153745, - 0.06180318786081015, 3.430672973680963e-8, + 0.06180318786081015, 3.430672973680963e-8 ], coverage_override=(maxiters = 10^5,)) @@ -1049,7 +1061,7 @@ end 0.030901699039770684, 0.04370160128147447, 8.735923402748945e-9, 1.0743426996067106e-7, 0.03090169852186498, 0.030901698662039206, 0.04370160129981657, 8.259193829690747e-8, 0.03090169908364624, - 0.030901699039770726, 0.04370160128147445, 8.73592340076897e-9, + 0.030901699039770726, 0.04370160128147445, 8.73592340076897e-9 ] rtol=1.0e-4 @test errors.linf≈[ 9.021023431587949e-7, 0.043701454182710486, 0.043701458294527366, @@ -1057,7 +1069,7 @@ end 0.04370147392153734, 0.06180318786081025, 3.430673132525334e-8, 9.02102342825728e-7, 0.043701454182710764, 0.043701458294525895, 0.06180314632253597, 9.487023254761695e-7, 0.04370156101034084, - 0.04370147392153745, 0.06180318786081015, 3.430672973680963e-8, + 0.04370147392153745, 0.06180318786081015, 3.430672973680963e-8 ] rtol=1.0e-4 # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_structured_3d.jl b/test/test_structured_3d.jl index a52c459d6be..ac932b9535e 100644 --- a/test/test_structured_3d.jl +++ b/test/test_structured_3d.jl @@ -84,14 +84,14 @@ end 0.009776048833895767, 0.00977604883389591, 0.009776048833895733, - 0.01506687097416608, + 0.01506687097416608 ], linf=[ 0.03285848350791731, 0.0321792316408982, 0.032179231640894645, 0.032179231640895534, - 0.0655408023333299, + 0.0655408023333299 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -110,14 +110,14 @@ end 9.361915278236651e-15, 9.95614203619935e-15, 1.6809941842374106e-14, - 1.4815037041566735e-14, + 1.4815037041566735e-14 ], linf=[ 4.1300296516055823e-14, 2.0444756998472258e-13, 1.0133560657266116e-13, 2.0627943797535409e-13, - 2.8954616482224083e-13, + 2.8954616482224083e-13 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -137,14 +137,14 @@ end 9.361915278236651e-15, 9.95614203619935e-15, 1.6809941842374106e-14, - 1.4815037041566735e-14, + 1.4815037041566735e-14 ], linf=[ 4.1300296516055823e-14, 2.0444756998472258e-13, 1.0133560657266116e-13, 2.0627943797535409e-13, - 2.8954616482224083e-13, + 2.8954616482224083e-13 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -164,14 +164,14 @@ end 0.003275679548217804, 0.0030020672748714084, 0.00324007343451744, - 0.005721986362580164, + 0.005721986362580164 ], linf=[ 0.03156756290660656, 0.033597629023726316, 0.02095783702361409, 0.03353574465232212, - 0.05873635745032857, + 0.05873635745032857 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -190,14 +190,14 @@ end 0.007022020327490176, 0.006759580335962235, 0.006820337637760632, - 0.02912659127566544, + 0.02912659127566544 ], linf=[ 0.2761764220925329, 0.20286331858055706, 0.18763944865434593, 0.19313636558790004, - 0.707563913727584, + 0.707563913727584 ], tspan=(0.0, 0.25), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -218,14 +218,14 @@ end 2.53167260e-02, 2.64276438e-02, 2.52195992e-02, - 3.56830295e-01, + 3.56830295e-01 ], linf=[ 6.16356950e-01, 2.50600049e-01, 2.74796377e-01, 2.46448217e-01, - 4.77888479e+00, + 4.77888479e+00 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations diff --git a/test/test_t8code_2d.jl b/test/test_t8code_2d.jl index c1fcc355218..644995778df 100644 --- a/test/test_t8code_2d.jl +++ b/test/test_t8code_2d.jl @@ -160,13 +160,13 @@ end 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -185,7 +185,7 @@ end 2.063350241405049e-15, 1.8571016296925367e-14, 3.1769447886391905e-14, - 1.4104095258528071e-14, + 1.4104095258528071e-14 ], linf=[1.9539925233402755e-14, 2e-12, 4.8e-12, 4e-12], atol=2.0e-12,) @@ -206,13 +206,13 @@ end 9.53984675e-02, 1.05633455e-01, 1.05636158e-01, - 3.50747237e-01, + 3.50747237e-01 ], linf=[ 2.94357464e-01, 4.07893014e-01, 3.97334516e-01, - 1.08142520e+00, + 1.08142520e+00 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -233,13 +233,13 @@ end 3.76149952e-01, 2.46970327e-01, 2.46970327e-01, - 1.28889042e+00, + 1.28889042e+00 ], linf=[ 1.22139001e+00, 1.17742626e+00, 1.17742626e+00, - 6.20638482e+00, + 6.20638482e+00 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -259,13 +259,13 @@ end 9.168126407325352e-5, 0.0009795410115453788, 0.002546408320320785, - 3.941189812642317e-6, + 3.941189812642317e-6 ], linf=[ 0.0009903782521019089, 0.0059752684687262025, 0.010941106525454103, - 1.2129488214718265e-5, + 1.2129488214718265e-5 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -332,13 +332,13 @@ end 0.10823279736983638, 0.1158152939803735, 0.11633970342992006, - 0.751152651902375, + 0.751152651902375 ], linf=[ 0.5581611332828653, 0.8354026029724041, 0.834485181423738, - 3.923553028014343, + 3.923553028014343 ], tspan=(0.0, 0.1), coverage_override=(maxiters = 6,)) diff --git a/test/test_t8code_3d.jl b/test/test_t8code_3d.jl index 940d2c43372..da7ea60c654 100644 --- a/test/test_t8code_3d.jl +++ b/test/test_t8code_3d.jl @@ -119,14 +119,14 @@ mkdir(outdir) 4.4993257426833716e-5, 5.10588457841744e-5, 5.102840924036687e-5, - 0.00019986264001630542, + 0.00019986264001630542 ], linf=[ 0.0016987332417202072, 0.003622956808262634, 0.002029576258317789, 0.0024206977281964193, - 0.008526972236273522, + 0.008526972236273522 ], tspan=(0.0, 0.01)) # Ensure that we do not have excessive memory allocations @@ -148,14 +148,14 @@ mkdir(outdir) 0.0014733349038567685, 0.00147333490385685, 0.001473334903856929, - 0.0028149479453087093, + 0.0028149479453087093 ], linf=[ 0.008070806335238156, 0.009007245083113125, 0.009007245083121784, 0.009007245083102688, - 0.01562861968368434, + 0.01562861968368434 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -176,14 +176,14 @@ mkdir(outdir) 1.941857343642486e-14, 2.0232366394187278e-14, 2.3381518645408552e-14, - 7.083114561232324e-14, + 7.083114561232324e-14 ], linf=[ 7.269740365245525e-13, 3.289868377720495e-12, 4.440087186807773e-12, 3.8686831516088205e-12, - 9.412914891981927e-12, + 9.412914891981927e-12 ], tspan=(0.0, 0.03)) # Ensure that we do not have excessive memory allocations @@ -204,14 +204,14 @@ mkdir(outdir) 4.889826056731442e-15, 2.2921260987087585e-15, 4.268460455702414e-15, - 1.1356712092620279e-14, + 1.1356712092620279e-14 ], linf=[ 7.749356711883593e-14, 2.8792246364872653e-13, 1.1121659149182506e-13, 3.3228975127030935e-13, - 9.592326932761353e-13, + 9.592326932761353e-13 ], tspan=(0.0, 0.1), atol=5.0e-13,) # Ensure that we do not have excessive memory allocations @@ -232,14 +232,14 @@ mkdir(outdir) 0.006192950051354618, 0.005970674274073704, 0.005965831290564327, - 0.02628875593094754, + 0.02628875593094754 ], linf=[ 0.3326911600075694, 0.2824952141320467, 0.41401037398065543, 0.45574161423218573, - 0.8099577682187109, + 0.8099577682187109 ], tspan=(0.0, 0.2), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -262,14 +262,14 @@ mkdir(outdir) 4.33260474e-02, 4.33260474e-02, 4.33260474e-02, - 3.75260911e-01, + 3.75260911e-01 ], linf=[ 7.45329845e-01, 3.21754792e-01, 3.21754792e-01, 3.21754792e-01, - 4.76151527e+00, + 4.76151527e+00 ], tspan=(0.0, 0.3), coverage_override=(polydeg = 3,)) # Prevent long compile time in CI @@ -291,14 +291,14 @@ mkdir(outdir) 0.032062252638283974, 0.032062252638283974, 0.03206225263828395, - 0.12228177813586687, + 0.12228177813586687 ], linf=[ 0.0693648413632646, 0.0622101894740843, 0.06221018947408474, 0.062210189474084965, - 0.24196451799555962, + 0.24196451799555962 ], mesh=T8codeMesh((4, 4, 4), polydeg = 3, coordinates_min = (0.0, 0.0, 0.0), @@ -324,14 +324,14 @@ mkdir(outdir) 0.0176268986746271, 0.01817514447099777, 0.018271085903740675, - 0.15193033077438198, + 0.15193033077438198 ], linf=[ 0.2898958869606375, 0.529717119064458, 0.5567193302705906, 0.570663236219957, - 3.5496520808512027, + 3.5496520808512027 ], tspan=(0.0, 0.025), coverage_override=(maxiters = 6,)) diff --git a/test/test_threaded.jl b/test/test_threaded.jl index 7fb64d61cb4..760c5ca0d73 100644 --- a/test/test_threaded.jl +++ b/test/test_threaded.jl @@ -92,13 +92,13 @@ Trixi.MPI.Barrier(Trixi.mpi_comm()) 2.259440511766445e-6, 2.318888155713922e-6, 2.3188881557894307e-6, - 6.3327863238858925e-6, + 6.3327863238858925e-6 ], linf=[ 1.498738264560373e-5, 1.9182011928187137e-5, 1.918201192685487e-5, - 6.0526717141407005e-5, + 6.0526717141407005e-5 ], rtol=0.001) @@ -119,13 +119,13 @@ Trixi.MPI.Barrier(Trixi.mpi_comm()) 0.061751715597716854, 0.05018223615408711, 0.05018989446443463, - 0.225871559730513, + 0.225871559730513 ], linf=[ 0.29347582879608825, 0.31081249232844693, 0.3107380389947736, - 1.0540358049885143, + 1.0540358049885143 ]) # Ensure that we do not have excessive memory allocations @@ -180,13 +180,13 @@ Trixi.MPI.Barrier(Trixi.mpi_comm()) 1.7088389997042244e-6, 1.7437997855125774e-6, 1.7437997855350776e-6, - 5.457223460127621e-6, + 5.457223460127621e-6 ], linf=[ 9.796504903736292e-6, 9.614745892783105e-6, 9.614745892783105e-6, - 4.026107182575345e-5, + 4.026107182575345e-5 ], tspan=(0.0, 0.1)) @@ -283,13 +283,13 @@ end 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) # Ensure that we do not have excessive memory allocations @@ -309,13 +309,13 @@ end 0.00024871265138964204, 0.0003370077102132591, 0.0003370077102131964, - 0.0007231525513793697, + 0.0007231525513793697 ], linf=[ 0.0015813032944647087, 0.0020494288423820173, 0.0020494288423824614, - 0.004793821195083758, + 0.004793821195083758 ], tspan=(0.0, 0.1)) end @@ -329,13 +329,13 @@ end 0.0034516244508588046, 0.0023420334036925493, 0.0024261923964557187, - 0.004731710454271893, + 0.004731710454271893 ], linf=[ 0.04155789011775046, 0.024772109862748914, 0.03759938693042297, - 0.08039824959535657, + 0.08039824959535657 ]) end @@ -346,13 +346,13 @@ end 0.00024871265138964204, 0.0003370077102132591, 0.0003370077102131964, - 0.0007231525513793697, + 0.0007231525513793697 ], linf=[ 0.0015813032944647087, 0.0020494288423820173, 0.0020494288423824614, - 0.004793821195083758, + 0.004793821195083758 ], tspan=(0.0, 0.1)) end @@ -370,13 +370,13 @@ end 0.006400337855843578, 0.005303799804137764, 0.005303799804119745, - 0.013204169007030144, + 0.013204169007030144 ], linf=[ 0.03798302318566282, 0.05321027922532284, 0.05321027922605448, - 0.13392025411839015, + 0.13392025411839015 ],) # Ensure that we do not have excessive memory allocations @@ -397,13 +397,13 @@ end 1.7204593127904542e-5, 1.5921547179522804e-5, 1.5921547180107928e-5, - 4.894071422525737e-5, + 4.894071422525737e-5 ], linf=[ 0.00010525416930584619, 0.00010003778091061122, 0.00010003778085621029, - 0.00036426282101720275, + 0.00036426282101720275 ]) # Ensure that we do not have excessive memory allocations @@ -423,13 +423,13 @@ end 2.344076909832665e-6, 1.8610002398709756e-6, 2.4095132179484066e-6, - 6.37330249340445e-6, + 6.37330249340445e-6 ], linf=[ 2.509979394305084e-5, 2.2683711321080935e-5, 2.6180377720841363e-5, - 5.575278031910713e-5, + 5.575278031910713e-5 ]) # Ensure that we do not have excessive memory allocations @@ -449,13 +449,13 @@ end 1.3333320340010056e-6, 2.044834627970641e-6, 2.044834627855601e-6, - 5.282189803559564e-6, + 5.282189803559564e-6 ], linf=[ 2.7000151718858945e-6, 3.988595028259212e-6, 3.9885950273710336e-6, - 8.848583042286862e-6, + 8.848583042286862e-6 ]) # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_1d_advection.jl b/test/test_tree_1d_advection.jl index 20586c4f3ba..f061e2e1c30 100644 --- a/test/test_tree_1d_advection.jl +++ b/test/test_tree_1d_advection.jl @@ -92,6 +92,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 8000 end end @@ -112,6 +116,29 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 + @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 8000 + end +end + +# Testing the second-order paired explicit Runge-Kutta (PERK) method with the optimal CFL number +@trixi_testset "elixir_advection_perk2_optimal_cfl.jl" begin + @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_advection_perk2_optimal_cfl.jl"), + l2=[0.0009700887119146429], + linf=[0.00137209242077041]) + # Ensure that we do not have excessive memory allocations + # (e.g., from type instabilities) + let + t = sol.t[end] + u_ode = sol.u[end] + du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 8000 end end diff --git a/test/test_tree_1d_euler.jl b/test/test_tree_1d_euler.jl index dc523586f89..74908552521 100644 --- a/test/test_tree_1d_euler.jl +++ b/test/test_tree_1d_euler.jl @@ -15,12 +15,12 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") l2=[ 2.2527950196212703e-8, 1.8187357193835156e-8, - 7.705669939973104e-8, + 7.705669939973104e-8 ], linf=[ 1.6205433861493646e-7, 1.465427772462391e-7, - 5.372255111879554e-7, + 5.372255111879554e-7 ], # With the default `maxiters = 1` in coverage tests, # there would be no time series to check against. @@ -52,12 +52,12 @@ end l2=[ 0.019355699748523896, 0.022326984561234497, - 0.02523665947241734, + 0.02523665947241734 ], linf=[ 0.02895961127645519, 0.03293442484199227, - 0.04246098278632804, + 0.04246098278632804 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -74,12 +74,12 @@ end l2=[ 0.0011482554820217855, 0.00011482554830323462, - 5.741277429325267e-6, + 5.741277429325267e-6 ], linf=[ 0.004090978306812376, 0.0004090978313582294, - 2.045489210189544e-5, + 2.045489210189544e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -96,12 +96,12 @@ end l2=[ 7.71293052584723e-16, 1.9712947511091717e-14, - 7.50672833504266e-15, + 7.50672833504266e-15 ], linf=[ 3.774758283725532e-15, 6.733502644351574e-14, - 2.4868995751603507e-14, + 2.4868995751603507e-14 ], initial_condition=initial_condition_constant) # Ensure that we do not have excessive memory allocations @@ -120,12 +120,12 @@ end l2=[ 3.8099996914101204e-6, 1.6745575717106341e-6, - 7.732189531480852e-6, + 7.732189531480852e-6 ], linf=[ 1.2971473393186272e-5, 9.270328934274374e-6, - 3.092514399671842e-5, + 3.092514399671842e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -142,12 +142,12 @@ end l2=[ 0.11821957357197649, 0.15330089521538678, - 0.4417674632047301, + 0.4417674632047301 ], linf=[ 0.24280567569982958, 0.29130548795961936, - 0.8847009003152442, + 0.8847009003152442 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -164,12 +164,12 @@ end l2=[ 0.07803455838661963, 0.10032577312032283, - 0.29228156303827935, + 0.29228156303827935 ], linf=[ 0.2549869853794955, 0.3376472164661263, - 0.9650477546553962, + 0.9650477546553962 ], maxiters=10, surface_flux=flux_kennedy_gruber, @@ -189,12 +189,12 @@ end l2=[ 0.07800654460172655, 0.10030365573277883, - 0.2921481199111959, + 0.2921481199111959 ], linf=[ 0.25408579350400395, 0.3388657679031271, - 0.9776486386921928, + 0.9776486386921928 ], maxiters=10, surface_flux=flux_shima_etal, @@ -214,12 +214,12 @@ end l2=[ 0.07801923089205756, 0.10039557434912669, - 0.2922210399923278, + 0.2922210399923278 ], linf=[ 0.2576521982607225, 0.3409717926625057, - 0.9772961936567048, + 0.9772961936567048 ], maxiters=10, surface_flux=flux_chandrashekar, @@ -240,7 +240,7 @@ end linf=[ 0.192621556068018, 0.25184744005299536, - 0.7264977555504792, + 0.7264977555504792 ], maxiters=10, surface_flux=flux_hll, @@ -260,12 +260,12 @@ end l2=[ 0.11606096465319675, 0.15028768943458806, - 0.4328230323046703, + 0.4328230323046703 ], linf=[ 0.18031710091067965, 0.2351582421501841, - 0.6776805692092567, + 0.6776805692092567 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -283,7 +283,7 @@ end linf=[ 2.9766770877037168, 0.16838100902295852, - 2.6655773445485798, + 2.6655773445485798 ], coverage_override=(maxiters = 6,)) # Ensure that we do not have excessive memory allocations @@ -319,7 +319,7 @@ end linf=[ 3.4296365168219216, 0.17635583964559245, - 2.6574584326179505, + 2.6574584326179505 ], # Let this test run longer to cover some lines in flux_hllc coverage_override=(maxiters = 10^5, tspan = (0.0, 0.1))) @@ -339,7 +339,7 @@ end linf=[ 3.1773015255764427, 0.21331831536493773, - 2.6650170188241047, + 2.6650170188241047 ], shock_indicator_variable=pressure, cfl=0.2, @@ -360,7 +360,7 @@ end linf=[ 3.1087017048015824, 0.17734706962928956, - 2.666689753470263, + 2.666689753470263 ], shock_indicator_variable=density, cfl=0.2, @@ -396,7 +396,7 @@ end linf=[ 1.5180897390290355, 1.3967085956620369, - 2.0663825294019595, + 2.0663825294019595 ], maxiters=30) # Ensure that we do not have excessive memory allocations @@ -423,13 +423,13 @@ end 3.876288369618363e-7, 2.2247043122302947e-7, 2.964004224572679e-7, - 5.2716983399807875e-8, + 5.2716983399807875e-8 ], linf=[ 2.3925118561862746e-6, 1.3603693522767912e-6, 1.821888865105592e-6, - 1.1166012159335992e-7, + 1.1166012159335992e-7 ]) # Ensure that we do not have excessive memory allocations @@ -449,13 +449,13 @@ end 0.045510421156346015, 0.036750584788912195, 0.2468985959132176, - 0.03684494180829024, + 0.03684494180829024 ], linf=[ 0.3313374853025697, 0.11621933362158643, 1.827403013568638, - 0.28045939999015723, + 0.28045939999015723 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -473,13 +473,13 @@ end 0.08889113985713998, 0.16199235348889673, 0.40316524365054346, - 2.9602775074723667e-16, + 2.9602775074723667e-16 ], linf=[ 0.28891355898284043, 0.3752709888964313, 0.84477102402413, - 8.881784197001252e-16, + 8.881784197001252e-16 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_1d_eulergravity.jl b/test/test_tree_1d_eulergravity.jl index 17bc0c71a7a..70cc294812d 100644 --- a/test/test_tree_1d_eulergravity.jl +++ b/test/test_tree_1d_eulergravity.jl @@ -14,11 +14,11 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_convergence.jl"), l2=[ 0.00021708496949694728, 0.0002913795242132917, - 0.0006112500956552259, + 0.0006112500956552259 ], linf=[ 0.0004977733237385706, 0.0013594226727522418, - 0.0020418739554664, + 0.0020418739554664 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_1d_eulermulti.jl b/test/test_tree_1d_eulermulti.jl index b6c79ce03d1..7f5b6d50c94 100644 --- a/test/test_tree_1d_eulermulti.jl +++ b/test/test_tree_1d_eulermulti.jl @@ -51,13 +51,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") 0.1522380497572071, 0.43830846465313206, 0.03907262116499431, - 0.07814524232998862, + 0.07814524232998862 ], linf=[ 0.24939193075537294, 0.7139395740052739, 0.06324208768391237, - 0.12648417536782475, + 0.12648417536782475 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -75,13 +75,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") 8.575236038539227e-5, 0.00016387804318585358, 1.9412699303977585e-5, - 3.882539860795517e-5, + 3.882539860795517e-5 ], linf=[ 0.00030593277277124464, 0.0006244803933350696, 7.253121435135679e-5, - 0.00014506242870271358, + 0.00014506242870271358 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_1d_fdsbp.jl b/test/test_tree_1d_fdsbp.jl index 33d67e3366f..71e77eeb389 100644 --- a/test/test_tree_1d_fdsbp.jl +++ b/test/test_tree_1d_fdsbp.jl @@ -94,12 +94,12 @@ end l2=[ 4.1370344463620254e-6, 4.297052451817826e-6, - 9.857382045003056e-6, + 9.857382045003056e-6 ], linf=[ 1.675305070092392e-5, 1.3448113863834266e-5, - 3.8185336878271414e-5, + 3.8185336878271414e-5 ], tspan=(0.0, 0.5)) @@ -118,12 +118,12 @@ end l2=[ 3.413790589105506e-6, 4.243957977156001e-6, - 8.667369423676437e-6, + 8.667369423676437e-6 ], linf=[ 1.4228079689537765e-5, 1.3249887941046978e-5, - 3.201552933251861e-5, + 3.201552933251861e-5 ], tspan=(0.0, 0.5), flux_splitting=splitting_vanleer_haenel) @@ -143,12 +143,12 @@ end l2=[ 8.6126767518378e-6, 7.670897071480729e-6, - 1.4972772284191368e-5, + 1.4972772284191368e-5 ], linf=[ 6.707982777909294e-5, 3.487256699541419e-5, - 0.00010170331350556339, + 0.00010170331350556339 ], tspan=(0.0, 0.5), solver=DG(D_upw.central, nothing, SurfaceIntegralStrongForm(), @@ -169,12 +169,12 @@ end l2=[ 1.5894925236031034e-5, 9.428412101106044e-6, - 0.0008986477358789918, + 0.0008986477358789918 ], linf=[ 4.969438024382544e-5, 2.393091812063694e-5, - 0.003271817388146303, + 0.003271817388146303 ], tspan=(0.0, 0.005), abstol=1.0e-9, reltol=1.0e-9) diff --git a/test/test_tree_1d_hypdiff.jl b/test/test_tree_1d_hypdiff.jl index 896a3d4c8d6..cd570c16708 100644 --- a/test/test_tree_1d_hypdiff.jl +++ b/test/test_tree_1d_hypdiff.jl @@ -37,6 +37,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 10000 end end diff --git a/test/test_tree_1d_linearizedeuler.jl b/test/test_tree_1d_linearizedeuler.jl index c7cffee3f66..210ad8645de 100644 --- a/test/test_tree_1d_linearizedeuler.jl +++ b/test/test_tree_1d_linearizedeuler.jl @@ -14,12 +14,12 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") l2=[ 0.00010894927270421941, 0.00014295255695912358, - 0.00010894927270421941, + 0.00010894927270421941 ], linf=[ 0.0005154647164193893, 0.00048457837684242266, - 0.0005154647164193893, + 0.0005154647164193893 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -37,7 +37,7 @@ end linf=[ 1.9999505145390108, 0.9999720404625275, - 1.9999505145390108, + 1.9999505145390108 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_1d_mhd.jl b/test/test_tree_1d_mhd.jl index 2150ddfd074..e27a075b090 100644 --- a/test/test_tree_1d_mhd.jl +++ b/test/test_tree_1d_mhd.jl @@ -20,7 +20,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") 3.9938347410210535e-14, 3.984545392098788e-16, 2.4782402104201577e-15, - 1.551737464879987e-15, + 1.551737464879987e-15 ], linf=[ 1.9984014443252818e-15, @@ -30,7 +30,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") 7.815970093361102e-14, 8.881784197001252e-16, 2.886579864025407e-15, - 2.942091015256665e-15, + 2.942091015256665e-15 ], initial_condition=initial_condition_constant, tspan=(0.0, 1.0)) @@ -54,7 +54,7 @@ end 5.084863194951084e-6, 1.1963224165731992e-16, 3.598916927583752e-5, - 3.598916927594727e-5, + 3.598916927594727e-5 ], linf=[ 2.614095879338585e-5, @@ -64,7 +64,7 @@ end 1.5066209528846741e-5, 2.220446049250313e-16, 0.00012658678753942054, - 0.00012658678753908748, + 0.00012658678753908748 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -86,7 +86,7 @@ end 1.967962220860377e-6, 1.1963224165731992e-16, 3.583562899483433e-5, - 3.583562899486565e-5, + 3.583562899486565e-5 ], linf=[ 5.830577969345718e-5, @@ -96,7 +96,7 @@ end 6.978806516122482e-6, 2.220446049250313e-16, 0.00012564003648959932, - 0.00012564003648994626, + 0.00012564003648994626 ], volume_flux=flux_derigs_etal) # Ensure that we do not have excessive memory allocations @@ -115,13 +115,13 @@ end 1.036850596986597e-5, 1.965192583650368e-6, 3.5882124656715505e-5, 3.5882124656638764e-5, 5.270975504780837e-6, 1.1963224165731992e-16, - 3.595811808912869e-5, 3.5958118089159453e-5, + 3.595811808912869e-5, 3.5958118089159453e-5 ], linf=[ 2.887280521446378e-5, 7.310580790352001e-6, 0.00012390046377899755, 0.00012390046377787345, 1.5102711136583125e-5, 2.220446049250313e-16, - 0.0001261935452181312, 0.0001261935452182006, + 0.0001261935452181312, 0.0001261935452182006 ], surface_flux=flux_hllc) # Ensure that we do not have excessive memory allocations @@ -144,7 +144,7 @@ end 0.15578125987042743, 4.130462730494e-17, 0.05465258887150046, - 0.05465258887150046, + 0.05465258887150046 ], linf=[ 0.12165312668363826, @@ -154,7 +154,7 @@ end 0.44079257431070706, 1.1102230246251565e-16, 0.10528911365809579, - 0.10528911365809579, + 0.10528911365809579 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -176,7 +176,7 @@ end 0.3723215736814466, 1.2060075775846403e-15, 0.36276754492568164, - 0.0, + 0.0 ], linf=[ 0.5797109945880677, @@ -186,7 +186,7 @@ end 1.0526758874956808, 5.995204332975845e-15, 1.5122922036932964, - 0.0, + 0.0 ], coverage_override=(maxiters = 6,)) # Ensure that we do not have excessive memory allocations @@ -209,7 +209,7 @@ end 0.9204708961093411, 1.3216517820475193e-16, 0.28897419402047725, - 0.25521206483145126, + 0.25521206483145126 ], linf=[ 1.2185238171352286, @@ -219,7 +219,7 @@ end 1.660723397705417, 2.220446049250313e-16, 0.6874726847741993, - 0.65536978110274, + 0.65536978110274 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -238,13 +238,13 @@ end 0.4573799618744708, 0.4792633358230866, 0.34064852506872795, 0.4479668434955162, 0.9203891782415092, 1.3216517820475193e-16, 0.28887826520860815, - 0.255281629265771, + 0.255281629265771 ], linf=[ 1.2382842201671505, 0.8929169308132259, 0.871298623806198, 0.9822415614542821, 1.6726170732132717, 2.220446049250313e-16, 0.7016155888023747, - 0.6556091522071984, + 0.6556091522071984 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -266,7 +266,7 @@ end 0.9606363432904367, 6.608258910237605e-17, 0.21542929107153735, - 0.10705457908737925, + 0.10705457908737925 ], linf=[ 0.6447951791685409, @@ -276,7 +276,7 @@ end 2.0770652030507053, 1.1102230246251565e-16, 0.49670855513788204, - 0.24830199967863564, + 0.24830199967863564 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -299,7 +299,7 @@ end 5.21930435e+01, 6.56538824e-16, 1.01022340e+00, - 0.00000000e+00, + 0.00000000e+00 ], linf=[ 2.87172004e+00, @@ -309,7 +309,7 @@ end 1.35152372e+02, 3.44169138e-15, 2.83556069e+00, - 0.00000000e+00, + 0.00000000e+00 ], tspan=(0.0, 0.2), coverage_override=(maxiters = 6,)) @@ -336,7 +336,7 @@ end 5.23565514e+01, 3.18641825e-16, 1.00485291e+00, - 0.00000000e+00, + 0.00000000e+00 ], linf=[ 2.92876280e+00, @@ -346,7 +346,7 @@ end 1.36966213e+02, 1.55431223e-15, 2.80548864e+00, - 0.00000000e+00, + 0.00000000e+00 ], initial_condition=initial_condition_shu_osher_shock_tube_flipped, boundary_conditions=BoundaryConditionDirichlet(initial_condition_shu_osher_shock_tube_flipped), diff --git a/test/test_tree_1d_shallowwater.jl b/test/test_tree_1d_shallowwater.jl index 42a91e578e4..79fd3131489 100644 --- a/test/test_tree_1d_shallowwater.jl +++ b/test/test_tree_1d_shallowwater.jl @@ -15,12 +15,12 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_1d_dgsem") l2=[ 0.24476140682560343, 0.8587309324660326, - 0.07330427577586297, + 0.07330427577586297 ], linf=[ 2.1636963952308372, 3.8737770522883115, - 1.7711213427919539, + 1.7711213427919539 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -38,12 +38,12 @@ end l2=[ 0.39472828074570576, 2.0390687947320076, - 4.1623084150546725e-10, + 4.1623084150546725e-10 ], linf=[ 0.7793741954662221, 3.2411927977882096, - 7.419800190922032e-10, + 7.419800190922032e-10 ], initial_condition=initial_condition_weak_blast_wave, tspan=(0.0, 0.25)) @@ -62,7 +62,7 @@ end l2=[ 0.10416666834254829, 1.4352935256803184e-14, - 0.10416666834254838, + 0.10416666834254838 ], linf=[1.9999999999999996, 3.248036646353028e-14, 2.0], tspan=(0.0, 0.25)) @@ -81,7 +81,7 @@ end l2=[ 0.10416666834254835, 1.1891029971551825e-14, - 0.10416666834254838, + 0.10416666834254838 ], linf=[2.0000000000000018, 2.4019608337954543e-14, 2.0], surface_flux=(FluxHydrostaticReconstruction(flux_lax_friedrichs, @@ -103,7 +103,7 @@ end l2=[ 0.10416666834254838, 1.6657566141935285e-14, - 0.10416666834254838, + 0.10416666834254838 ], linf=[2.0000000000000004, 3.0610625110157164e-14, 2.0], surface_flux=(flux_wintermeyer_etal, @@ -124,12 +124,12 @@ end l2=[ 0.0022363707373868713, 0.01576799981934617, - 4.436491725585346e-5, + 4.436491725585346e-5 ], linf=[ 0.00893601803417754, 0.05939797350246456, - 9.098379777405796e-5, + 9.098379777405796e-5 ], tspan=(0.0, 0.025)) # Ensure that we do not have excessive memory allocations @@ -147,12 +147,12 @@ end l2=[ 0.002275023323848826, 0.015861093821754046, - 4.436491725585346e-5, + 4.436491725585346e-5 ], linf=[ 0.008461451098266792, 0.05722331401673486, - 9.098379777405796e-5, + 9.098379777405796e-5 ], tspan=(0.0, 0.025), surface_flux=(flux_hll, @@ -172,12 +172,12 @@ end l2=[ 0.005774284062933275, 0.017408601639513584, - 4.43649172561843e-5, + 4.43649172561843e-5 ], linf=[ 0.01639116193303547, 0.05102877460799604, - 9.098379777450205e-5, + 9.098379777450205e-5 ], surface_flux=(flux_wintermeyer_etal, flux_nonconservative_wintermeyer_etal), @@ -198,12 +198,12 @@ end l2=[ 0.0022667320585353927, 0.01571629729279524, - 4.4364917255842716e-5, + 4.4364917255842716e-5 ], linf=[ 0.008945234652224965, 0.059403165802872415, - 9.098379777405796e-5, + 9.098379777405796e-5 ], tspan=(0.0, 0.025)) # Ensure that we do not have excessive memory allocations @@ -222,12 +222,12 @@ end l2=[ 0.0022774071143995952, 0.01566214422689219, - 4.4364917255842716e-5, + 4.4364917255842716e-5 ], linf=[ 0.008451721489057373, 0.05720939055279217, - 9.098379777405796e-5, + 9.098379777405796e-5 ], surface_flux=(FluxHydrostaticReconstruction(FluxHLL(min_max_speed_naive), hydrostatic_reconstruction_audusse_etal), @@ -249,12 +249,12 @@ end l2=[ 1.725964362045055e-8, 5.0427180314307505e-16, - 1.7259643530442137e-8, + 1.7259643530442137e-8 ], linf=[ 3.844551077492042e-8, 3.469453422316143e-15, - 3.844551077492042e-8, + 3.844551077492042e-8 ], tspan=(0.0, 0.25), surface_flux=(FluxHLL(min_max_speed_naive), @@ -275,12 +275,12 @@ end l2=[ 1.7259643614361866e-8, 3.5519018243195145e-16, - 1.7259643530442137e-8, + 1.7259643530442137e-8 ], linf=[ 3.844551010878661e-8, 9.846474508971374e-16, - 3.844551077492042e-8, + 3.844551077492042e-8 ], tspan=(0.0, 0.25), surface_flux=(FluxHLL(min_max_speed_naive), @@ -303,7 +303,7 @@ end linf=[ 1.1209754279344226, 1.3230788645853582, - 0.8646939843534251, + 0.8646939843534251 ], tspan=(0.0, 0.05)) # Ensure that we do not have excessive memory allocations @@ -323,13 +323,13 @@ end 6.37048760275098e-5, 0.0002745658116815704, 4.436491725647962e-6, - 8.872983451152218e-6, + 8.872983451152218e-6 ], linf=[ 0.00026747526881631956, 0.0012106730729152249, 9.098379777500165e-6, - 1.8196759554278685e-5, + 1.8196759554278685e-5 ], tspan=(0.0, 0.05)) # Ensure that we do not have excessive memory allocations @@ -349,13 +349,13 @@ end 1.4250229186905198e-14, 2.495109919406496e-12, 7.408599286788738e-17, - 2.7205812409138776e-16, + 2.7205812409138776e-16 ], linf=[ 5.284661597215745e-14, 2.74056233065078e-12, 2.220446049250313e-16, - 8.881784197001252e-16, + 8.881784197001252e-16 ], tspan=(0.0, 100.0)) # Ensure that we do not have excessive memory allocations @@ -375,13 +375,13 @@ end 0.02843233740533314, 0.14083324483705398, 0.0054554472558998, - 0.005455447255899814, + 0.005455447255899814 ], linf=[ 0.26095842440037487, 0.45919004549253795, 0.09999999999999983, - 0.10000000000000009, + 0.10000000000000009 ],) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_2d_acoustics.jl b/test/test_tree_2d_acoustics.jl index 89bccbf8ca1..070eca87728 100644 --- a/test/test_tree_2d_acoustics.jl +++ b/test/test_tree_2d_acoustics.jl @@ -19,7 +19,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.0, 0.0, 0.0, - 0.0, + 0.0 ], linf=[ 0.00769282588065634, @@ -28,7 +28,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.0, 0.0, 0.0, - 0.0, + 0.0 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -49,7 +49,7 @@ end 0.0, 0.0, 0.0, - 0.0, + 0.0 ], linf=[ 0.17261097190220992, @@ -58,7 +58,7 @@ end 0.0, 0.0, 0.0, - 0.0, + 0.0 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -79,7 +79,7 @@ end 0.0, 0.0, 0.0, - 0.0, + 0.0 ], linf=[ 0.03970270697049378, @@ -88,7 +88,7 @@ end 0.0, 0.0, 0.0, - 0.0, + 0.0 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_2d_advection.jl b/test/test_tree_2d_advection.jl index b111651aa6f..f62239c7e93 100644 --- a/test/test_tree_2d_advection.jl +++ b/test/test_tree_2d_advection.jl @@ -163,6 +163,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -180,6 +184,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -197,6 +205,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -212,6 +224,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -228,6 +244,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -245,6 +265,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end diff --git a/test/test_tree_2d_euler.jl b/test/test_tree_2d_euler.jl index a004d1452b7..6685c289a9b 100644 --- a/test/test_tree_2d_euler.jl +++ b/test/test_tree_2d_euler.jl @@ -16,13 +16,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 9.321181253186009e-7, 1.4181210743438511e-6, 1.4181210743487851e-6, - 4.824553091276693e-6, + 4.824553091276693e-6 ], linf=[ 9.577246529612893e-6, 1.1707525976012434e-5, 1.1707525976456523e-5, - 4.8869615580926506e-5, + 4.8869615580926506e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -40,13 +40,13 @@ end 0.026440292358506527, 0.013245905852168414, 0.013245905852168479, - 0.03912520302609374, + 0.03912520302609374 ], linf=[ 0.042130817806361964, 0.022685499230187034, 0.022685499230187922, - 0.06999771202145322, + 0.06999771202145322 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -64,13 +64,13 @@ end 0.0010600778457964775, 0.00010600778457634275, 0.00021201556915872665, - 2.650194614399671e-5, + 2.650194614399671e-5 ], linf=[ 0.006614198043413566, 0.0006614198043973507, 0.001322839608837334, - 0.000165354951256802, + 0.000165354951256802 ], tspan=(0.0, 0.5)) # Ensure that we do not have excessive memory allocations @@ -90,13 +90,13 @@ end 2.259440511766445e-6, 2.318888155713922e-6, 2.3188881557894307e-6, - 6.3327863238858925e-6, + 6.3327863238858925e-6 ], linf=[ 1.498738264560373e-5, 1.9182011928187137e-5, 1.918201192685487e-5, - 6.0526717141407005e-5, + 6.0526717141407005e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -114,13 +114,13 @@ end 0.061751715597716854, 0.05018223615408711, 0.05018989446443463, - 0.225871559730513, + 0.225871559730513 ], linf=[ 0.29347582879608825, 0.31081249232844693, 0.3107380389947736, - 1.0540358049885143, + 1.0540358049885143 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -138,13 +138,13 @@ end 0.03481471610306124, 0.027694280613944234, 0.027697905866996532, - 0.12932052501462554, + 0.12932052501462554 ], linf=[ 0.31052098400669004, 0.3481295959664616, 0.34807152194137336, - 1.1044947556170719, + 1.1044947556170719 ], maxiters=10, surface_flux=flux_kennedy_gruber, @@ -165,13 +165,13 @@ end 0.03481122603050542, 0.027662840593087695, 0.027665658732350273, - 0.12927455860656786, + 0.12927455860656786 ], linf=[ 0.3110089578739834, 0.34888111987218107, 0.3488278669826813, - 1.1056349046774305, + 1.1056349046774305 ], maxiters=10, surface_flux=flux_chandrashekar, @@ -192,13 +192,13 @@ end 0.05380629130119074, 0.04696798008325309, 0.04697067787841479, - 0.19687382235494968, + 0.19687382235494968 ], linf=[ 0.18527440131928286, 0.2404798030563736, 0.23269573860381076, - 0.6874012187446894, + 0.6874012187446894 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -217,13 +217,13 @@ end 0.08508152653623638, 0.04510301725066843, 0.04510304668512745, - 0.6930705064715306, + 0.6930705064715306 ], linf=[ 0.31136518019691406, 0.5617651935473419, 0.5621200790240503, - 2.8866869108596056, + 2.8866869108596056 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -231,6 +231,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -249,13 +253,13 @@ end 0.05624855363458103, 0.06931288786158463, 0.06931283188960778, - 0.6200535829842072, + 0.6200535829842072 ], linf=[ 0.29029967648805566, 0.6494728865862608, 0.6494729363533714, - 3.0949621505674787, + 3.0949621505674787 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -263,6 +267,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -273,13 +281,13 @@ end 0.14170569763947993, 0.11647068900798814, 0.11647072556898294, - 0.3391989213659599, + 0.3391989213659599 ], linf=[ 1.6544204510794196, 1.35194638484646, 1.3519463848472744, - 1.831228461662809, + 1.831228461662809 ], maxiters=30) # Ensure that we do not have excessive memory allocations @@ -298,13 +306,13 @@ end 0.39957047631960346, 0.21006912294983154, 0.21006903549932, - 0.6280328163981136, + 0.6280328163981136 ], linf=[ 2.20417889887697, 1.5487238480003327, 1.5486788679247812, - 2.4656795949035857, + 2.4656795949035857 ], tspan=(0.0, 0.5), # Let this test run longer to cover some lines in flux_hllc @@ -325,13 +333,13 @@ end 0.6835576416907511, 0.2839963955262972, 0.28399565983676, - 0.7229447806293277, + 0.7229447806293277 ], linf=[ 3.0969614882801393, 1.7967947300740248, 1.7967508302506658, - 3.040149575567518, + 3.040149575567518 ], tspan=(0.0, 1.0), coverage_override=(maxiters = 6,)) @@ -349,16 +357,16 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_blast_wave_sc_subcell_nonperiodic.jl"), l2=[ - 0.3221177942225801, - 0.1798478357478982, - 0.1798364616438908, - 0.6136884131056267, + 0.3221078812528291, + 0.17985175694043076, + 0.17983453493705628, + 0.6136916718599121 ], linf=[ - 1.343766644801395, - 1.1749593109683463, - 1.1747613085307178, - 2.4216006041018785, + 1.343237509126809, + 1.1747101056222315, + 1.174585608472406, + 2.4216027326405487 ], tspan=(0.0, 0.5), initial_refinement_level=4, @@ -369,6 +377,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -379,13 +391,13 @@ end 0.4866953770742574, 0.1673477470091984, 0.16734774700934, - 0.6184367248923149, + 0.6184367248923149 ], linf=[ 2.6724832723962053, 1.2916089288910635, 1.2916089289001427, - 6.474699399394252, + 6.474699399394252 ], tspan=(0.0, 1.0), coverage_override=(maxiters = 6,)) @@ -404,23 +416,24 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_sedov_blast_wave_sc_subcell.jl"), l2=[ - 0.41444427153173785, - 0.1460669409661223, - 0.14606693069201596, - 0.6168046457461059, + 0.4227549115123529, + 0.14825759222652649, + 0.14825759222682933, + 0.6164668313131949 ], linf=[ - 1.5720584643579567, - 0.7946656826861964, - 0.7946656525739751, - 6.455520291414711, + 1.6391908143728386, + 0.8344433355906021, + 0.8344433355966195, + 6.450305752671201 ], tspan=(0.0, 1.0), initial_refinement_level=4, coverage_override=(maxiters = 6,), save_errors=true) lines = readlines(joinpath("out", "deviations.txt")) - @test lines[1] == "# iter, simu_time, rho_min, rho_max, entropy_guermond_etal_min" + @test lines[1] == + "# iter, simu_time, rho_min, rho_max, entropy_guermond_etal_min, pressure_min" cmd = string(Base.julia_cmd()) coverage = occursin("--code-coverage", cmd) && !occursin("--code-coverage=none", cmd) @@ -428,8 +441,8 @@ end # Run with coverage takes 6 time steps. @test startswith(lines[end], "6") else - # Run without coverage takes 89 time steps. - @test startswith(lines[end], "89") + # Run without coverage takes 138 time steps. + @test startswith(lines[end], "138") end # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -437,6 +450,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -447,13 +464,13 @@ end 0.352405949321075, 0.17207721487429464, 0.17207721487433883, - 0.6263024434020885, + 0.6263024434020885 ], linf=[ 2.760997358628186, 1.8279186132509326, 1.8279186132502805, - 6.251573757093399, + 6.251573757093399 ], tspan=(0.0, 0.5), callbacks=CallbackSet(summary_callback, @@ -476,13 +493,13 @@ end 0.48862067511841695, 0.16787541578869494, 0.16787541578869422, - 0.6184319933114926, + 0.6184319933114926 ], linf=[ 2.6766520821013002, 1.2910938760258996, 1.2910938760258899, - 6.473385481404865, + 6.473385481404865 ], tspan=(0.0, 1.0), coverage_override=(maxiters = 3,)) @@ -502,13 +519,13 @@ end 0.22271619518391986, 0.6284824759323494, 0.24864213447943648, - 2.9591811489995474, + 2.9591811489995474 ], linf=[ 9.15245400430106, 24.96562810334389, 10.388109127032374, - 101.20581544156934, + 101.20581544156934 ], tspan=(0.0, 0.5)) # Ensure that we do not have excessive memory allocations @@ -527,13 +544,13 @@ end 0.2086261501910662, 1.2118352377894666, 0.10255333189606497, - 5.296238138639236, + 5.296238138639236 ], linf=[ 14.829071984498198, 74.12967742435727, 6.863554388300223, - 303.58813147491134, + 303.58813147491134 ], tspan=(0.0, 0.12), # Let this test run longer to cover the ControllerThreeLevelCombined lines @@ -555,13 +572,13 @@ end 0.1057230211245312, 0.10621112311257341, 0.07260957505339989, - 0.11178239111065721, + 0.11178239111065721 ], linf=[ 2.998719417992662, 2.1400285015556166, 1.1569648700415078, - 1.8922492268110913, + 1.8922492268110913 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -581,13 +598,13 @@ end 0.055691508271624536, 0.032986009333751655, 0.05224390923711999, - 0.08009536362771563, + 0.08009536362771563 ], linf=[ 0.24043622527087494, 0.1660878796929941, 0.12355946691711608, - 0.2694290787257758, + 0.2694290787257758 ], tspan=(0.0, 0.2)) # Ensure that we do not have excessive memory allocations @@ -607,13 +624,13 @@ end 0.05569452733654995, 0.033107109983417926, 0.05223609622852158, - 0.08007777597488817, + 0.08007777597488817 ], linf=[ 0.2535807803900303, 0.17397028249895308, 0.12321616095649354, - 0.269046666668995, + 0.269046666668995 ], tspan=(0.0, 0.2), coverage_override=(maxiters = 2,)) @@ -635,13 +652,13 @@ end 0.42185634563805724, 0.1686471269704017, 0.18240674916968103, - 0.17858250604280654, + 0.17858250604280654 ], linf=[ 1.7012978064377158, 0.7149714986746726, 0.5822547982757897, - 0.7300051017382696, + 0.7300051017382696 ], tspan=(0.0, 2.0), coverage_override=(maxiters = 7,), @@ -656,6 +673,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -666,13 +687,13 @@ end 0.007237139090503349, 0.044887582765386916, 1.0453570959003603e-6, - 0.6627307840935432, + 0.6627307840935432 ], linf=[ 0.19437260992446315, 0.5554343646648533, 5.943891455255412e-5, - 15.188919846360125, + 15.188919846360125 ], tspan=(0.0, 0.1)) # Ensure that we do not have excessive memory allocations @@ -691,13 +712,13 @@ end 0.006768801432802192, 0.032184992228603666, 6.923887797276484e-7, - 0.6784222932398366, + 0.6784222932398366 ], linf=[ 0.2508663007713608, 0.4097017076529792, 0.0003528986458217968, - 22.435474993016918, + 22.435474993016918 ], tspan=(0.0, 0.1), coverage_override=(maxiters = 2,)) @@ -717,13 +738,13 @@ end 0.011338365293662804, 10.09743543555765, 0.00392429463200361, - 4031.7811487690506, + 4031.7811487690506 ], linf=[ 3.3178633141984193, 2993.6445033486402, 8.031723414357423, - 1.1918867260293828e6, + 1.1918867260293828e6 ], tspan=(0.0, 1.0e-7), coverage_override=(maxiters = 6,)) @@ -743,13 +764,13 @@ end 0.00013492249515826863, 0.006615696236378061, 0.006782108219800376, - 0.016393831451740604, + 0.016393831451740604 ], linf=[ 0.0020782600954247776, 0.08150078921935999, 0.08663621974991986, - 0.2829930622010579, + 0.2829930622010579 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -768,13 +789,13 @@ end 0.0017208369388227673, 0.09628684992237334, 0.09620157717330868, - 0.1758809552387432, + 0.1758809552387432 ], linf=[ 0.021869936355319086, 0.9956698009442038, 1.0002507727219028, - 2.223249697515648, + 2.223249697515648 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -792,13 +813,13 @@ end 0.0017203323613648241, 0.09628962878682261, 0.09621241164155782, - 0.17585995600340926, + 0.17585995600340926 ], linf=[ 0.021740570456931674, 0.9938841665880938, 1.004140123355135, - 2.224108857746245, + 2.224108857746245 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -816,13 +837,13 @@ end 0.0017158367642679273, 0.09619888722871434, 0.09616432767924141, - 0.17553381166255197, + 0.17553381166255197 ], linf=[ 0.021853862449723982, 0.9878047229255944, 0.9880191167111795, - 2.2154030488035588, + 2.2154030488035588 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -841,13 +862,13 @@ end 0.0017203324051381415, 0.09628962899999398, 0.0962124115572114, - 0.1758599596626405, + 0.1758599596626405 ], linf=[ 0.021740568112562086, 0.9938841624655501, 1.0041401179009877, - 2.2241087041100798, + 2.2241087041100798 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -866,13 +887,13 @@ end 5.051719943432265e-5, 0.0022574259317084747, 0.0021755998463189713, - 0.004346492398617521, + 0.004346492398617521 ], linf=[ 0.0012880114865917447, 0.03857193149447702, 0.031090457959835893, - 0.12125130332971423, + 0.12125130332971423 ], # Let this test run longer to cover some lines in the AMR indicator coverage_override=(maxiters = 10^5, tspan = (0.0, 10.5))) @@ -892,13 +913,13 @@ end 0.03341239373099515, 0.026673245711492915, 0.026678871434568822, - 0.12397486476145089, + 0.12397486476145089 ], linf=[ 0.3290981764688339, 0.3812055782309788, 0.3812041851225023, - 1.168251216556933, + 1.168251216556933 ], periodicity=false, boundary_conditions=boundary_condition_slip_wall, @@ -919,13 +940,13 @@ end 0.0001379946769624388, 0.02078779689715382, 0.033237241571263176, - 31.36068872331705, + 31.36068872331705 ], linf=[ 0.0016286690573188434, 0.15623770697198225, 0.3341371832270615, - 334.5373488726036, + 334.5373488726036 ], tspan=(0.0, 10.0), initial_refinement_level=4) @@ -947,13 +968,13 @@ end 1.1790213022362371e-16, 8.580657423476384e-17, 1.3082387431804115e-16, - 1.6182739965672862e-15, + 1.6182739965672862e-15 ], linf=[ 3.3306690738754696e-16, 2.220446049250313e-16, 5.273559366969494e-16, - 3.552713678800501e-15, + 3.552713678800501e-15 ], maxiters=1, initial_condition=initial_condition_constant) @@ -973,13 +994,13 @@ end 0.0021196114178949396, 0.010703549234544042, 0.01070354923454404, - 0.10719124037195142, + 0.10719124037195142 ], linf=[ 0.11987270645890724, 0.7468615461136827, 0.7468615461136827, - 3.910689155287799, + 3.910689155287799 ], maxiters=1) diff --git a/test/test_tree_2d_euleracoustics.jl b/test/test_tree_2d_euleracoustics.jl index e3a4d65f398..2ca893899bf 100644 --- a/test/test_tree_2d_euleracoustics.jl +++ b/test/test_tree_2d_euleracoustics.jl @@ -22,7 +22,7 @@ EXAMPLES_DIR = joinpath(examples_dir(), "tree_2d_dgsem") 13.000001753042364, 26.00000080243847, 38.00000884725549, - 51.000000003859995, + 51.000000003859995 ], linf=[ 0.22312716933051027, @@ -31,7 +31,7 @@ EXAMPLES_DIR = joinpath(examples_dir(), "tree_2d_dgsem") 13.468872744263273, 26.54666679978679, 38.139032147739684, - 51.378134660241294, + 51.378134660241294 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_2d_eulermulti.jl b/test/test_tree_2d_eulermulti.jl index 5b984611687..d6dc3ef94f4 100644 --- a/test/test_tree_2d_eulermulti.jl +++ b/test/test_tree_2d_eulermulti.jl @@ -40,14 +40,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.9174752929795251, 57942.83587826468, 0.1828847253029943, - 0.011127037850925347, + 0.011127037850925347 ], linf=[ 196.81051991521073, 7.8456811648529605, 158891.88930113698, 0.811379581519794, - 0.08011973559187913, + 0.08011973559187913 ], tspan=(0.0, 0.001)) # Ensure that we do not have excessive memory allocations @@ -69,14 +69,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 2.5455678559421346, 63229.190712645846, 0.19929478404550321, - 0.011068604228443425, + 0.011068604228443425 ], linf=[ 249.21708417382013, 40.33299887640794, 174205.0118831558, 0.6881458768113586, - 0.11274401158173972, + 0.11274401158173972 ], initial_refinement_level=3, tspan=(0.0, 0.001), @@ -91,6 +91,10 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -99,18 +103,18 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulermulti_shock_bubble_shockcapturing_subcell_minmax.jl"), l2=[ - 73.10860950390489, - 1.4599090197303102, - 57176.23978426408, - 0.17812910616624406, - 0.010123079422717837, + 73.41054363926742, + 1.5072038797716156, + 57405.58964098063, + 0.17877099207437225, + 0.010085388785440972 ], linf=[ - 214.50568817511956, - 25.40392579616452, - 152862.41011222568, - 0.564195553101797, - 0.0956331651771212, + 213.59140793740318, + 24.57625853486584, + 152498.21319871658, + 0.5911106543157919, + 0.09936092838440383 ], initial_refinement_level=3, tspan=(0.0, 0.001)) @@ -120,6 +124,10 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -130,13 +138,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.050182236154087095, 0.050189894464434635, 0.2258715597305131, - 0.06175171559771687, + 0.06175171559771687 ], linf=[ 0.3108124923284472, 0.3107380389947733, 1.054035804988521, - 0.29347582879608936, + 0.29347582879608936 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -157,7 +165,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.004087155041747821, 0.008174310083495642, 0.016348620166991283, - 0.032697240333982566, + 0.032697240333982566 ], linf=[ 0.2488251110766228, @@ -166,7 +174,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.017452870465607374, 0.03490574093121475, 0.0698114818624295, - 0.139622963724859, + 0.139622963724859 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -185,14 +193,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.00012290225488321876, 0.00018867397906337653, 4.8542321753649044e-5, - 9.708464350729809e-5, + 9.708464350729809e-5 ], linf=[ 0.0006722819239133315, 0.0006722819239128874, 0.0012662292789555885, 0.0002843844182700561, - 0.0005687688365401122, + 0.0005687688365401122 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -211,14 +219,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 2.266177386666318e-6, 6.593514692980009e-6, 8.836308667348217e-7, - 1.7672617334696433e-6, + 1.7672617334696433e-6 ], linf=[ 1.4713170997993075e-5, 1.4713170997104896e-5, 5.115618808515521e-5, 5.3639516094383666e-6, - 1.0727903218876733e-5, + 1.0727903218876733e-5 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -237,14 +245,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 1.862173764098385e-6, 5.942585713809631e-6, 6.216263279534722e-7, - 1.2432526559069443e-6, + 1.2432526559069443e-6 ], linf=[ 1.6235495582606063e-5, 1.6235495576388814e-5, 5.854523678827661e-5, 5.790274858807898e-6, - 1.1580549717615796e-5, + 1.1580549717615796e-5 ], volume_flux=flux_chandrashekar) # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_2d_eulerpolytropic.jl b/test/test_tree_2d_eulerpolytropic.jl index 545cf7274ff..dd6bb5700c2 100644 --- a/test/test_tree_2d_eulerpolytropic.jl +++ b/test/test_tree_2d_eulerpolytropic.jl @@ -15,11 +15,11 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") "elixir_eulerpolytropic_convergence.jl"), l2=[ 0.0016689832177626373, 0.0025920263793094526, - 0.003281074494626679, + 0.003281074494626679 ], linf=[ 0.010994883201896677, 0.013309526619350365, - 0.02008032661117376, + 0.02008032661117376 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_tree_2d_fdsbp.jl b/test/test_tree_2d_fdsbp.jl index d477cab0563..ae0bb4157d7 100644 --- a/test/test_tree_2d_fdsbp.jl +++ b/test/test_tree_2d_fdsbp.jl @@ -56,13 +56,13 @@ end 1.7088389997042244e-6, 1.7437997855125774e-6, 1.7437997855350776e-6, - 5.457223460127621e-6, + 5.457223460127621e-6 ], linf=[ 9.796504903736292e-6, 9.614745892783105e-6, 9.614745892783105e-6, - 4.026107182575345e-5, + 4.026107182575345e-5 ], tspan=(0.0, 0.1)) @@ -82,13 +82,13 @@ end 2.1149087345799973e-6, 1.9391438806845798e-6, 1.9391438806759794e-6, - 5.842833764682604e-6, + 5.842833764682604e-6 ], linf=[ 1.3679037540903494e-5, 1.1770587849069258e-5, 1.1770587848403125e-5, - 4.68952678644996e-5, + 4.68952678644996e-5 ], tspan=(0.0, 0.1), flux_splitting=splitting_lax_friedrichs) @@ -108,13 +108,13 @@ end 1.708838999643608e-6, 1.7437997854485807e-6, 1.7437997854741082e-6, - 5.457223460116349e-6, + 5.457223460116349e-6 ], linf=[ 9.796504911285808e-6, 9.614745899888533e-6, 9.614745899444443e-6, - 4.02610718399643e-5, + 4.02610718399643e-5 ], tspan=(0.0, 0.1), flux_splitting=splitting_drikakis_tsangaris) @@ -135,13 +135,13 @@ end 0.02607850081951497, 0.020357717558016252, 0.028510191844948945, - 0.02951535039734857, + 0.02951535039734857 ], linf=[ 0.12185328623662173, 0.1065055387595834, 0.06257122956937419, - 0.11992349951978643, + 0.11992349951978643 ], tspan=(0.0, 0.1)) @@ -161,13 +161,13 @@ end 0.0005330228930711585, 0.028475888529345014, 0.02847513865894387, - 0.056259951995581196, + 0.056259951995581196 ], linf=[ 0.007206088611304784, 0.31690373882847234, 0.31685665067192326, - 0.7938167296134893, + 0.7938167296134893 ], tspan=(0.0, 0.25)) diff --git a/test/test_tree_2d_hypdiff.jl b/test/test_tree_2d_hypdiff.jl index 8c5973cbf07..21a20ff2d4c 100644 --- a/test/test_tree_2d_hypdiff.jl +++ b/test/test_tree_2d_hypdiff.jl @@ -15,12 +15,12 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") l2=[ 0.00015687751817403066, 0.001025986772216324, - 0.0010259867722164071, + 0.0010259867722164071 ], linf=[ 0.001198695637957381, 0.006423873515531753, - 0.006423873515533529, + 0.006423873515533529 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -28,6 +28,10 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -38,12 +42,12 @@ end l2=[ 8.618132355121019e-8, 5.619399844384306e-7, - 5.619399844844044e-7, + 5.619399844844044e-7 ], linf=[ 1.1248618588430072e-6, 8.622436487026874e-6, - 8.622436487915053e-6, + 8.622436487915053e-6 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -60,12 +64,12 @@ end l2=[ 8.523077653954864e-6, 2.8779323653020624e-5, - 5.454942769125663e-5, + 5.454942769125663e-5 ], linf=[ 5.522740952468297e-5, 0.00014544895978971679, - 0.00032396328684924924, + 0.00032396328684924924 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -82,12 +86,12 @@ end l2=[ 5.868147556427088e-6, 3.80517927324465e-5, - 3.805179273249344e-5, + 3.805179273249344e-5 ], linf=[ 3.701965498725812e-5, 0.0002122422943138247, - 0.00021224229431116015, + 0.00021224229431116015 ], atol=2.0e-12) #= required for CI on macOS =# # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_2d_linearizedeuler.jl b/test/test_tree_2d_linearizedeuler.jl index 7bdb83e328e..b1d34895a63 100644 --- a/test/test_tree_2d_linearizedeuler.jl +++ b/test/test_tree_2d_linearizedeuler.jl @@ -15,13 +15,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 0.00020601485381444888, 0.00013380483421751216, 0.0001338048342174503, - 0.00020601485381444888, + 0.00020601485381444888 ], linf=[ 0.0011006084408365924, 0.0005788678074691855, 0.0005788678074701847, - 0.0011006084408365924, + 0.0011006084408365924 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -39,13 +39,13 @@ end 0.048185623945503485, 0.01941899333212175, 0.019510224816991825, - 0.048185623945503485, + 0.048185623945503485 ], linf=[ 1.0392165942153189, 0.18188777290819994, 0.1877028372108587, - 1.0392165942153189, + 1.0392165942153189 ]) # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_2d_mhd.jl b/test/test_tree_2d_mhd.jl index 66b47138a44..ed6b7f6b527 100644 --- a/test/test_tree_2d_mhd.jl +++ b/test/test_tree_2d_mhd.jl @@ -21,7 +21,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 1.2542675002588144e-6, 1.2542675002747718e-6, 1.8705223407238346e-6, - 4.651717010670585e-7, + 4.651717010670585e-7 ], linf=[ 0.00026806333988971254, @@ -32,7 +32,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_2d_dgsem") 8.130129322880819e-6, 8.130129322769797e-6, 1.2406302192291552e-5, - 2.373765544951732e-6, + 2.373765544951732e-6 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -55,7 +55,7 @@ end 1.07029565814218e-6, 1.0702956581404748e-6, 1.3291748105236525e-6, - 4.6172239295786824e-7, + 4.6172239295786824e-7 ], linf=[ 9.865325754310206e-6, @@ -66,7 +66,7 @@ end 7.789533065905019e-6, 7.789533065905019e-6, 1.0933531593274037e-5, - 2.340244047768378e-6, + 2.340244047768378e-6 ], volume_flux=(flux_derigs_etal, flux_nonconservative_powell)) # Ensure that we do not have excessive memory allocations @@ -90,7 +90,7 @@ end 1.456369119716533e-6, 1.4115666913995062e-6, 1.804758237422838e-6, - 8.320469738087189e-7, + 8.320469738087189e-7 ], linf=[ 3.670661330201774e-5, @@ -101,7 +101,7 @@ end 1.0906323046233624e-5, 1.0603954940346938e-5, 1.5900499596113726e-5, - 5.978772247650426e-6, + 5.978772247650426e-6 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -125,7 +125,7 @@ end 0.01745369341302589, 0.017454552320664566, 0.026873190440613117, - 5.336243933079389e-16, + 5.336243933079389e-16 ], linf=[ 0.23623816236321427, @@ -136,7 +136,7 @@ end 0.09398098096581875, 0.09470282020962917, 0.15277253978297378, - 4.307694418935709e-15, + 4.307694418935709e-15 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -159,7 +159,7 @@ end 0.23028914748088603, 0.34413527376463915, 0.0, - 0.003178793090381426, + 0.003178793090381426 ], linf=[ 1.2749969218080568, @@ -170,7 +170,7 @@ end 0.6473347557712643, 0.9691773375490476, 0.0, - 0.05729832038724348, + 0.05729832038724348 ], tspan=(0.0, 0.09)) # Ensure that we do not have excessive memory allocations @@ -194,7 +194,7 @@ end 0.15688413207147794, 0.24293641543490646, 0.0, - 0.003246181006326598, + 0.003246181006326598 ], linf=[ 0.560316034595759, @@ -205,7 +205,7 @@ end 0.3981375420906146, 0.673472146198816, 0.0, - 0.04879208429337193, + 0.04879208429337193 ], tspan=(0.0, 0.06), surface_flux=(flux_hlle, @@ -231,7 +231,7 @@ end 3.9171737639099993e-16, 2.445565690318772e-16, 3.6588423152083e-17, - 9.971153407737885e-17, + 9.971153407737885e-17 ], linf=[ 2.220446049250313e-16, @@ -242,7 +242,7 @@ end 8.881784197001252e-16, 4.440892098500626e-16, 1.1102230246251565e-16, - 4.779017148551244e-16, + 4.779017148551244e-16 ], maxiters=1, initial_condition=initial_condition_constant, @@ -268,7 +268,7 @@ end 0.2147235065899803, 0.23558337696054493, 0.0, - 0.0032515115395693483, + 0.0032515115395693483 ], linf=[ 11.003677581472843, @@ -279,7 +279,7 @@ end 1.3283750501377847, 1.4365828094434892, 0.0, - 0.07886241196068537, + 0.07886241196068537 ], tspan=(0.0, 0.05)) # Ensure that we do not have excessive memory allocations @@ -303,7 +303,7 @@ end 2.359493623565687, 1.4030741420730297, 0.0, - 0.029613599942667133, + 0.029613599942667133 ], linf=[ 1.581630420824181, @@ -314,7 +314,7 @@ end 13.07679044647926, 9.14612176426092, 0.0, - 0.5154756722488522, + 0.5154756722488522 ], tspan=(0.0, 0.003), # Calling the AnalysisCallback before iteration 9 causes the interpolation @@ -341,7 +341,7 @@ end 8.4091669534557805e-03, 5.2156364913231732e-03, 0.0000000000000000e+00, - 2.0786952301129021e-04, + 2.0786952301129021e-04 ], linf=[ 3.8778760255775635e-01, @@ -352,15 +352,19 @@ end 1.0264404591009069e-01, 1.0655686942176350e-01, 0.0000000000000000e+00, - 6.1013422157115546e-03, + 6.1013422157115546e-03 ], tspan=(0.0, 0.003)) - # Ensure that we do not have excessive memory allocations - # (e.g., from type instabilities) + # Ensure that we do not have excessive memory allocations + # (e.g., from type instabilities) let t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end diff --git a/test/test_tree_2d_shallowwater.jl b/test/test_tree_2d_shallowwater.jl index bcad663008c..97e586c719c 100644 --- a/test/test_tree_2d_shallowwater.jl +++ b/test/test_tree_2d_shallowwater.jl @@ -16,13 +16,13 @@ EXAMPLES_DIR = joinpath(examples_dir(), "tree_2d_dgsem") 0.9911802019934329, 0.7340106828033273, 0.7446338002084801, - 0.5875351036989047, + 0.5875351036989047 ], linf=[ 2.0120253138457564, 2.991158989293406, 2.6557412817714035, - 3.0, + 3.0 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -41,13 +41,13 @@ end 0.9130579602987144, 1.0602847041965408e-14, 1.082225645390032e-14, - 0.9130579602987147, + 0.9130579602987147 ], linf=[ 2.113062037615659, 4.6613606802974e-14, 5.4225772771633196e-14, - 2.1130620376156584, + 2.1130620376156584 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -67,13 +67,13 @@ end 0.9130579602987144, 1.0602847041965408e-14, 1.082225645390032e-14, - 0.9130579602987147, + 0.9130579602987147 ], linf=[ 2.113062037615659, 4.6613606802974e-14, 5.4225772771633196e-14, - 2.1130620376156584, + 2.1130620376156584 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -92,13 +92,13 @@ end 0.9130579602987147, 9.68729463970494e-15, 9.694538537436981e-15, - 0.9130579602987147, + 0.9130579602987147 ], linf=[ 2.1130620376156584, 2.3875905654916432e-14, 2.2492839032269154e-14, - 2.1130620376156584, + 2.1130620376156584 ], surface_flux=(FluxHydrostaticReconstruction(flux_lax_friedrichs, hydrostatic_reconstruction_audusse_etal), @@ -120,13 +120,13 @@ end 0.9130579602987146, 1.0323158914614244e-14, 1.0276096319430528e-14, - 0.9130579602987147, + 0.9130579602987147 ], linf=[ 2.11306203761566, 4.063916419044386e-14, 3.694484044448245e-14, - 2.1130620376156584, + 2.1130620376156584 ], surface_flux=(flux_wintermeyer_etal, flux_nonconservative_wintermeyer_etal), @@ -147,13 +147,13 @@ end 0.001868474306068482, 0.01731687445878443, 0.017649083171490863, - 6.274146767717023e-5, + 6.274146767717023e-5 ], linf=[ 0.016962486402209986, 0.08768628853889782, 0.09038488750767648, - 0.0001819675955490041, + 0.0001819675955490041 ], tspan=(0.0, 0.025)) # Ensure that we do not have excessive memory allocations @@ -173,13 +173,13 @@ end 0.0018596727473552813, 0.017306217777629147, 0.016367646997420396, - 6.274146767723934e-5, + 6.274146767723934e-5 ], linf=[ 0.016548007102923368, 0.08726160568822783, 0.09043621622245013, - 0.0001819675955490041, + 0.0001819675955490041 ], tspan=(0.0, 0.025)) # Ensure that we do not have excessive memory allocations @@ -198,13 +198,13 @@ end 0.0018952610547425214, 0.016943425162728183, 0.017556784292859465, - 6.274146767717414e-5, + 6.274146767717414e-5 ], linf=[ 0.0151635341334182, 0.07967467926956129, 0.08400050790965174, - 0.0001819675955490041, + 0.0001819675955490041 ], tspan=(0.0, 0.025), surface_flux=(flux_hll, @@ -225,13 +225,13 @@ end 0.0018957692481057034, 0.016943229710439864, 0.01755623297390675, - 6.274146767717414e-5, + 6.274146767717414e-5 ], linf=[ 0.015156105797771602, 0.07964811135780492, 0.0839787097210376, - 0.0001819675955490041, + 0.0001819675955490041 ], tspan=(0.0, 0.025), surface_flux=(FluxHLL(min_max_speed_naive), @@ -252,13 +252,13 @@ end 0.002471853426064005, 0.05619168608950033, 0.11844727575152562, - 6.274146767730281e-5, + 6.274146767730281e-5 ], linf=[ 0.014332922987500218, 0.2141204806174546, 0.5392313755637872, - 0.0001819675955490041, + 0.0001819675955490041 ], surface_flux=(flux_wintermeyer_etal, flux_nonconservative_wintermeyer_etal), @@ -279,13 +279,13 @@ end 0.1351723240085936, 0.20010881416550014, 0.2001088141654999, - 2.719538414346464e-7, + 2.719538414346464e-7 ], linf=[ 0.5303608302490757, 0.5080987791967457, 0.5080987791967506, - 1.1301675764130437e-6, + 1.1301675764130437e-6 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_3d_euler.jl b/test/test_tree_3d_euler.jl index 47669dce2fb..03ff2c53784 100644 --- a/test/test_tree_3d_euler.jl +++ b/test/test_tree_3d_euler.jl @@ -17,14 +17,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 0.009776048833895767, 0.00977604883389591, 0.009776048833895733, - 0.01506687097416608, + 0.01506687097416608 ], linf=[ 0.03285848350791731, 0.0321792316408982, 0.032179231640894645, 0.032179231640895534, - 0.0655408023333299, + 0.0655408023333299 ], # With the default `maxiters = 1` in coverage tests, # there would be no time series to check against. @@ -51,21 +51,21 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 1.952073047561595, 1.9520730475615966, 1.9520730475615953, - 3.814390510967551, + 3.814390510967551 ], [ 2.0506452262144363, 2.050727319703708, 2.0507273197037073, 2.0507273197037077, - 4.203653999433724, + 4.203653999433724 ], [ 2.046982357537558, 2.0463728824399654, 2.0463728824399654, 2.0463728824399645, - 4.190033459318115, + 4.190033459318115 ]] @test point_data≈exact_data atol=1e-1 @test point_data ≈ ref_data @@ -78,14 +78,14 @@ end 0.032062252638283974, 0.032062252638283974, 0.03206225263828395, - 0.12228177813586687, + 0.12228177813586687 ], linf=[ 0.0693648413632646, 0.0622101894740843, 0.06221018947408474, 0.062210189474084965, - 0.24196451799555962, + 0.24196451799555962 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -104,14 +104,14 @@ end 0.009776048833894784, 0.009776048833894784, 0.009776048833894765, - 0.015066870974164096, + 0.015066870974164096 ], linf=[ 0.03285848350791687, 0.032179231640897754, 0.0321792316408942, 0.0321792316408982, - 0.06554080233333615, + 0.06554080233333615 ], volume_integral=VolumeIntegralFluxDifferencing(flux_central)) # Ensure that we do not have excessive memory allocations @@ -129,12 +129,12 @@ end l2=[ 0.0003637241020254673, 0.00039555708663848046, 0.00039555708663832644, 0.0003955570866385083, - 0.0007811613481643962, + 0.0007811613481643962 ], linf=[ 0.0024000660244567484, 0.002963541002521053, 0.0029635410025201647, 0.002963541002522385, - 0.007191437359379549, + 0.007191437359379549 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -153,14 +153,14 @@ end 0.0018659907926698422, 0.0018659907926698589, 0.0018659907926698747, - 0.0034549095578444056, + 0.0034549095578444056 ], linf=[ 0.011355360771142298, 0.011526889155693887, 0.011526889155689002, 0.011526889155701436, - 0.02299726519821288, + 0.02299726519821288 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -179,14 +179,14 @@ end 0.003828192061340465, 0.0038281920613404694, 0.0038281920613404672, - 0.005742288092010652, + 0.005742288092010652 ], linf=[ 0.07390396464027349, 0.07390396464027305, 0.07390396464027305, 0.07390396464027305, - 0.11085594696041134, + 0.11085594696041134 ], tspan=(0.0, 0.1), coverage_override=(maxiters = 6, initial_refinement_level = 0, @@ -208,14 +208,14 @@ end 0.03133384111621587, 0.03133384111621582, 0.04378599329988925, - 0.015796137903453026, + 0.015796137903453026 ], linf=[ 0.0013935237751798724, 0.0724080091006194, 0.07240800910061806, 0.12795921224174792, - 0.07677156293692633, + 0.07677156293692633 ], tspan=(0.0, 0.5)) # Ensure that we do not have excessive memory allocations @@ -235,14 +235,14 @@ end 0.016179934130642552, 0.01617993413064253, 0.016172648598753545, - 0.09261669328795467, + 0.09261669328795467 ], linf=[ 0.3954458125573179, 0.26876916180359345, 0.26876916180359345, 0.26933123042178553, - 1.3724137121660251, + 1.3724137121660251 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -264,14 +264,14 @@ end 0.012771561294571411, 0.01277156129457143, 0.012770635779336643, - 0.08091898488262424, + 0.08091898488262424 ], linf=[ 0.4047819603427084, 0.27493532130155474, 0.2749353213015551, 0.2749304638368023, - 1.4053942765487641, + 1.4053942765487641 ], maxiters=10, coverage_override=(maxiters = 2,)) @@ -292,14 +292,14 @@ end 0.057196526814004715, 0.05719652681400473, 0.057196526814004736, - 0.08579479022100575, + 0.08579479022100575 ], linf=[ 0.27415246703018203, 0.2741524670301829, 0.2741524670301827, 0.27415246703018226, - 0.41122870054527816, + 0.41122870054527816 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -318,14 +318,14 @@ end 0.016632068583699623, 0.016632068583699623, 0.01662548715216875, - 0.0913477018048886, + 0.0913477018048886 ], linf=[ 0.4372549540810414, 0.28613118232798984, 0.28613118232799006, 0.28796686065271876, - 1.5072828647309124, + 1.5072828647309124 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -344,14 +344,14 @@ end 6.059779958716338e-16, 4.916596221090319e-16, 9.739943366304456e-16, - 3.7485908743251566e-15, + 3.7485908743251566e-15 ], linf=[ 2.4424906541753444e-15, 3.733124920302089e-15, 4.440892098500626e-15, 5.329070518200751e-15, - 2.4868995751603507e-14, + 2.4868995751603507e-14 ], initial_condition=initial_condition_constant) # Ensure that we do not have excessive memory allocations @@ -371,14 +371,14 @@ end 0.016649800693500427, 0.01664980069350042, 0.01664379306708522, - 0.09137248646784184, + 0.09137248646784184 ], linf=[ 0.4373399329742198, 0.28434487167605427, 0.28434487167605427, 0.28522678968890774, - 1.532471676033761, + 1.532471676033761 ], surface_flux=flux_chandrashekar, volume_flux=flux_chandrashekar) # Ensure that we do not have excessive memory allocations @@ -398,14 +398,14 @@ end 0.016675487948639846, 0.016675487948639853, 0.016668992714991282, - 0.091455613470441, + 0.091455613470441 ], linf=[ 0.43348628145015766, 0.28853549062014217, 0.28853549062014217, 0.2903943042772536, - 1.5236557526482426, + 1.5236557526482426 ], surface_flux=flux_kennedy_gruber, volume_flux=flux_kennedy_gruber) @@ -426,14 +426,14 @@ end 0.016637655557848952, 0.01663765555784895, 0.01663105921013437, - 0.09136239054024566, + 0.09136239054024566 ], linf=[ 0.43692416928732536, 0.28622033209064734, 0.28622033209064746, 0.2881197143457632, - 1.506534270303663, + 1.506534270303663 ], surface_flux=flux_shima_etal, volume_flux=flux_shima_etal) # Ensure that we do not have excessive memory allocations @@ -453,14 +453,14 @@ end 0.2640486962336911, 0.0354927658652858, 0.03549276586528571, - 1.0777274757408568, + 1.0777274757408568 ], linf=[ 9.558543313792217, 49.4518309553356, 10.319859082570309, 10.319859082570487, - 195.1066220797401, + 195.1066220797401 ], tspan=(0.0, 0.2), # Let this test run longer to cover some lines in the positivity preserving limiter @@ -483,14 +483,14 @@ end 0.0023166296394624025, 0.002316629639462401, 0.0023166296394624038, - 0.010200581509653256, + 0.010200581509653256 ], linf=[ 0.06344190883105805, 0.6292607955969378, 0.6292607955969377, 0.6292607955969377, - 2.397746252817731, + 2.397746252817731 ], maxiters=5, max_level=6, surface_flux=FluxHLL(min_max_speed_naive), @@ -513,14 +513,14 @@ end 0.0037168004033428146, 0.0037168004033428094, 0.0037168004033428514, - 0.011119869089205635, + 0.011119869089205635 ], linf=[ 0.13982864363612468, 0.786004687738243, 0.786004687738243, 0.7860046877382431, - 1.7082524045150382, + 1.7082524045150382 ], tspan=(0.0, 0.01), surface_flux=flux_hlle) diff --git a/test/test_tree_3d_eulergravity.jl b/test/test_tree_3d_eulergravity.jl index 1b5e715f774..a1eedd14446 100644 --- a/test/test_tree_3d_eulergravity.jl +++ b/test/test_tree_3d_eulergravity.jl @@ -17,14 +17,14 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 0.00047204222332596204, 0.00047204222332608705, 0.0004720422233259819, - 0.0010987026250960728, + 0.0010987026250960728 ], linf=[ 0.003496616916238704, 0.003764418290373106, 0.003764418290377103, 0.0037644182903766588, - 0.008370424899251105, + 0.008370424899251105 ], resid_tol=1.0e-4, tspan=(0.0, 0.2)) # Ensure that we do not have excessive memory allocations diff --git a/test/test_tree_3d_fdsbp.jl b/test/test_tree_3d_fdsbp.jl index e0e2bfe4b88..4cac6011713 100644 --- a/test/test_tree_3d_fdsbp.jl +++ b/test/test_tree_3d_fdsbp.jl @@ -57,14 +57,14 @@ end 2.2499169224681058e-5, 2.24991692246826e-5, 2.2499169224684707e-5, - 5.814121361417382e-5, + 5.814121361417382e-5 ], linf=[ 9.579357410749445e-5, 9.544871933409027e-5, 9.54487193367548e-5, 9.544871933453436e-5, - 0.0004192294529472562, + 0.0004192294529472562 ], tspan=(0.0, 0.2)) @@ -85,14 +85,14 @@ end 4.1320630860402814e-5, 4.132063086040211e-5, 4.132063086039092e-5, - 8.502518355874354e-5, + 8.502518355874354e-5 ], linf=[ 0.0001963934848161486, 0.00020239883896255861, 0.0002023988389729947, 0.00020239883896766564, - 0.00052605624510349, + 0.00052605624510349 ], tspan=(0.0, 0.2), solver=DG(D_upw.central, nothing, SurfaceIntegralStrongForm(), @@ -115,14 +115,14 @@ end 0.0004691301922633193, 0.00046913019226332234, 0.0006630180220973541, - 0.0015732759680929076, + 0.0015732759680929076 ], linf=[ 3.4253965106145756e-5, 0.0010033197685090707, 0.0010033197685091054, 0.0018655642702542635, - 0.008479800046757191, + 0.008479800046757191 ], tspan=(0.0, 0.0075), abstol=1.0e-9, reltol=1.0e-9) diff --git a/test/test_tree_3d_hypdiff.jl b/test/test_tree_3d_hypdiff.jl index 5c9dacbd87d..6bf57e08c2d 100644 --- a/test/test_tree_3d_hypdiff.jl +++ b/test/test_tree_3d_hypdiff.jl @@ -16,13 +16,13 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 0.001530331609036682, 0.011314177033289238, 0.011314177033289402, - 0.011314177033289631, + 0.011314177033289631 ], linf=[ 0.02263459033909354, 0.10139777904683545, 0.10139777904683545, - 0.10139777904683545, + 0.10139777904683545 ], initial_refinement_level=2) # Ensure that we do not have excessive memory allocations @@ -31,6 +31,10 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -41,13 +45,13 @@ end 0.0015377731806850128, 0.01137685274151801, 0.011376852741518175, - 0.011376852741518494, + 0.011376852741518494 ], linf=[ 0.022715420630041172, 0.10183745338964201, 0.10183745338964201, - 0.1018374533896429, + 0.1018374533896429 ], initial_refinement_level=2, surface_flux=flux_godunov) # Ensure that we do not have excessive memory allocations @@ -56,6 +60,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end @@ -66,13 +74,13 @@ end 0.00022868320512754316, 0.0007974309948540525, 0.0015035143230654987, - 0.0015035143230655293, + 0.0015035143230655293 ], linf=[ 0.0016405001653623241, 0.0029870057159104594, 0.009410031618285686, - 0.009410031618287462, + 0.009410031618287462 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -80,6 +88,10 @@ end t = sol.t[end] u_ode = sol.u[end] du_ode = similar(u_ode) + # Larger values for allowed allocations due to usage of custom + # integrator which are not *recorded* for the methods from + # OrdinaryDiffEq.jl + # Corresponding issue: https://github.com/trixi-framework/Trixi.jl/issues/1877 @test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 15000 end end diff --git a/test/test_tree_3d_linearizedeuler.jl b/test/test_tree_3d_linearizedeuler.jl index 00f8d62dad9..0390b0cbcf8 100644 --- a/test/test_tree_3d_linearizedeuler.jl +++ b/test/test_tree_3d_linearizedeuler.jl @@ -14,12 +14,12 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") l2=[ 0.020380328336745232, 0.027122442311921492, 0.02712244231192152, 8.273108096127844e-17, - 0.020380328336745232, + 0.020380328336745232 ], linf=[ 0.2916021983572774, 0.32763703462270843, 0.32763703462270855, 1.641012595221666e-15, - 0.2916021983572774, + 0.2916021983572774 ], tspan=(0.0, 1.0)) diff --git a/test/test_tree_3d_mhd.jl b/test/test_tree_3d_mhd.jl index 74107d462de..98016cb5196 100644 --- a/test/test_tree_3d_mhd.jl +++ b/test/test_tree_3d_mhd.jl @@ -21,7 +21,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 0.010391801950005755, 0.010391801950005759, 0.010393502246627087, - 2.524766553484067e-16, + 2.524766553484067e-16 ], linf=[ 0.28173002819718196, @@ -32,7 +32,7 @@ EXAMPLES_DIR = pkgdir(Trixi, "examples", "tree_3d_dgsem") 0.10950981489747313, 0.10950981489747136, 0.11517234329681891, - 2.0816911067714202e-15, + 2.0816911067714202e-15 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -55,7 +55,7 @@ end 1.0340110783830874e-15, 1.1779095371939702e-15, 9.961878521814573e-16, - 8.1201730630719145e-16, + 8.1201730630719145e-16 ], linf=[ 2.4424906541753444e-15, @@ -66,7 +66,7 @@ end 1.7763568394002505e-14, 1.0436096431476471e-14, 2.042810365310288e-14, - 7.057203733035201e-15, + 7.057203733035201e-15 ], atol=1000 * eps(), initial_condition=initial_condition_constant) @@ -91,7 +91,7 @@ end 0.00916500047763897, 0.005069863732625444, 0.011503011541926135, - 0.003988175543749985, + 0.003988175543749985 ], linf=[ 0.01188593784273051, @@ -102,7 +102,7 @@ end 0.03316343064943483, 0.011539436992528018, 0.04896687646520839, - 0.018714054039927555, + 0.018714054039927555 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -125,7 +125,7 @@ end 0.00900886245212482, 0.004926537542780259, 0.01153285554590683, - 0.0037842060148666886, + 0.0037842060148666886 ], linf=[ 0.012982853115883541, @@ -136,7 +136,7 @@ end 0.03198699034954189, 0.009761077061886558, 0.04433669321441455, - 0.01618905441148782, + 0.01618905441148782 ], volume_flux=(flux_derigs_etal, flux_nonconservative_powell)) # Ensure that we do not have excessive memory allocations @@ -160,7 +160,7 @@ end 0.007328739509868727, 0.00309794018112387, 0.009026356949274878, - 0.0035732583778049776, + 0.0035732583778049776 ], linf=[ 0.013734346970999622, @@ -171,7 +171,7 @@ end 0.055120532123884625, 0.018202716205672487, 0.06133688282205586, - 0.019888161885935608, + 0.019888161885935608 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -197,7 +197,7 @@ end 0.021125605214031118, 0.03295607553556973, 0.03296235755245784, - 7.16035229384135e-6, + 7.16035229384135e-6 ], linf=[ 0.017894703320895378, @@ -208,7 +208,7 @@ end 0.05381260695579509, 0.0884774018719996, 0.07784546966765199, - 7.71609149516089e-5, + 7.71609149516089e-5 ], initial_condition=function initial_condition_orszag_tang(x, t, equations::IdealGlmMhdEquations3D) @@ -269,7 +269,7 @@ end 0.007355137041002365, 0.0073551370410023425, 0.00735520932001833, - 0.000506140942330923, + 0.000506140942330923 ], linf=[ 0.28040713666979633, @@ -280,7 +280,7 @@ end 0.08770240288089526, 0.08770240288089792, 0.08773409387876674, - 0.050221095224119834, + 0.050221095224119834 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) diff --git a/test/test_unit.jl b/test/test_unit.jl index aa66ce2556f..5831122ffe2 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -1288,7 +1288,7 @@ end 0.5011914484393387, 0.8829127712445113, 0.43024132987932817, - 0.7560616633050348, + 0.7560616633050348 ] equations = CompressibleEulerEquations2D(1.4) @@ -1446,7 +1446,7 @@ end SVector(1.5, -0.2, 0.1, 5.0)] fluxes = [flux_central, flux_ranocha, flux_shima_etal, flux_kennedy_gruber, FluxLMARS(340), flux_hll, FluxHLL(min_max_speed_davis), flux_hlle, - flux_hllc, flux_chandrashekar, + flux_hllc, flux_chandrashekar ] for f_std in fluxes @@ -1471,7 +1471,7 @@ end SVector(1.5, -0.2, 0.1, 0.2, 5.0)] fluxes = [flux_central, flux_ranocha, flux_shima_etal, flux_kennedy_gruber, FluxLMARS(340), flux_hll, FluxHLL(min_max_speed_davis), flux_hlle, - flux_hllc, flux_chandrashekar, + flux_hllc, flux_chandrashekar ] for f_std in fluxes @@ -1510,7 +1510,7 @@ end flux_central, flux_hindenlang_gassner, FluxHLL(min_max_speed_davis), - flux_hlle, + flux_hlle ] for f_std in fluxes @@ -1537,7 +1537,7 @@ end flux_central, flux_hindenlang_gassner, FluxHLL(min_max_speed_davis), - flux_hlle, + flux_hlle ] for f_std in fluxes @@ -1671,7 +1671,7 @@ end Trixi.download("https://gist.githubusercontent.com/DanielDoehring/8db0808b6f80e59420c8632c0d8e2901/raw/39aacf3c737cd642636dd78592dbdfe4cb9499af/MonCoeffsS6p2.txt", joinpath(path_coeff_file, "gamma_6.txt")) - ode_algorithm = Trixi.PairedExplicitRK2(6, path_coeff_file) + ode_algorithm = Trixi.PairedExplicitRK2(6, path_coeff_file, 42) # dummy optimal time step (dt_opt plays no role in determining `a_matrix`) @test isapprox(ode_algorithm.a_matrix, [0.12405417889682908 0.07594582110317093 diff --git a/test/test_unstructured_2d.jl b/test/test_unstructured_2d.jl index 43b911cc665..43b18b48e72 100644 --- a/test/test_unstructured_2d.jl +++ b/test/test_unstructured_2d.jl @@ -18,11 +18,11 @@ isdir(outdir) && rm(outdir, recursive = true) @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_periodic.jl"), l2=[ 0.0001099216141882387, 0.0001303795774982892, - 0.00013037957749794242, 0.0002993727892598759, + 0.00013037957749794242, 0.0002993727892598759 ], linf=[ 0.006407280810928562, 0.009836067015418948, - 0.009836067015398076, 0.021903519038095176, + 0.009836067015398076, 0.021903519038095176 ]) # Ensure that we do not have excessive memory allocations # (e.g., from type instabilities) @@ -38,11 +38,11 @@ end @test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_free_stream.jl"), l2=[ 3.3937365073416665e-14, 2.44759188939065e-13, - 1.4585198700082895e-13, 4.716940764877479e-13, + 1.4585198700082895e-13, 4.716940764877479e-13 ], linf=[ 7.774003663030271e-12, 9.183176441496244e-11, - 4.5685344396417804e-11, 1.0534506600379245e-10, + 4.5685344396417804e-11, 1.0534506600379245e-10 ], tspan=(0.0, 0.1), atol=3.0e-13) @@ -62,13 +62,13 @@ end 0.040189107976346644, 0.04256154998030852, 0.03734120743842209, - 0.10057425897733507, + 0.10057425897733507 ], linf=[ 0.24455374304626365, 0.2970686406973577, 0.29339040847600434, - 0.5915610037764794, + 0.5915610037764794 ], tspan=(0.0, 0.25), surface_flux=FluxHLL(min_max_speed_naive)) @@ -88,13 +88,13 @@ end 0.0007213418215265047, 0.0006752337675043779, 0.0006437485997536973, - 0.0014782883071363362, + 0.0014782883071363362 ], linf=[ 0.004301288971032324, 0.005243995459478956, 0.004685630332338153, - 0.01750217718347713, + 0.01750217718347713 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -113,13 +113,13 @@ end 0.0007213418215265047, 0.0006752337675043779, 0.0006437485997536973, - 0.0014782883071363362, + 0.0014782883071363362 ], linf=[ 0.004301288971032324, 0.005243995459478956, 0.004685630332338153, - 0.01750217718347713, + 0.01750217718347713 ], # With the default `maxiters = 1` in coverage tests, # there would be no time steps after the restart. @@ -140,13 +140,13 @@ end 0.06594600495903137, 0.10803914821786433, 0.10805946357846291, - 0.1738171782368222, + 0.1738171782368222 ], linf=[ 0.31880214280781305, 0.3468488554333352, 0.34592958184413264, - 0.784555926860546, + 0.784555926860546 ], tspan=(0.0, 1.0)) # Ensure that we do not have excessive memory allocations @@ -179,13 +179,13 @@ end 2.19945600e-01, 1.71050453e-01, 1.71050453e-01, - 1.21719195e+00, + 1.21719195e+00 ], linf=[ 7.44218635e-01, 7.02887039e-01, 7.02887039e-01, - 6.11732719e+00, + 6.11732719e+00 ], tspan=(0.0, 0.3)) # Ensure that we do not have excessive memory allocations @@ -204,13 +204,13 @@ end 6.984024099236519e-5, 6.289022520363763e-5, 6.550951878107466e-5, - 0.00016222767700879948, + 0.00016222767700879948 ], linf=[ 0.0005367823248620951, 0.000671293180158461, 0.0005656680962440319, - 0.0013910024779804075, + 0.0013910024779804075 ], tspan=(0.0, 0.2), # With the default `maxiters = 1` in coverage tests, @@ -304,13 +304,13 @@ end 0.6107326269462766, 0.48666631722018877, 0.48309775159067053, - 0.29467422718511704, + 0.29467422718511704 ], linf=[ 2.776782342826098, 3.2158378644333707, 3.652920889487258, - 2.052861364219655, + 2.052861364219655 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -330,13 +330,13 @@ end Float32(0.6107326269462766), Float32(0.48666631722018877), Float32(0.48309775159067053), - Float32(0.29467422718511704), + Float32(0.29467422718511704) ], linf=[ Float32(2.776782342826098), 3.2162943f0, # this needs to be adapted 3.6683278f0, # this needed to be adapted - Float32(2.052861364219655), + Float32(2.052861364219655) ], tspan=(0.0f0, 0.25f0), RealT=Float32) @@ -356,13 +356,13 @@ end 1.2164292510839076, 2.6118925543469468e-12, 2.459878823146057e-12, - 1.2164292510839079, + 1.2164292510839079 ], linf=[ 1.5138512282315846, 4.706289937431355e-11, 4.913910192312011e-11, - 1.513851228231574, + 1.513851228231574 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations @@ -381,13 +381,13 @@ end 1.2164292510839063, 1.2676379081600215e-12, 1.255855785593831e-12, - 1.2164292510839074, + 1.2164292510839074 ], linf=[ 1.5138512282315604, 1.658245722058109e-11, 1.8665562182185795e-11, - 1.5138512282315737, + 1.5138512282315737 ], surface_flux=(FluxHydrostaticReconstruction(flux_lax_friedrichs, hydrostatic_reconstruction_audusse_etal), @@ -409,13 +409,13 @@ end 1.2164292510839083, 2.590643638636187e-12, 2.388742604639019e-12, - 1.2164292510839079, + 1.2164292510839079 ], linf=[ 1.5138512282315792, 4.761278694199934e-11, 4.910549479958249e-11, - 1.513851228231574, + 1.513851228231574 ], surface_flux=(flux_wintermeyer_etal, flux_nonconservative_wintermeyer_etal), @@ -436,13 +436,13 @@ end 0.001118134082248467, 0.044560486817464634, 0.01430926600634214, - 5.089218476759981e-6, + 5.089218476759981e-6 ], linf=[ 0.007798727223654822, 0.34782952734839157, 0.11161614702628064, - 2.6407324614341476e-5, + 2.6407324614341476e-5 ], tspan=(0.0, 0.025)) # Ensure that we do not have excessive memory allocations @@ -461,13 +461,13 @@ end 0.0011196838135485918, 0.01542895635133927, 0.017082803023121197, - 5.089218476759981e-6, + 5.089218476759981e-6 ], linf=[ 0.014299541415654371, 0.12783948113206955, 0.17626489583921323, - 2.6407324614341476e-5, + 2.6407324614341476e-5 ], surface_flux=(FluxHydrostaticReconstruction(flux_hll, hydrostatic_reconstruction_audusse_etal), @@ -489,13 +489,13 @@ end 0.001118046975499805, 0.04455969246244461, 0.014298120235633432, - 5.089218476759981e-6, + 5.089218476759981e-6 ], linf=[ 0.007776521213640031, 0.34768318303226353, 0.11075311228066198, - 2.6407324614341476e-5, + 2.6407324614341476e-5 ], surface_flux=(flux_wintermeyer_etal, flux_nonconservative_wintermeyer_etal), @@ -516,13 +516,13 @@ end 0.0011196838135486059, 0.015428956351339451, 0.017082803023120943, - 5.089218476759981e-6, + 5.089218476759981e-6 ], linf=[ 0.01429954141565526, 0.12783948113205668, 0.176264895839215, - 2.6407324614341476e-5, + 2.6407324614341476e-5 ], surface_flux=(flux_hll, flux_nonconservative_fjordholm_etal), @@ -543,13 +543,13 @@ end 1.1577518608950964e-5, 4.761947272222427e-13, 4.546045873135486e-13, - 1.157751860893347e-5, + 1.157751860893347e-5 ], linf=[ 8.394063879002545e-5, 1.1211566736150389e-10, 1.0890426250906834e-10, - 8.394063879602065e-5, + 8.394063879602065e-5 ], tspan=(0.0, 2.0)) # Ensure that we do not have excessive memory allocations @@ -567,11 +567,11 @@ end "elixir_shallowwater_wall_bc_shockcapturing.jl"), l2=[ 0.0442113635677511, 0.1537465759364839, 0.16003586586203947, - 6.225080477067782e-8, + 6.225080477067782e-8 ], linf=[ 0.6347820607387928, 2.0078125433846736, 2.530726684667019, - 3.982097165344811e-7, + 3.982097165344811e-7 ], tspan=(0.0, 0.05)) # Ensure that we do not have excessive memory allocations @@ -591,13 +591,13 @@ end 0.612551520607341, 0.5039173660221961, 0.49136517934903523, - 0.29467422718511704, + 0.29467422718511704 ], linf=[ 2.7636771472622197, 3.236168963021072, 3.3363936775653826, - 2.052861364219655, + 2.052861364219655 ], tspan=(0.0, 0.25)) # Ensure that we do not have excessive memory allocations diff --git a/utils/trixi-format-file.jl b/utils/trixi-format-file.jl index 9b9a0e4949c..fabfcf21fde 100755 --- a/utils/trixi-format-file.jl +++ b/utils/trixi-format-file.jl @@ -2,7 +2,7 @@ using Pkg Pkg.activate(; temp = true, io = devnull) -Pkg.add(PackageSpec(name = "JuliaFormatter", version = "1.0.45"); preserve = PRESERVE_ALL, +Pkg.add(PackageSpec(name = "JuliaFormatter", version = "1.0.60"); preserve = PRESERVE_ALL, io = devnull) using JuliaFormatter: format_file diff --git a/utils/trixi-format.jl b/utils/trixi-format.jl index 63f14078807..59021c22c0d 100755 --- a/utils/trixi-format.jl +++ b/utils/trixi-format.jl @@ -2,7 +2,7 @@ using Pkg Pkg.activate(; temp = true, io = devnull) -Pkg.add(PackageSpec(name = "JuliaFormatter", version = "1.0.45"); preserve = PRESERVE_ALL, +Pkg.add(PackageSpec(name = "JuliaFormatter", version = "1.0.60"); preserve = PRESERVE_ALL, io = devnull) using JuliaFormatter: format