Using an implicit-explicit (IMEX) Runge-Kutta solver based on Ariadne with Trixi.jl

using Trixi
using Theseus
using CairoMakie

Notes: 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_LOOPVECTORIZATION

First 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: ……………………………………………… 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}(0.5)                                       │
│ CFL Parabolic: ……………………………………………………… 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.70965591e-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:       1135.722 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: 6.2500e-03 │ sim. time: 6.2500e-02 (4.167%)   │ run time: 6.1243e+01 s
#timesteps:     20 │ Δt: 6.2500e-03 │ sim. time: 1.2500e-01 (8.333%)   │ run time: 6.1457e+01 s
#timesteps:     30 │ Δt: 6.2500e-03 │ sim. time: 1.8750e-01 (12.500%)  │ run time: 6.1593e+01 s
#timesteps:     40 │ Δt: 6.2500e-03 │ sim. time: 2.5000e-01 (16.667%)  │ run time: 6.1635e+01 s
#timesteps:     50 │ Δt: 6.2500e-03 │ sim. time: 3.1250e-01 (20.833%)  │ run time: 6.2339e+01 s
#timesteps:     60 │ Δt: 6.2500e-03 │ sim. time: 3.7500e-01 (25.000%)  │ run time: 6.2435e+01 s
#timesteps:     70 │ Δt: 6.2500e-03 │ sim. time: 4.3750e-01 (29.167%)  │ run time: 6.2487e+01 s
#timesteps:     80 │ Δt: 6.2500e-03 │ sim. time: 5.0000e-01 (33.333%)  │ run time: 6.2536e+01 s
#timesteps:     90 │ Δt: 6.2500e-03 │ sim. time: 5.6250e-01 (37.500%)  │ run time: 6.2571e+01 s

────────────────────────────────────────────────────────────────────────────────────────────────────
 Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
 #timesteps:                100                run time:       6.29815227e+01 s
 Δt:             6.25000000e-03                └── GC time:    1.49155508e+00 s (2.368%)
 sim. time:      6.25000000e-01 (41.667%)      time/DOF/rhs!:  7.48572109e-08 s
                                               PID:            5.09515943e-05 s
 #DOFs per field:          4096                alloc'd memory:        472.233 MiB
 #elements:                 256                device memory:           0.000 MiB

 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.2650e+01 s
#timesteps:    120 │ Δt: 6.2500e-03 │ sim. time: 7.5000e-01 (50.000%)  │ run time: 6.2684e+01 s
#timesteps:    130 │ Δt: 6.2500e-03 │ sim. time: 8.1250e-01 (54.167%)  │ run time: 6.2726e+01 s
#timesteps:    140 │ Δt: 6.2500e-03 │ sim. time: 8.7500e-01 (58.333%)  │ run time: 6.2764e+01 s
#timesteps:    150 │ Δt: 6.2500e-03 │ sim. time: 9.3750e-01 (62.500%)  │ run time: 6.2803e+01 s
#timesteps:    160 │ Δt: 6.2500e-03 │ sim. time: 1.0000e+00 (66.667%)  │ run time: 6.2841e+01 s
#timesteps:    170 │ Δt: 6.2500e-03 │ sim. time: 1.0625e+00 (70.833%)  │ run time: 6.2880e+01 s
#timesteps:    180 │ Δt: 6.2500e-03 │ sim. time: 1.1250e+00 (75.000%)  │ run time: 6.2918e+01 s
#timesteps:    190 │ Δt: 6.2500e-03 │ sim. time: 1.1875e+00 (79.167%)  │ run time: 6.2956e+01 s

────────────────────────────────────────────────────────────────────────────────────────────────────
 Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
 #timesteps:                200                run time:       6.33663331e+01 s
 Δt:             6.25000000e-03                └── GC time:    1.52341810e+00 s (2.404%)
 sim. time:      1.25000000e+00 (83.333%)      time/DOF/rhs!:  7.49389577e-08 s
                                               PID:            3.11742347e-07 s
 #DOFs per field:          4096                alloc'd memory:        482.182 MiB
 #elements:                 256                device memory:           0.000 MiB

 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.3034e+01 s
#timesteps:    220 │ Δt: 6.2500e-03 │ sim. time: 1.3750e+00 (91.667%)  │ run time: 6.3072e+01 s
#timesteps:    230 │ Δt: 6.2500e-03 │ sim. time: 1.4375e+00 (95.833%)  │ run time: 6.3110e+01 s

────────────────────────────────────────────────────────────────────────────────────────────────────
 Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
 #timesteps:                240                run time:       6.35237760e+01 s
 Δt:             6.25000000e-03                └── GC time:    1.53944640e+00 s (2.423%)
 sim. time:      1.50000000e+00 (100.000%)     time/DOF/rhs!:  7.48156541e-08 s
                                               PID:            3.18130717e-07 s
 #DOFs per field:          4096                alloc'd memory:        455.028 MiB
 #elements:                 256                device memory:           0.000 MiB

 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:                63.6s /   1.0%           4.76GiB /   0.2%

