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 = 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: ………………………………… 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}(1.0)                                            │
│ CFL Diffusive: ………………………………………… 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:       8.22000000e-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:        502.504 MiB
 #elements:                 256

 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: 6.0621e+01 s
#timesteps:     20 │ Δt: 1.2500e-02 │ sim. time: 2.5000e-01 (16.667%)  │ run time: 6.0748e+01 s
#timesteps:     30 │ Δt: 1.2500e-02 │ sim. time: 3.7500e-01 (25.000%)  │ run time: 6.0869e+01 s
#timesteps:     40 │ Δt: 1.2500e-02 │ sim. time: 5.0000e-01 (33.333%)  │ run time: 6.0998e+01 s
#timesteps:     50 │ Δt: 1.2500e-02 │ sim. time: 6.2500e-01 (41.667%)  │ run time: 6.1122e+01 s
#timesteps:     60 │ Δt: 1.2500e-02 │ sim. time: 7.5000e-01 (50.000%)  │ run time: 6.1255e+01 s
#timesteps:     70 │ Δt: 1.2500e-02 │ sim. time: 8.7500e-01 (58.333%)  │ run time: 6.1395e+01 s
#timesteps:     80 │ Δt: 1.2500e-02 │ sim. time: 1.0000e+00 (66.667%)  │ run time: 6.1539e+01 s
#timesteps:     90 │ Δt: 1.2500e-02 │ sim. time: 1.1250e+00 (75.000%)  │ run time: 6.1693e+01 s

────────────────────────────────────────────────────────────────────────────────────────────────────
 Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
 #timesteps:                100                run time:       6.18519952e+01 s
 Δt:             1.25000000e-02                └── GC time:    7.02762678e-01 s (1.136%)
 sim. time:      1.25000000e+00 (83.333%)      time/DOF/rhs!:  7.39232136e-08 s
                                               PID:            3.77506770e-05 s
 #DOFs per field:          4096                alloc'd memory:        529.408 MiB
 #elements:                 256

 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.2012e+01 s

────────────────────────────────────────────────────────────────────────────────────────────────────
 Simulation running 'LinearScalarAdvectionEquation2D' with DGSEM(polydeg=3)
────────────────────────────────────────────────────────────────────────────────────────────────────
 #timesteps:                120                run time:       6.21902065e+01 s
 Δt:             1.25000000e-02                └── GC time:    7.16976786e-01 s (1.153%)
 sim. time:      1.50000000e+00 (100.000%)     time/DOF/rhs!:  7.34283131e-08 s
                                               PID:            1.02873485e-06 s
 #DOFs per field:          4096                alloc'd memory:        548.035 MiB
 #elements:                 256

 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:               62.2s /   1.9%           4.22GiB /   0.2%

Section                      ncalls     time    %tot     avg     alloc    %tot      avg
───────────────────────────────────────────────────────────────────────────────────────
parabolic rhs!                5.59k    1.14s   95.8%   204μs   9.00KiB    0.1%    1.65B
  calculate gradient          5.59k    503ms   42.1%  89.9μs   3.33KiB    0.0%    0.61B
    volume integral           5.59k    315ms   26.4%  56.3μs     0.00B    0.0%    0.00B
    Jacobian                  5.59k   55.7ms    4.7%  10.0μs     0.00B    0.0%    0.00B
    surface integral          5.59k   39.8ms    3.3%  7.11μs     0.00B    0.0%    0.00B
    interface flux            5.59k   38.3ms    3.2%  6.85μs     0.00B    0.0%    0.00B
    prolong2interfaces        5.59k   34.5ms    2.9%  6.17μs     0.00B    0.0%    0.00B
    reset gradients           5.59k   12.8ms    1.1%  2.29μs     0.00B    0.0%    0.00B
    ~calculate gradient~      5.59k   5.46ms    0.5%   977ns   3.33KiB    0.0%    0.61B
    prolong2mortars           5.59k    475μs    0.0%  84.9ns     0.00B    0.0%    0.00B
    prolong2boundaries        5.59k    397μs    0.0%  71.0ns     0.00B    0.0%    0.00B
    mortar flux               5.59k    354μs    0.0%  63.2ns     0.00B    0.0%    0.00B
    boundary flux             5.59k    163μs    0.0%  29.2ns     0.00B    0.0%    0.00B
  volume integral             5.59k    341ms   28.5%  60.9μs     0.00B    0.0%    0.00B
  calculate viscous fluxes    5.59k    109ms    9.2%  19.6μs     0.00B    0.0%    0.00B
  interface flux              5.59k   38.6ms    3.2%  6.90μs     0.00B    0.0%    0.00B
  transform variables         5.59k   37.2ms    3.1%  6.65μs     0.00B    0.0%    0.00B
  surface integral            5.59k   36.3ms    3.0%  6.48μs     0.00B    0.0%    0.00B
  prolong2interfaces          5.59k   34.0ms    2.8%  6.07μs     0.00B    0.0%    0.00B
  Jacobian                    5.59k   28.6ms    2.4%  5.12μs     0.00B    0.0%    0.00B
  ~parabolic rhs!~            5.59k   7.88ms    0.7%  1.41μs   5.67KiB    0.1%    1.04B
  reset ∂u/∂t                 5.59k   6.54ms    0.5%  1.17μs     0.00B    0.0%    0.00B
  prolong2mortars             5.59k    493μs    0.0%  88.0ns     0.00B    0.0%    0.00B
  prolong2boundaries          5.59k    351μs    0.0%  62.8ns     0.00B    0.0%    0.00B
  mortar flux                 5.59k    314μs    0.0%  56.1ns     0.00B    0.0%    0.00B
  boundary flux               5.59k    168μs    0.0%  30.1ns     0.00B    0.0%    0.00B
  source terms parabolic      5.59k    163μs    0.0%  29.2ns     0.00B    0.0%    0.00B
rhs!                            480   46.8ms    3.9%  97.5μ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.85ms    0.3%  8.01μs     0.00B    0.0%    0.00B
  surface integral              480   3.64ms    0.3%  7.59μs     0.00B    0.0%    0.00B
  prolong2interfaces            480   3.31ms    0.3%  6.89μs     0.00B    0.0%    0.00B
  Jacobian                      480   3.23ms    0.3%  6.72μs     0.00B    0.0%    0.00B
  ~rhs!~                        480    582μs    0.0%  1.21μs   4.78KiB    0.1%    10.2B
  reset ∂u/∂t                   480    367μs    0.0%   765ns     0.00B    0.0%    0.00B
  mortar flux                   480   65.5μs    0.0%   137ns     0.00B    0.0%    0.00B
  prolong2mortars               480   50.1μs    0.0%   104ns     0.00B    0.0%    0.00B
  prolong2boundaries            480   27.0μs    0.0%  56.3ns     0.00B    0.0%    0.00B
  boundary flux                 480   14.2μs    0.0%  29.6ns     0.00B    0.0%    0.00B
  source terms                  480   14.0μs    0.0%  29.1ns     0.00B    0.0%    0.00B
analyze solution                  3   3.53ms    0.3%  1.18ms   7.24MiB   99.6%  2.41MiB
calculate dt                    121    158μs    0.0%  1.31μs   17.0KiB    0.2%     144B
───────────────────────────────────────────────────────────────────────────────────────

This page was generated using Literate.jl.