Skip to main content

Overview

The basis module provides spectral basis classes for discretizing differential equations. It includes polynomial bases (Jacobi, Chebyshev, Legendre), Fourier bases, and specialized multidimensional bases for disks, spheres, and shells.

Interval Bases

Chebyshev

ChebyshevT(coord, size, bounds, dealias=1)
Chebyshev polynomial basis of the first kind (T_n).

Parameters

  • coord (Coordinate): Coordinate object
  • size (int): Number of modes
  • bounds (tuple): Domain bounds (lower, upper)
  • dealias (float or tuple, optional): Dealiasing scale factor (default: 1)

Example

import dedalus.public as d3
import numpy as np

coord = d3.Coordinate('x')
basis = d3.ChebyshevT(coord, size=64, bounds=(0, 1))

Legendre

Legendre(coord, size, bounds, dealias=1)
Legendre polynomial basis.

Parameters

  • coord (Coordinate): Coordinate object
  • size (int): Number of modes
  • bounds (tuple): Domain bounds
  • dealias (float or tuple, optional): Dealiasing scale (default: 1)

Example

import dedalus.public as d3

coord = d3.Coordinate('z')
basis = d3.Legendre(coord, size=128, bounds=(-1, 1))

Jacobi

Jacobi(coord, size, bounds, a, b, a0=None, b0=None, dealias=1, library=None)
General Jacobi polynomial basis P_n^(a,b).

Parameters

  • coord (Coordinate): Coordinate object
  • size (int): Number of modes
  • bounds (tuple): Domain bounds
  • a (float): Left endpoint parameter
  • b (float): Right endpoint parameter
  • a0 (float, optional): Grid left parameter (default: a)
  • b0 (float, optional): Grid right parameter (default: b)
  • dealias (float, optional): Dealiasing scale
  • library (str, optional): Transform library (‘matrix’ or ‘fftw_dct’)

Example

import dedalus.public as d3

coord = d3.Coordinate('x')
# Jacobi(1/2, 1/2) = Ultraspherical(1) = Chebyshev(2nd kind)
basis = d3.Jacobi(coord, size=64, bounds=(0, 1), a=0.5, b=0.5)

Fourier

ComplexFourier(coord, size, bounds, dealias=1)
RealFourier(coord, size, bounds, dealias=1)
Fourier basis for periodic domains.

Parameters

  • coord (Coordinate): Coordinate object
  • size (int): Number of modes
  • bounds (tuple): Domain bounds
  • dealias (float, optional): Dealiasing scale

Notes

  • ComplexFourier: Uses complex exponentials, supports complex fields
  • RealFourier: Uses sines/cosines, for real-valued fields only

Example

import dedalus.public as d3
import numpy as np

coord = d3.Coordinate('x')  
# Complex Fourier for general use
basis = d3.ComplexFourier(coord, size=128, bounds=(0, 2*np.pi))

# Real Fourier for real-valued problems
basis = d3.RealFourier(coord, size=128, bounds=(0, 2*np.pi))

Multidimensional Bases

SphereBasis

SphereBasis(coordsys, shape, radius=1, dealias=(1,1), dtype=np.complex128)
Spherical harmonic basis on the sphere.

Parameters

  • coordsys (S2Coordinates): S2 coordinate system
  • shape (tuple): Resolution (Nφ, Nθ)
  • radius (float, optional): Sphere radius (default: 1)
  • dealias (tuple, optional): Dealiasing scales
  • dtype: Data type

Example

import dedalus.public as d3
import numpy as np

coords = d3.S2Coordinates('phi', 'theta')
basis = d3.SphereBasis(coords, (64, 32), radius=1, dtype=np.complex128)

BallBasis

BallBasis(coordsys, shape, radius=1, dealias=(1,1,1), dtype=np.complex128)
Basis for the interior of a 3D ball.

Parameters

  • coordsys (SphericalCoordinates): Spherical coordinate system
  • shape (tuple): Resolution (Nφ, Nθ, Nr)
  • radius (float, optional): Ball radius
  • dealias (tuple, optional): Dealiasing scales
  • dtype: Data type

Example

import dedalus.public as d3
import numpy as np

coords = d3.SphericalCoordinates('phi', 'theta', 'r')
basis = d3.BallBasis(coords, (32, 16, 24), radius=1)

ShellBasis

ShellBasis(coordsys, shape, radii=(0.5, 1), dealias=(1,1,1), dtype=np.complex128)
Basis for a spherical shell.

Parameters

  • coordsys (SphericalCoordinates): Spherical coordinates
  • shape (tuple): Resolution (Nφ, Nθ, Nr)
  • radii (tuple, optional): Inner and outer radii
  • dealias (tuple, optional): Dealiasing scales
  • dtype: Data type

Example

import dedalus.public as d3

coords = d3.SphericalCoordinates('phi', 'theta', 'r')
basis = d3.ShellBasis(coords, (64, 32, 48), radii=(0.5, 1.0))

DiskBasis

DiskBasis(coordsys, shape, radius=1, dealias=(1,1), dtype=np.complex128)  
Basis for a 2D disk.

Parameters

  • coordsys (PolarCoordinates): Polar coordinate system
  • shape (tuple): Resolution (Nφ, Nr)
  • radius (float, optional): Disk radius
  • dealias (tuple, optional): Dealiasing scales
  • dtype: Data type

Example

import dedalus.public as d3

coords = d3.PolarCoordinates('phi', 'r')
basis = d3.DiskBasis(coords, (64, 32), radius=2.0)

AnnulusBasis

AnnulusBasis(coordsys, shape, radii=(0.5, 1), dealias=(1,1), dtype=np.complex128)
Basis for an annulus (2D shell).

Parameters

  • coordsys (PolarCoordinates): Polar coordinates
  • shape (tuple): Resolution (Nφ, Nr)
  • radii (tuple, optional): Inner and outer radii
  • dealias (tuple, optional): Dealiasing scales
  • dtype: Data type

Example

import dedalus.public as d3

coords = d3.PolarCoordinates('phi', 'r')  
basis = d3.AnnulusBasis(coords, (128, 64), radii=(1.0, 2.0))

See Also

Build docs developers (and LLMs) love