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: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
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
- Distributed fields that automatically handle parallelization
- Symbolic operators: differentiation, integration, linear operators
- Vector and tensor field support with coordinate-aware operations
- 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
- 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
- Documentation: dedalus-project.readthedocs.org
- GitHub: github.com/DedalusProject/dedalus
- Mailing List: dedalus-users Google Group
- Project Homepage: dedalus-project.org