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 = 1.0)
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.SSP3433();
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: ……………………………………………… ParabolicFormulationBassiRebay1 │
│ 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 │
│ current capacity: ……………………………………………… 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 Hyperbolic: …………………………………………………… Returns{Float64}(1.0) │
│ CFL Parabolic: ……………………………………………………… Returns{Float64}(0.0) │
│ Interval: …………………………………………………………………… 1 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Time integration │
│ ════════════════ │
│ Start time: ……………………………………………………………… 0.0 │
│ Final time: ……………………………………………………………… 1.5 │
│ time integrator: ………………………………………………… SSP3433 │
│ adaptive: …………………………………………………………………… false │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Environment information │
│ ═══════════════════════ │
│ #threads: …………………………………………………………………… 1 │
│ threading backend: …………………………………………… static │
│ LoopVectorization: …………………………………………… disabled │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 0 run time: 7.11000000e-07 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: 617.654 MiB
#elements: 256 device memory: 0.000 MiB
Variable: scalar
L2 error: 3.94120825e-06
Linf error: 1.23670425e-05
∑∂S/∂U ⋅ Uₜ : -1.23370054e-01
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 10 │ Δt: 1.2500e-02 │ sim. time: 1.2500e-01 (8.333%) │ run time: 5.9480e+01 s
#timesteps: 20 │ Δt: 1.2500e-02 │ sim. time: 2.5000e-01 (16.667%) │ run time: 5.9606e+01 s
#timesteps: 30 │ Δt: 1.2500e-02 │ sim. time: 3.7500e-01 (25.000%) │ run time: 5.9733e+01 s
#timesteps: 40 │ Δt: 1.2500e-02 │ sim. time: 5.0000e-01 (33.333%) │ run time: 5.9862e+01 s
#timesteps: 50 │ Δt: 1.2500e-02 │ sim. time: 6.2500e-01 (41.667%) │ run time: 5.9993e+01 s
#timesteps: 60 │ Δt: 1.2500e-02 │ sim. time: 7.5000e-01 (50.000%) │ run time: 6.0126e+01 s
#timesteps: 70 │ Δt: 1.2500e-02 │ sim. time: 8.7500e-01 (58.333%) │ run time: 6.0266e+01 s
#timesteps: 80 │ Δt: 1.2500e-02 │ sim. time: 1.0000e+00 (66.667%) │ run time: 6.0411e+01 s
#timesteps: 90 │ Δt: 1.2500e-02 │ sim. time: 1.1250e+00 (75.000%) │ run time: 6.0562e+01 s
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 100 run time: 6.07536378e+01 s
Δt: 1.25000000e-02 └── GC time: 5.22377672e-01 s (0.860%)
sim. time: 1.25000000e+00 (83.333%) time/DOF/rhs!: 7.39791383e-08 s
PID: 3.70591907e-05 s
#DOFs per field: 4096 alloc'd memory: 537.258 MiB
#elements: 256 device memory: 0.000 MiB
Variable: scalar
L2 error: 4.05753105e-05
Linf error: 8.89682358e-05
∑∂S/∂U ⋅ Uₜ : -1.04542977e-02
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 110 │ Δt: 1.2500e-02 │ sim. time: 1.3750e+00 (91.667%) │ run time: 6.0886e+01 s
────────────────────────────────────────────────────────────────────────────────────────────────────
Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
#timesteps: 120 run time: 6.11062022e+01 s
Δt: 1.25000000e-02 └── GC time: 5.40218329e-01 s (0.884%)
sim. time: 1.50000000e+00 (100.000%) time/DOF/rhs!: 7.39306249e-08 s
PID: 1.07244596e-06 s
#DOFs per field: 4096 alloc'd memory: 497.473 MiB
#elements: 256 device memory: 0.000 MiB
Variable: scalar
L2 error: 3.88015754e-05
Linf error: 2.33956836e-04
∑∂S/∂U ⋅ Uₜ : -6.38139917e-03
────────────────────────────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────────────────────────
Trixi.jl simulation finished. Final time: 1.5 Time steps: 120 (accepted), 120 (total)
────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────
Trixi.jl Time Allocations
─────────────────────── ────────────────────────
Tot / % measured: 61.1s / 2.0% 4.38GiB / 0.2%
Section ncalls time %tot avg alloc %tot avg
─────────────────────────────────────────────────────────────────────────────────────────
parabolic rhs! 5.59k 1.15s 93.1% 205μs 9.00KiB 0.1% 1.65B
calculate gradient 5.59k 511ms 41.5% 91.4μs 3.33KiB 0.0% 0.61B
volume integral 5.59k 320ms 25.9% 57.1μs 0.00B 0.0% 0.00B
Jacobian 5.59k 58.4ms 4.7% 10.4μs 0.00B 0.0% 0.00B
surface integral 5.59k 41.0ms 3.3% 7.32μs 0.00B 0.0% 0.00B
interface flux 5.59k 38.6ms 3.1% 6.90μs 0.00B 0.0% 0.00B
prolong2interfaces 5.59k 34.5ms 2.8% 6.17μs 0.00B 0.0% 0.00B
reset gradients 5.59k 12.1ms 1.0% 2.17μs 0.00B 0.0% 0.00B
~calculate gradient~ 5.59k 5.49ms 0.4% 981ns 3.33KiB 0.0% 0.61B
prolong2mortars 5.59k 501μs 0.0% 89.6ns 0.00B 0.0% 0.00B
mortar flux 5.59k 361μs 0.0% 64.5ns 0.00B 0.0% 0.00B
prolong2boundaries 5.59k 356μs 0.0% 63.7ns 0.00B 0.0% 0.00B
boundary flux 5.59k 163μs 0.0% 29.1ns 0.00B 0.0% 0.00B
volume integral 5.59k 339ms 27.5% 60.6μs 0.00B 0.0% 0.00B
calculate parabolic fluxes 5.59k 110ms 8.9% 19.7μs 0.00B 0.0% 0.00B
interface flux 5.59k 38.0ms 3.1% 6.80μs 0.00B 0.0% 0.00B
transform variables 5.59k 37.1ms 3.0% 6.63μs 0.00B 0.0% 0.00B
prolong2interfaces 5.59k 34.4ms 2.8% 6.15μs 0.00B 0.0% 0.00B
surface integral 5.59k 34.2ms 2.8% 6.12μs 0.00B 0.0% 0.00B
Jacobian 5.59k 28.2ms 2.3% 5.05μs 0.00B 0.0% 0.00B
~parabolic rhs!~ 5.59k 7.95ms 0.6% 1.42μs 5.67KiB 0.1% 1.04B
reset ∂u/∂t 5.59k 5.99ms 0.5% 1.07μs 0.00B 0.0% 0.00B
prolong2mortars 5.59k 460μs 0.0% 82.3ns 0.00B 0.0% 0.00B
mortar flux 5.59k 397μs 0.0% 71.0ns 0.00B 0.0% 0.00B
prolong2boundaries 5.59k 340μs 0.0% 60.8ns 0.00B 0.0% 0.00B
boundary flux 5.59k 165μs 0.0% 29.5ns 0.00B 0.0% 0.00B
source terms parabolic 5.59k 163μs 0.0% 29.1ns 0.00B 0.0% 0.00B
rhs! 480 46.7ms 3.8% 97.3μs 4.78KiB 0.1% 10.2B
volume integral 480 31.6ms 2.6% 65.9μs 0.00B 0.0% 0.00B
interface flux 480 3.93ms 0.3% 8.18μs 0.00B 0.0% 0.00B
surface integral 480 3.39ms 0.3% 7.06μs 0.00B 0.0% 0.00B
prolong2interfaces 480 3.27ms 0.3% 6.81μs 0.00B 0.0% 0.00B
Jacobian 480 3.22ms 0.3% 6.71μs 0.00B 0.0% 0.00B
~rhs!~ 480 725μs 0.1% 1.51μs 4.78KiB 0.1% 10.2B
reset ∂u/∂t 480 367μs 0.0% 764ns 0.00B 0.0% 0.00B
prolong2mortars 480 47.5μs 0.0% 99.0ns 0.00B 0.0% 0.00B
mortar flux 480 42.9μs 0.0% 89.4ns 0.00B 0.0% 0.00B
prolong2boundaries 480 42.2μs 0.0% 88.0ns 0.00B 0.0% 0.00B
boundary flux 480 15.3μs 0.0% 31.9ns 0.00B 0.0% 0.00B
source terms 480 14.3μs 0.0% 29.7ns 0.00B 0.0% 0.00B
analyze solution 3 38.1ms 3.1% 12.7ms 7.24MiB 99.6% 2.41MiB
calculate dt 121 161μs 0.0% 1.33μs 17.0KiB 0.2% 144B
─────────────────────────────────────────────────────────────────────────────────────────This page was generated using Literate.jl.