## Features

Dedalus is a framework for solving a broad range of partial differential equations using spectral methods, including initial-value, boundary-value, and generalized eigenvalue problems. Some key features include:

### Symbolic Equation Entry

**Dedalus accepts nearly arbitrary systems of differential equations and algebraic constraints entered in plain text**.
The linear terms are parsed into a sparse matrix system for efficient linear solves, and the nonlinear terms are parsed into arithmetic trees and evaluated pseudospectrally using matrix and fast transforms.
The tau method is used to enforce nearly arbitrary boundary conditions, which are also entered in plain text.

### Spectral Domain Discretization

**Dedalus solves over domains that can be represented by the direct product of spectral bases**.
Dedalus currently supports N-dimensional domains, where the first (N-1) dimensions are discretized by **separable** bases, and the last dimension is discretized by either a separable or a **coupled** basis.

**Separable** bases are bases in which derivatives do not couple separate modes, allowing the calculation to be parallelized along these dimensions.
**Coupled** bases are bases in which derivatives do couple separate modes, resulting in a sparse linear system for each transverse mode which is locally solved with a direct solver.

- Chebyshev polynomials
- Legendre/Hermite/Laguerre polynomials
- Jacobi disk polynomials (in progress)

### Multidimensional Parallelization

The (N-1) separable dimensions of an N-dimensional problem can be parallelized across any user-specified process mesh. We use MPI to coordinate parallelized computations, and have scaled Dedalus to thousands of processes.

### Implicit-Explicit Timestepping

Initial value problems are solved by spectrally discretizing the spatial domain, and evolving the coefficients as a system of coupled ordinary differential equations. Dedalus currently contains a range of ODE integrators including multistep and Runge-Kutta IMEX methods for implicit timestepping of the linear terms and explicit timestepping of the nonlinear terms. New methods are simple to implement.

### Flexible Analysis with HDF5

The same symbolic format that is used to represent equations can also be used to specify analysis tasks, which are computed in concert with the nonlinear terms, and saved in self-describing HDF5 files.

## Getting Started

The Dedalus codebase (source + examples) is hosted on GitHub.

Installation instructions and tutorials are hosted on Read the Docs.

Dedalus is released under the GNU General Public License.

## Community

Dedalus is free and open-source software with a friendly community and contributors from many different institutions. We are always glad to hear from people interested in using or contributing to the code, no matter what sort of applications you're interested in. The best way to get in touch with the community is through our Google group / mailing list:

Visit the **dedalus-users group** if you're wondering if Dedalus is right for your application, if you're encountering problems installing Dedalus or its dependencies, or if you have questions about setting up and running a simulation.

## Developers

## Support

Work on Dedalus is partially supported by the following:

NASA Heliophysics

HTMS Grant No. 80NSSC20K1280

Australian Research Council

DECRA Project No. DE140101960

US National Science Foundation

GRFP under Grant No. 1122374