Using an implicit-explicit (IMEX) Runge-Kutta solver based on Ariadne with Trixi.jl
using Trixi
using Theseus
using CairoMakieNotes: You must disable both Polyester and LoopVectorization for Enzyme to be able to differentiate Trixi.jl.
LocalPreferences.jl
[Trixi]
loop_vectorization = false
backend = "static"@assert Trixi._PREFERENCE_THREADING !== :polyester
@assert !Trixi._PREFERENCE_LOOPVECTORIZATIONFirst call to load callbacks
trixi_include(@__MODULE__, joinpath(examples_dir(), "tree_2d_dgsem", "elixir_advection_diffusion.jl"), sol = nothing);
stepsize_callback = StepsizeCallback(cfl = 0.5)
callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback, stepsize_callback)
trixi_include(@__MODULE__, joinpath(examples_dir(), "tree_2d_dgsem", "elixir_advection_diffusion.jl"), sol = nothing, callbacks = callbacks);
###############################################################################[ Info: You just called `trixi_include`. Julia may now compile the code, please be patient.
[ Info: You just called `trixi_include`. Julia may now compile the code, please be patient.run the simulation
sol = solve(
ode,
Theseus.ARS222(); # ARS111, ARS222, ARS443
dt = 0.01, # solve needs some value here but it will be overwritten by the stepsize_callback
ode_default_options()..., callback = callbacks,
krylov_algo = :gmres,
);
████████╗██████╗ ██╗██╗ ██╗██╗
╚══██╔══╝██╔══██╗██║╚██╗██╔╝██║
██║ ██████╔╝██║ ╚███╔╝ ██║
██║ ██╔══██╗██║ ██╔██╗ ██║
██║ ██║ ██║██║██╔╝ ██╗██║
╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SemidiscretizationHyperbolicParabolic │
│ ═════════════════════════════════════ │
│ #spatial dimensions: ………………………… 2 │
│ mesh: ………………………………………………………………… TreeMesh{2, Trixi.SerialTree{2, Float64}} with length 341 │
│ hyperbolic equations: ……………………… LinearScalarAdvectionEquation2D │
│ parabolic equations: ………………………… LaplaceDiffusion2D │
│ initial condition: ……………………………… initial_condition_diffusive_convergence_test │
│ source terms: …………………………………………… nothing │
│ source terms parabolic: ………………… nothing │
│ solver: …………………………………………………………… DG │
│ parabolic solver: ………………………………… ViscousFormulationBassiRebay1 │
│ total #DOFs per field: …………………… 4096 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ TreeMesh{2, Trixi.SerialTree{2, Float64}} │
│ ═════════════════════════════════════════ │
│ center: …………………………………………………………… [0.0, 0.0] │
│ length: …………………………………………………………… 2.0 │
│ periodicity: ……………………………………………… (true, true) │
│ current #cells: ……………………………………… 341 │
│ #leaf-cells: ……………………………………………… 256 │
│ maximum #cells: ……………………………………… 30000 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ LinearScalarAdvectionEquation2D │
│ ═══════════════════════════════ │
│ #variables: ………………………………………………… 1 │
│ │ variable 1: …………………………………………… scalar │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DG{Float64} │
│ ═══════════ │
│ basis: ……………………………………………………………… LobattoLegendreBasis{Float64}(polydeg=3) │
│ mortar: …………………………………………………………… LobattoLegendreMortarL2{Float64}(polydeg=3) │
│ surface integral: ………………………………… SurfaceIntegralWeakForm │
│ │ surface flux: ……………………………………… FluxLaxFriedrichs(max_abs_speed) │
│ volume integral: …………………………………… VolumeIntegralWeakForm │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ AnalysisCallback │
│ ════════════════ │
│ interval: ……………………………………………………… 100 │
│ analyzer: ……………………………………………………… LobattoLegendreAnalyzer{Float64}(polydeg=6) │
│ │ error 1: …………………………………………………… l2_error │
│ │ error 2: …………………………………………………… linf_error │
│ │ integral 1: …………………………………………… entropy_timederivative │
│ save analysis to file: …………………… no │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ AliveCallback │
│ ═════════════ │
│ interval: ……………………………………………………… 10 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ StepsizeCallback │
│ ════════════════ │
│ CFL Advective: ………………………………………… Returns{Float64}(0.5) │
│ CFL Diffusive: ………………………………………… Returns{Float64}(0.0) │
│ Interval: ……………………………………………………… 1 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Time integration │
│ ════════════════ │
│ Start time: ………………………………………………… 0.0 │
│ Final time: ………………………………………………… 1.5 │
│ time integrator: …………………………………… ARS222 │
│ adaptive: ……………………………………………………… false │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Environment information │
│ ═══════════════════════ │
│ #threads: ……………………………………………………… 1 │
│ threading backend: ……………………………… static │
│ LoopVectorization: ……………………………… disabled │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 0 run time: 3.71443450e-01 s
Δt: 1.00000000e-02 └── GC time: 0.00000000e+00 s (0.000%)
sim. time: 0.00000000e+00 (0.000%) time/DOF/rhs!: NaN s
PID: Inf s
#DOFs per field: 4096 alloc'd memory: 1080.973 MiB
#elements: 256
Variable: scalar
L2 error: 3.94120825e-06
Linf error: 1.23670425e-05
∑∂S/∂U ⋅ Uₜ : -1.23370054e-01
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 10 │ Δt: 6.2500e-03 │ sim. time: 6.2500e-02 (4.167%) │ run time: 6.3822e+01 s
#timesteps: 20 │ Δt: 6.2500e-03 │ sim. time: 1.2500e-01 (8.333%) │ run time: 6.4077e+01 s
#timesteps: 30 │ Δt: 6.2500e-03 │ sim. time: 1.8750e-01 (12.500%) │ run time: 6.4143e+01 s
#timesteps: 40 │ Δt: 6.2500e-03 │ sim. time: 2.5000e-01 (16.667%) │ run time: 6.4197e+01 s
#timesteps: 50 │ Δt: 6.2500e-03 │ sim. time: 3.1250e-01 (20.833%) │ run time: 6.4232e+01 s
#timesteps: 60 │ Δt: 6.2500e-03 │ sim. time: 3.7500e-01 (25.000%) │ run time: 6.4272e+01 s
#timesteps: 70 │ Δt: 6.2500e-03 │ sim. time: 4.3750e-01 (29.167%) │ run time: 6.4312e+01 s
#timesteps: 80 │ Δt: 6.2500e-03 │ sim. time: 5.0000e-01 (33.333%) │ run time: 6.4351e+01 s
#timesteps: 90 │ Δt: 6.2500e-03 │ sim. time: 5.6250e-01 (37.500%) │ run time: 6.4391e+01 s
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 100 run time: 6.48035260e+01 s
Δt: 6.25000000e-03 └── GC time: 2.09457122e+00 s (3.232%)
sim. time: 6.25000000e-01 (41.667%) time/DOF/rhs!: 7.68959011e-08 s
PID: 5.24337110e-05 s
#DOFs per field: 4096 alloc'd memory: 482.279 MiB
#elements: 256
Variable: scalar
L2 error: 3.81726799e-04
Linf error: 5.50778812e-04
∑∂S/∂U ⋅ Uₜ : -3.59099416e-02
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 110 │ Δt: 6.2500e-03 │ sim. time: 6.8750e-01 (45.833%) │ run time: 6.4472e+01 s
#timesteps: 120 │ Δt: 6.2500e-03 │ sim. time: 7.5000e-01 (50.000%) │ run time: 6.4511e+01 s
#timesteps: 130 │ Δt: 6.2500e-03 │ sim. time: 8.1250e-01 (54.167%) │ run time: 6.4546e+01 s
#timesteps: 140 │ Δt: 6.2500e-03 │ sim. time: 8.7500e-01 (58.333%) │ run time: 6.4586e+01 s
#timesteps: 150 │ Δt: 6.2500e-03 │ sim. time: 9.3750e-01 (62.500%) │ run time: 6.4626e+01 s
#timesteps: 160 │ Δt: 6.2500e-03 │ sim. time: 1.0000e+00 (66.667%) │ run time: 6.4666e+01 s
#timesteps: 170 │ Δt: 6.2500e-03 │ sim. time: 1.0625e+00 (70.833%) │ run time: 6.4706e+01 s
#timesteps: 180 │ Δt: 6.2500e-03 │ sim. time: 1.1250e+00 (75.000%) │ run time: 6.4745e+01 s
#timesteps: 190 │ Δt: 6.2500e-03 │ sim. time: 1.1875e+00 (79.167%) │ run time: 6.4785e+01 s
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 200 run time: 6.51938526e+01 s
Δt: 6.25000000e-03 └── GC time: 2.12704548e+00 s (3.263%)
sim. time: 1.25000000e+00 (83.333%) time/DOF/rhs!: 7.61306438e-08 s
PID: 3.16696173e-07 s
#DOFs per field: 4096 alloc'd memory: 516.616 MiB
#elements: 256
Variable: scalar
L2 error: 4.11963020e-04
Linf error: 5.84938377e-04
∑∂S/∂U ⋅ Uₜ : -1.04524859e-02
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 210 │ Δt: 6.2500e-03 │ sim. time: 1.3125e+00 (87.500%) │ run time: 6.4862e+01 s
#timesteps: 220 │ Δt: 6.2500e-03 │ sim. time: 1.3750e+00 (91.667%) │ run time: 6.4902e+01 s
#timesteps: 230 │ Δt: 6.2500e-03 │ sim. time: 1.4375e+00 (95.833%) │ run time: 6.4942e+01 s
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 240 run time: 6.53542328e+01 s
Δt: 6.25000000e-03 └── GC time: 2.14313805e+00 s (3.279%)
sim. time: 1.50000000e+00 (100.000%) time/DOF/rhs!: 7.62571094e-08 s
PID: 3.15079832e-07 s
#DOFs per field: 4096 alloc'd memory: 496.343 MiB
#elements: 256
Variable: scalar
L2 error: 3.86247716e-04
Linf error: 5.47814220e-04
∑∂S/∂U ⋅ Uₜ : -6.38001271e-03
────────────────────────────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────────────────────────
Trixi.jl simulation finished. Final time: 1.5 Time steps: 240 (accepted), 240 (total)
────────────────────────────────────────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────────────────────────
Trixi.jl Time Allocations
─────────────────────── ────────────────────────
Tot / % measured: 65.4s / 1.0% 4.36GiB / 0.2%
Section ncalls time %tot avg alloc %tot avg
───────────────────────────────────────────────────────────────────────────────────────
parabolic rhs! 2.65k 567ms 87.6% 214μs 9.00KiB 0.1% 3.48B
calculate gradient 2.65k 252ms 39.0% 95.3μs 3.33KiB 0.0% 1.29B
volume integral 2.65k 157ms 24.3% 59.4μs 0.00B 0.0% 0.00B
Jacobian 2.65k 29.7ms 4.6% 11.2μs 0.00B 0.0% 0.00B
surface integral 2.65k 20.4ms 3.1% 7.70μs 0.00B 0.0% 0.00B
interface flux 2.65k 18.1ms 2.8% 6.84μs 0.00B 0.0% 0.00B
prolong2interfaces 2.65k 17.7ms 2.7% 6.67μs 0.00B 0.0% 0.00B
reset gradients 2.65k 5.97ms 0.9% 2.25μs 0.00B 0.0% 0.00B
~calculate gradient~ 2.65k 2.59ms 0.4% 978ns 3.33KiB 0.0% 1.29B
prolong2mortars 2.65k 282μs 0.0% 107ns 0.00B 0.0% 0.00B
mortar flux 2.65k 195μs 0.0% 73.6ns 0.00B 0.0% 0.00B
prolong2boundaries 2.65k 189μs 0.0% 71.3ns 0.00B 0.0% 0.00B
boundary flux 2.65k 77.4μs 0.0% 29.2ns 0.00B 0.0% 0.00B
volume integral 2.65k 168ms 25.9% 63.4μs 0.00B 0.0% 0.00B
calculate viscous fluxes 2.65k 52.4ms 8.1% 19.8μs 0.00B 0.0% 0.00B
transform variables 2.65k 18.5ms 2.9% 6.99μs 0.00B 0.0% 0.00B
surface integral 2.65k 18.1ms 2.8% 6.83μs 0.00B 0.0% 0.00B
interface flux 2.65k 18.0ms 2.8% 6.80μs 0.00B 0.0% 0.00B
prolong2interfaces 2.65k 17.7ms 2.7% 6.68μs 0.00B 0.0% 0.00B
Jacobian 2.65k 14.6ms 2.3% 5.53μs 0.00B 0.0% 0.00B
~parabolic rhs!~ 2.65k 3.80ms 0.6% 1.44μs 5.67KiB 0.1% 2.19B
reset ∂u/∂t 2.65k 2.91ms 0.4% 1.10μs 0.00B 0.0% 0.00B
prolong2mortars 2.65k 281μs 0.0% 106ns 0.00B 0.0% 0.00B
prolong2boundaries 2.65k 197μs 0.0% 74.3ns 0.00B 0.0% 0.00B
mortar flux 2.65k 149μs 0.0% 56.4ns 0.00B 0.0% 0.00B
source terms parabolic 2.65k 77.6μs 0.0% 29.3ns 0.00B 0.0% 0.00B
boundary flux 2.65k 77.6μs 0.0% 29.3ns 0.00B 0.0% 0.00B
rhs! 720 71.0ms 11.0% 98.6μs 4.78KiB 0.0% 6.80B
volume integral 720 47.9ms 7.4% 66.5μs 0.00B 0.0% 0.00B
interface flux 720 5.90ms 0.9% 8.19μs 0.00B 0.0% 0.00B
surface integral 720 5.53ms 0.9% 7.68μs 0.00B 0.0% 0.00B
Jacobian 720 5.12ms 0.8% 7.11μs 0.00B 0.0% 0.00B
prolong2interfaces 720 5.02ms 0.8% 6.97μs 0.00B 0.0% 0.00B
~rhs!~ 720 807μs 0.1% 1.12μs 4.78KiB 0.0% 6.80B
reset ∂u/∂t 720 561μs 0.1% 780ns 0.00B 0.0% 0.00B
prolong2mortars 720 59.9μs 0.0% 83.3ns 0.00B 0.0% 0.00B
mortar flux 720 54.4μs 0.0% 75.5ns 0.00B 0.0% 0.00B
prolong2boundaries 720 41.3μs 0.0% 57.4ns 0.00B 0.0% 0.00B
boundary flux 720 21.3μs 0.0% 29.6ns 0.00B 0.0% 0.00B
source terms 720 20.9μs 0.0% 29.1ns 0.00B 0.0% 0.00B
analyze solution 4 9.33ms 1.4% 2.33ms 9.65MiB 99.5% 2.41MiB
calculate dt 241 182μs 0.0% 754ns 33.9KiB 0.3% 144B
───────────────────────────────────────────────────────────────────────────────────────This page was generated using Literate.jl.