trixi-framework / trixi-framework/Trixi.jl

Check influence of the step size controller on performance for SSPRK43 elixirs

Open
#1,087 6 comments 0 reactions 1 assignee Claimed by @ranocha View on GitHub
triage upstream
Dominant language
Julia
Stars
731
Forks
167
Avg merge
2d 18h
Merged PRs (30d)
25

Description

The default `controller` with `SSPRK43()` in OrdinaryDiffEq.jl is a `PIController` with effective parameters `beta1 = 0.70, beta2 = -0.40`. However, this controller is not step size control stable. We should check the difference between this standard controller and the one of [Ranocha, Dalcin, Parsani, Ketcheson (2021)](https://doi.org/10.1007/s42967-021-00159-w), i.e., `controller = PIDController(0.55, -0.27, 0.05)`.

- [x] `examples/p4est_2d_dgsem/elixir_euler_double_mach_amr.jl` with `tspan=(0.0, 0.02)`
- `PIController`: Time steps: 2993 (accepted), 3074 (total), 2.99k AMR, 12.3k rhs!
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 1904 (accepted), 1904 (total), 1.90k AMR, 7.62k rhs!
- Visually, the solutions at the final time look very much the same (but we cannot really see something anyway)
- ![elixir_euler_double_mach_amr_PIController](https://user-images.githubusercontent.com/12693098/158162093-ec32bf57-397f-48b9-98fd-3440d953549f.png)
- ![elixir_PIDController](https://user-images.githubusercontent.com/12693098/158162398-a4988576-8db7-4786-be5d-de0316406873.png)
- [x] `examples/p4est_2d_dgsem/elixir_euler_forward_step_amr.jl` with `tspan=(0.0, 0.01)`
- `PIController`: Time steps: 5381 (accepted), 5495 (total), 1.08k AMR, 22.0k rhs!
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 3612 (accepted), 3685 (total), 722 AMR, 14.7k rhs!
- Visually, the solutions at the final time look very much the same (but we cannot really see something anyway)
- ![elixir_euler_forward_step_amr_PIController](https://user-images.githubusercontent.com/12693098/158145654-7c7219af-66bd-4f02-964a-2835c7255a18.png)
- ![elixir_euler_forward_step_amr_PIDController](https://user-images.githubusercontent.com/12693098/158146178-06cf08d2-581b-48f2-a584-bc71a6c51700.png)
- [x] `examples/p4est_2d_dgsem/elixir_euler_supersonic_cylinder.jl` with `tspan=(0.0, 0.1)`
- `PIController`: Time steps: 3949 (accepted), 4009 (total), 3.95k AMR, 16.0k rhs!
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 2408 (accepted), 2432 (total), 2.41k AMR, 9.73k rhs!
- Visually, the solutions at the final time look very much the same
- ![elixir_euler_supersonic_cylinder_PIController](https://user-images.githubusercontent.com/12693098/158143478-092205e5-6e32-4407-8de3-cca7320471e2.png)
- ![elixir_euler_supersonic_cylinder_PIDController](https://user-images.githubusercontent.com/12693098/158144857-3261f367-4bd9-4582-b0af-d5844e1b16c3.png)
- [x] `examples/tree_2d_dgsem/elixir_euler_astro_jet_amr.jl`
- `PIController`: Time steps: 7020 (accepted), 8809 (total)
- `PIDController(0.55, -0.27, 0.05)` with `dt=1.0e-12` (does not work with default settings): Time steps: 6047 (accepted), 7618 (total)
- Visually, the solutions at the final time look very much the same
- ![elixir_euler_astro_jet_amr_PIController](https://user-images.githubusercontent.com/12693098/158139858-4d942b61-6761-4f54-8723-16f5f8c4e78c.png)
- ![elixir_PIDController](https://user-images.githubusercontent.com/12693098/158141641-92e9f485-7a84-4d4f-8cf1-1f52528351f1.png)
- [x] `examples/tree_2d_dgsem/elixir_euler_colliding_flow_amr.jl`
- `PIController`: Time steps: 6815 (accepted), 7513 (total)
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 6398 (accepted), 6510 (total)
- Visually, the solutions at the final time look reasonably similar
- ![elixir_euler_colliding_flow_amr_PIController](https://user-images.githubusercontent.com/12693098/158138882-40410f88-0f5b-40f7-874d-7699519c1dee.png)
- ![elixir_euler_colliding_flow_amr_PIDController](https://user-images.githubusercontent.com/12693098/158138515-e3da498b-8ea6-4f37-b1cd-0b50bdb6d692.png)
- [x] `examples/tree_2d_dgsem/elixir_euler_colliding_flow.jl`
- `PIController`: Time steps: 2341 (accepted), 2565 (total)
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 2039 (accepted), 2053 (total)
- Visually, the solutions at the final time look reasonably similar
- ![elixirr_euler_colliding_flow_PIController](https://user-images.githubusercontent.com/12693098/158424505-68a00d3e-3627-4a8c-a9d2-9ecc86a436b6.png)
- ![elixir_euler_colliding_flow_PIDController](https://user-images.githubusercontent.com/12693098/158136595-229cc397-03f7-4077-9961-c802e6f94100.png)
- [x] `examples/tree_2d_dgsem/elixir_kpp.jl`
- `PIController`: Time steps: 857 (accepted), 864 (total)
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 580 (accepted), 583 (total)
- Visually, the solutions at the final time look very much the same
- ![elixir_kpp_PIController](https://user-images.githubusercontent.com/12693098/158134832-0ba21db1-3d73-4c24-9951-7402a567eaac.png)
- ![elixir_kpp_PIDController](https://user-images.githubusercontent.com/12693098/158134720-989c78c7-68b2-4e11-9c08-f9970d7d9845.png)
- [x] `examples/unstructured_2d_dgsem/elixir_euler_periodic.jl` with `tspan = (0.0, 100.0)`
- `PIController`: Time steps: 5282 (accepted), 5283 (total)
- `PIDController(0.55, -0.27, 0.05)`: Time steps: 5281 (accepted), 5283 (total)
- Errors of the same order of magnitude (but different, slightly worse for the `PIDConrtoller`)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.