Skip to main content

What is Dedalus?

Dedalus is a flexible framework for solving partial differential equations (PDEs) using modern spectral methods. Written primarily in Python, it provides an easy-to-use interface with symbolic equation specification, making it accessible while maintaining high performance for research-grade simulations. The framework is open-source and developed by a team of researchers studying astrophysical, geophysical, and biological fluid dynamics.
Dedalus is particularly well-suited for problems on simple domains where spectral methods excel, providing spectrally accurate solutions with efficient sparse discretizations.

Key Features

Symbolic Equation Entry

Write PDEs naturally using symbolic notation with automatic vectorial operations and differentiation.

Multiple Geometries

Support for Cartesian domains (1D, 2D, 3D), disks, annuli, spheres, spherical shells, and balls.

Automatic Parallelization

Efficient MPI-based parallelization with no explicit parallel programming required.

Sparse Systems

Produces spectrally accurate sparse discretizations that are efficiently solved using compiled libraries.

Example: Symbolic Equation Specification

Dedalus allows you to write equations symbolically, including gauge conditions and boundary conditions enforced with the tau method. Here’s an example of incompressible hydrodynamics in a ball:
problem.add_equation("div(u) + tau_p = 0")
problem.add_equation("dt(u) - nu*lap(u) + grad(p) + lift(tau_u) = - u@grad(u)")
problem.add_equation("u(r=1) = 0")
problem.add_equation("integ(p) = 0")
This natural mathematical notation is automatically discretized and solved using sophisticated spectral methods.

When to Use Dedalus

Dedalus is ideal for:
  • Fluid dynamics simulations: Incompressible/compressible flows, convection, turbulence
  • Wave propagation: Linear and nonlinear wave equations
  • Boundary value problems: Poisson equations, eigenvalue problems
  • Multi-dimensional PDEs: Problems on Cartesian grids or spherical geometries
  • Research applications: When you need flexibility to experiment with equations and methods
Dedalus uses spectral methods which work best on simple domains with smooth solutions. For complex geometries or discontinuous solutions, other methods like finite elements or finite volumes may be more appropriate.

Architecture Overview

Core Components

Coordinates and Bases
  • Support for Cartesian, cylindrical, and spherical coordinate systems
  • Various spectral bases: Fourier, Chebyshev, spherical harmonics, and more
  • Automatic dealiasing to prevent spectral aliasing errors
Fields and Operators
  • Distributed fields that automatically handle parallelization
  • Symbolic operators: differentiation, integration, linear operators
  • Vector and tensor field support with coordinate-aware operations
Problem Formulation
  • Initial Value Problems (IVP): Time evolution equations
  • Linear Boundary Value Problems (LBVP): Elliptic equations
  • Eigenvalue Problems (EVP): Stability analysis and modes
  • Nonlinear Boundary Value Problems (NLBVP): Steady states
Solvers and Timestepping
  • Multiple timestepping schemes: RK222, RK443, SBDF1-4, and more
  • Implicit-explicit (IMEX) methods for stiff problems
  • Adaptive timestepping with CFL condition monitoring
  • Built-in analysis framework for saving data to HDF5

Performance Features

  • Compiled Extensions: Critical operations in Cython for performance
  • FFTW Integration: Uses optimized FFTW library for fast transforms
  • MPI Parallelization: Automatic domain decomposition and communication
  • Sparse Linear Algebra: Efficient solvers for sparse spectral systems

System Requirements

  • Python: 3.9 or later
  • C Dependencies: MPI, FFTW3, HDF5
  • Python Packages: numpy, scipy, mpi4py, h5py, matplotlib
For best performance, disable threading by setting OMP_NUM_THREADS=1 before running Dedalus.

Getting Started

Ready to start using Dedalus? Here’s what to do next:

Installation

Learn how to install Dedalus using conda or build from source.

Quick Start

Run your first Dedalus simulation with a complete working example.

Community and Support

Citation

If you use Dedalus in your research, please cite: Burns, K. J., Vasil, G. M., Oishi, J. S., Lecoanet, D., & Brown, B. P. (2020). Dedalus: A flexible framework for numerical simulations with spectral methods. Physical Review Research, 2(2), 023068. doi:10.1103/PhysRevResearch.2.023068

Build docs developers (and LLMs) love