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 GitHub.
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 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.
Work on Dedalus is partially supported by the following:
HTMS Grant No. 80NSSC20K1280
Australian Research Council
DECRA Project No. DE140101960
US National Science Foundation
GRFP under Grant No. 1122374