Section                        ncalls     time    %tot     avg     alloc    %tot      avg
─────────────────────────────────────────────────────────────────────────────────────────
parabolic rhs!                  2.65k    554ms   88.1%   209μs   9.00KiB    0.1%    3.48B
  calculate gradient            2.65k    248ms   39.5%  93.8μs   3.33KiB    0.0%    1.29B
    volume integral             2.65k    155ms   24.6%  58.5μs     0.00B    0.0%    0.00B
    Jacobian                    2.65k   29.9ms    4.7%  11.3μs     0.00B    0.0%    0.00B
    surface integral            2.65k   20.2ms    3.2%  7.64μs     0.00B    0.0%    0.00B
    interface flux              2.65k   17.9ms    2.8%  6.75μs     0.00B    0.0%    0.00B
    prolong2interfaces          2.65k   16.9ms    2.7%  6.39μs     0.00B    0.0%    0.00B
    reset gradients             2.65k   5.21ms    0.8%  1.97μs     0.00B    0.0%    0.00B
    ~calculate gradient~        2.65k   2.62ms    0.4%   988ns   3.33KiB    0.0%    1.29B
    prolong2mortars             2.65k    239μs    0.0%  90.4ns     0.00B    0.0%    0.00B
    prolong2boundaries          2.65k    173μs    0.0%  65.5ns     0.00B    0.0%    0.00B
    mortar flux                 2.65k    149μs    0.0%  56.2ns     0.00B    0.0%    0.00B
    boundary flux               2.65k   78.8μs    0.0%  29.8ns     0.00B    0.0%    0.00B
  volume integral               2.65k    166ms   26.3%  62.6μs     0.00B    0.0%    0.00B
  calculate parabolic fluxes    2.65k   50.2ms    8.0%  18.9μs     0.00B    0.0%    0.00B
  interface flux                2.65k   17.7ms    2.8%  6.69μs     0.00B    0.0%    0.00B
  transform variables           2.65k   17.6ms    2.8%  6.65μs     0.00B    0.0%    0.00B
  surface integral              2.65k   16.8ms    2.7%  6.35μs     0.00B    0.0%    0.00B
  prolong2interfaces            2.65k   16.4ms    2.6%  6.18μs     0.00B    0.0%    0.00B
  Jacobian                      2.65k   14.4ms    2.3%  5.45μ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.53ms    0.4%   955ns     0.00B    0.0%    0.00B
  prolong2mortars               2.65k    204μs    0.0%  77.2ns     0.00B    0.0%    0.00B
  mortar flux                   2.65k    190μs    0.0%  71.6ns     0.00B    0.0%    0.00B
  prolong2boundaries            2.65k    150μs    0.0%  56.7ns     0.00B    0.0%    0.00B
  source terms parabolic        2.65k   80.1μs    0.0%  30.3ns     0.00B    0.0%    0.00B
  boundary flux                 2.65k   78.5μs    0.0%  29.7ns     0.00B    0.0%    0.00B
rhs!                              720   69.9ms   11.1%  97.1μs   4.78KiB    0.0%    6.80B
  volume integral                 720   47.7ms    7.6%  66.2μs     0.00B    0.0%    0.00B
  interface flux                  720   5.81ms    0.9%  8.07μs     0.00B    0.0%    0.00B
  surface integral                720   5.08ms    0.8%  7.06μs     0.00B    0.0%    0.00B
  Jacobian                        720   4.89ms    0.8%  6.79μs     0.00B    0.0%    0.00B
  prolong2interfaces              720   4.87ms    0.8%  6.77μs     0.00B    0.0%    0.00B
  ~rhs!~                          720    879μs    0.1%  1.22μs   4.78KiB    0.0%    6.80B
  reset ∂u/∂t                     720    489μs    0.1%   679ns     0.00B    0.0%    0.00B
  prolong2mortars                 720   57.5μs    0.0%  79.9ns     0.00B    0.0%    0.00B
  mortar flux                     720   53.8μs    0.0%  74.8ns     0.00B    0.0%    0.00B
  prolong2boundaries              720   51.6μs    0.0%  71.7ns     0.00B    0.0%    0.00B
  boundary flux                   720   24.5μs    0.0%  34.0ns     0.00B    0.0%    0.00B
  source terms                    720   21.0μs    0.0%  29.2ns     0.00B    0.0%    0.00B
analyze solution                    4   5.11ms    0.8%  1.28ms   9.67MiB   99.5%  2.42MiB
calculate dt                      241    171μs    0.0%   709ns   33.9KiB    0.3%     144B
─────────────────────────────────────────────────────────────────────────────────────────

This page was generated using Literate.jl.