Yonderdrake¶
Yonderdrake adds fractional time derivatives, fading-memory operators, and nonlocal spatial operators to Firedrake UFL forms. You write an ordinary residual with a marker in it. Yonderdrake evolves the memory. Equations containing both a nonlocal time operator and a nonlocal space operator are supported as well.
F = (inner(CaputoDerivative(u, 0.6), v) + inner(u, v)) * dx
stepper = FractionalTimeStepper(F, BirkSong(48), t, dt, u)
stepper.advance()
What it supports¶
Caputo and initialized Riemann-Liouville time derivatives.
Full-history stepping and static memory with \(O(m)\) storage.
Single-exponential memory with an exact piecewise-linear update, including a labelled Caputo-Fabrizio parameterization.
Dirichlet spectral, zero-exterior Riesz, and periodic Fourier fractional Laplacians, each with its corresponding boundary or exterior realization.
Variable steps, MPI, PETSc options, and checkpoint/restart.
Tested composition of the spatial operators with Irksome time integrators.
Start here¶
Installation: install into a Firedrake environment.
Quickstart: the core workflow in one page.
Guides and examples: one capability at a time.
Gallery: larger applications and their animations.
Mathematics and methods: definitions, methods, and the papers behind them.
API and supported scope: signatures and exact limitations.
Guides and examples¶
The guides introduce one capability at a time with runnable demos. Start from the Quickstart if you have not run anything yet. See Gallery for larger visual applications.
The time-fractional guides cover Fractional time derivatives, Time-fractional PDEs, and Caputo-Wismer imaging. Exponential memory and Caputo-Fabrizio sits with them because it uses the same time-memory workflow, although its bounded exponential kernel is not a fractional derivative. Space-fractional operators are introduced separately in Fractional space.
General workflow guidance covers Separating error sources, Solvers, field splits, and MPI, Checkpoint and restart, and Classical time stepping with Irksome. Timings, convergence studies, and method comparisons are collected in Benchmarks and comparisons.
Demo scripts¶
Run any of these as python demos/<path> from an active Firedrake environment.
Script |
What it shows |
|---|---|
Birk-Song diffusive relaxation |
|
Direct full-history relaxation |
|
Diethelm time-fractional diffusion |
|
Monolithic physical/memory PETSc field split |
|
Collective Firedrake checkpoint and restart |
|
Exterior sensor-array imaging through a layered skull-ball |
|
Vessel imaging through BrainWeb tissue, compared with a homogenised model |
|
Spectral power of a square eigenfunction |
|
Zero-exterior Riesz action |
|
Periodic Fourier action on a known rectangular mode |
|
Two 3D periodic fractional heat flows racing through a multiscale gyroid |
|
Caputo diffusion with the spectral operator |
|
Caputo diffusion with the Riesz operator |
The numerical comparison and performance drivers are listed separately in
Benchmarks and comparisons and need the visual extra to generate plots.
Mathematics and methods¶
This section defines every operator Yonderdrake implements, states which discretization it uses, and cites the primary source for each. It is the single place where methods are compared. API and supported scope gives signatures, and References and provenance gives the full bibliography.
Use the defaults¶
Yonderdrake exposes more methods than most problems need, because several exist to reproduce published results.
Power-law time memory: use
BirkSong.Diethelmis an equally supported alternative worth trying ifBirkSongneeds many modes.Diethelm2022andYuanAgrawalare literature-comparison options, not recommendations. They are substantially more sensitive to mode count, time range, and scaling, and using them well means checking their truncation and scaling errors for your problem.Single-exponential memory: use
ExponentialMemorydirectly. It has no quadrature rule or mode count to choose.Time formulation: use the default eliminated
Recurrence. ChooseAuxiliaryODEonly when PETSc needs access to the memory variables, andFullHistorywhen you want a direct reference without quadrature modes.Spatial operators: there is no default.
SpectralFractionalLaplacian,RieszFractionalLaplacian, andPeriodicFractionalLaplacianimpose different exterior or periodic realizations. They are not approximations of one operator. See the comparison.
The detailed method pages repeat which category a method falls into, but this is the statement they refer back to.
Method map¶
Method |
What it is |
Use |
Primary source |
|---|---|---|---|
|
Diffusive modes, Gauss-Jacobi after a squared Cayley map |
Default time memory |
|
|
Diffusive modes, Gauss-Jacobi after a Cayley map |
Supported alternative |
|
|
Truncated log-rate quadrature |
Comparison only |
|
|
Original Gauss-Laguerre rule |
Comparison only |
|
|
Variable-step L1 history integral |
Reference method |
|
|
Exact variation-of-constants mode update |
static memory (default) |
Yonderdrake, from the cited modes |
|
Modes solved monolithically with the field |
static memory (field access) |
Yonderdrake, from the cited modes |
|
Power of the homogeneous-Dirichlet Laplacian |
Spectral realization |
|
|
Whole-space integral on the zero extension |
Integral realization |
|
|
Fourier multiplier on a uniform periodic cell |
Periodic realization |
Standard Fourier-series multiplier |
|
One-timescale exponential convolution |
Direct fading-memory operator |
Standard one-state realization |
|
Published rescaling of |
Convenient interface into |
Caputo and Fabrizio (2015), with the classification in Ortigueira and Machado (2018) |