Dedalus: A flexible framework for numerical simulations with spectral methods

Dedalus: A flexible framework for numerical simulations with spectral methods
复制标题

DOI:
10.1103/physrevresearch.2.023068
复制
发表时间:
2020-04-23
影响因子:
4.2
通讯作者:
Brown, Benjamin P.
Brown, Benjamin P.
中科院分区:
其他
文献类型:
--
作者:
Burns, Keaton J.;Vasil, Geoffrey M.;Brown, Benjamin P.

文献摘要

被引文献

相似文献

偏微分方程的数值解使得广泛的科学研究成为可能。 Dedalus 项目是一个灵活的开源并行计算框架,用于使用谱方法求解一般偏微分方程。 Dedalus 将描述偏微分方程的纯文本字符串转换为高效的求解器。本文详细介绍了实现这种转换的数值方法,描述了代码库的设计和实现,并通过各种示例问题说明了其功能。数值方法是一阶广义 tau 公式,将方程离散化为带状矩阵。该方法采用面向对象的设计来实现。谱基和域的类管理变量的离散化和自动并行分布。离散域和数学运算符通过基本计算机代数系统进行符号操作。使用高性能线性代数、变换和并行通信库可以有效解决初始值、边界值和特征值问题。自定义分析输出也可以以纯文本形式指定并以自描述的便携式格式存储。使用并行扩展基准并与有限容量代码进行比较来评估代码的性能。通过求解几个示例来说明代码库的功能和灵活性:图上的非线性薛定谔方程、超音速磁流体动力涡流、准地转流、圆柱环中的斯托克斯流、辐射大气的正常模式和反磁悬浮。
Numerical solutions of partial differential equations enable a broad range of scientific research. The Dedalus project is a flexible, open-source, parallelized computational framework for solving general partial differential equations using spectral methods. Dedalus translates plain-text strings describing partial differential equations into efficient solvers. This paper details the numerical method that enables this translation, describes the design and implementation of the codebase, and illustrates its capabilities with a variety of example problems. The numerical method is a first-order generalized tau formulation that discretizes equations into banded matrices. This method is implemented with an object-oriented design. Classes for spectral bases and domains manage the discretization and automatic parallel distribution of variables. Discretized fields and mathematical operators are symbolically manipulated with a basic computer algebra system. Initial value, boundary value, and eigenvalue problems are efficiently solved using high-performance linear algebra, transform, and parallel communication libraries. Custom analysis outputs can also be specified in plain text and stored in self-describing portable formats. The performance of the code is evaluated with a parallel scaling benchmark and a comparison to a finite-volume code. The features and flexibility of the codebase are illustrated by solving several examples: the nonlinear Schrodinger equation on a graph, a supersonic magnetohydrodynamic vortex, quasigeostrophic flow, Stokes flow in a cylindrical annulus, normal modes of a radiative atmosphere, and diamagnetic levitation.