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 discretized with global spectral bases. Cartesian domains of any dimension can be built from the direct-product of the included one-dimensional bases. Curvilinear domains are supported using novel non-direct-product bases.
- Fourier series
- Sine & cosine series
- Jacobi polynomials (Chebyshev, Legendre)
- Hermite & Laguerre polynomials
The separable dimensions of any problem are automatically parallelized across the available cores or a 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:
OSTFL Grant No. 80NSSC22K1738
HTMS Grant No. 80NSSC20K1280
Australian Research Council
DECRA Project No. DE140101960
US National Science Foundation
GRFP under Grant No. 1122374