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:
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.
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)
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.
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.
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.
The Dedalus codebase (source + examples) is hosted on BitBucket.
Installation instructions and tutorials are hosted on Read the Docs.
Dedalus is released under the GNU General Public License.
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 groups (mailing lists):
The user group is the perfect place to visit 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.
Check out the development group if you have ideas for new features, if you want to contribute new code the project, or if you just want to hear more about the inner workings of the code.
Work on Dedalus is partially supported by the following:
Australian Research Council
DECRA Project No. DE140101960
US National Science Foundation
GRFP under Grant No. 1122374