dedalus.core.basis¶
Abstract and built-in classes for spectral bases.
Module Contents¶
-
logger¶
-
DEFAULT_LIBRARY¶
-
FFTW_RIGOR¶
-
class
Basis¶ Base class for spectral bases.
These classes define methods for transforming, differentiating, and integrating corresponding series represented by their spectral coefficients.
Parameters: - base_grid_size (int) – Number of grid points
- interval (tuple of floats) – Spatial domain of basis
- dealias (float, optional) – Fraction of modes to keep after dealiasing (default: 1.)
Variables: - grid_dtype (dtype) – Grid data type
- coeff_size (int) – Number of spectral coefficients
- coeff_embed (int) – Padded number of spectral coefficients for transform
- coeff_dtype (dtype) – Coefficient data type
-
library¶
-
set_dtype(self, grid_dtype)¶ Set transforms based on grid data type.
-
forward(self, gdata, cdata, axis, meta)¶ Grid-to-coefficient transform.
-
backward(self, cdata, gdata, axis, meta)¶ Coefficient-to-grid transform.
-
differentiate(self, cdata, cderiv, axis)¶ Differentiate using coefficients.
-
integrate(self, cdata, cint, axis)¶ Integrate over interval using coefficients.
-
interpolate(self, cdata, cint, position, axis)¶ Interpolate in interval using coefficients.
-
grid_size(self, scale)¶ Compute scaled grid size.
-
check_arrays(self, cdata, gdata, axis, meta=None)¶ Verify provided arrays sizes and dtypes are correct. Build compliant arrays if not provided.
-
class
TransverseBasis¶ Bases:
dedalus.core.basis.BasisBase class for bases supporting transverse differentiation.
-
class
ImplicitBasis¶ Bases:
dedalus.core.basis.BasisBase class for bases supporting implicit methods.
These bases define the following matrices encoding the respective linear functions acting on a series represented by its spectral coefficients:
- Linear operators (square matrices):
- Pre : preconditioning (default: identity) Diff : differentiation Mult(p) : multiplication by p-th basis element
- Linear functionals (vectors):
- left_vector : left-endpoint evaluation right_vector : right-endpoint evaluation integ_vector : integration over interval interp_vector : interpolation in interval
Additionally, they define a column vector bc_vector indicating which coefficient’s Galerkin constraint is to be replaced by the boundary condition on a differential equation (i.e. the order of the tau term).
-
Multiply(self, p)¶ p-element multiplication matrix.
-
bc_vector(self)¶ Boundary-row column vector.
-
Precondition(self)¶ Preconditioning matrix.
-
FilterBoundaryRow(self)¶ Matrix filtering boundary row.
-
ConstantToBoundary(self)¶ Matrix moving constant coefficient to boundary row.
-
PrefixBoundary(self)¶ Matrix moving boundary row to first row.
-
NCC(self, coeffs, cutoff, max_terms)¶ Build NCC multiplication matrix.
-
class
Chebyshev(name, base_grid_size, interval=(-1, 1), dealias=1)¶ Bases:
dedalus.core.basis.ImplicitBasisChebyshev polynomial basis on the roots grid.
-
element_label= T¶
-
boundary_row¶
-
separable= False¶
-
coupled= True¶
-
default_meta(self)¶
-
grid(self, scale=1.0)¶ Build Chebyshev roots grid.
-
set_dtype(self, grid_dtype)¶ Determine coefficient properties from grid dtype.
-
Integrate(self)¶ Build integration class.
-
Interpolate(self)¶ Buld interpolation class.
-
Differentiate(self)¶ Build differentiation class.
-
Precondition(self)¶ Preconditioning matrix.
T_n = (U_n - U_(n-2)) / 2 U_(-n) = -U_(n-2)
-
Dirichlet(self)¶ Dirichlet recombination matrix.
D[0] = T[0] D[1] = T[1] D[n] = T[n] - T[n-2]
- <T[i]|D[j]> = <T[i]|T[j]> - <T[i]|T[j-2]>
- = δ(i,j) - δ(i,j-2)
-
Multiply(self, p)¶ p-element multiplication matrix
T_p * T_n = (T_(n+p) + T_(n-p)) / 2 T_(-n) = T_n
-
build_mult(self, coeffs, order)¶
-
-
class
Fourier(name, base_grid_size, interval=(0, 2 * pi), dealias=1)¶ Bases:
dedalus.core.basis.TransverseBasisFourier complex exponential basis.
-
separable= True¶
-
coupled= False¶
-
element_label= k¶
-
default_meta(self)¶
-
grid(self, scale=1.0)¶ Build evenly spaced Fourier grid.
-
set_dtype(self, grid_dtype)¶ Determine coefficient properties from grid dtype.
-
Integrate(self)¶ Build integration class.
-
Interpolate(self)¶ Build interpolation class.
-
Differentiate(self)¶ Build differentiation class.
-
HilbertTransform(self)¶ Build Hilbert transform class.
-
-
class
SinCos(name, base_grid_size, interval=(0, pi), dealias=1)¶ Bases:
dedalus.core.basis.TransverseBasisSin/Cos series basis.
-
element_label= k¶
-
separable= True¶
-
coupled= False¶
-
default_meta(self)¶
-
grid(self, scale=1.0)¶ Evenly spaced interior grid: cos(Nx) = 0
-
set_dtype(self, grid_dtype)¶ Determine coefficient properties from grid dtype.
-
Integrate(self)¶ Build integration class.
-
Interpolate(self)¶ Build interpolation class.
-
Differentiate(self)¶ Build differentiation class.
-
HilbertTransform(self)¶ Build Hilbert transform class.
-
-
class
Compound(name, subbases, dealias=1)¶ Bases:
dedalus.core.basis.ImplicitBasisCompound basis joining adjascent subbases.
-
separable= False¶
-
coupled= True¶
-
library¶
-
default_meta(self)¶
-
grid(self, scale=1.0)¶ Build compound grid.
-
set_dtype(self, grid_dtype)¶ Determine coefficient properties from grid dtype.
-
coeff_start(self, index)¶
-
grid_start(self, index, scale)¶
-
sub_gdata(self, gdata, index, axis)¶ Retreive gdata corresponding to one subbasis.
-
sub_cdata(self, cdata, index, axis)¶ Retrieve cdata corresponding to one subbasis.
-
forward(self, gdata, cdata, axis, meta)¶ Forward transforms.
-
backward(self, cdata, gdata, axis, meta)¶ Backward transforms.
-
Integrate(self)¶ Build integration class.
-
Interpolate(self)¶ Buld interpolation class.
-
Differentiate(self)¶ Build differentiation class.
-
Precondition(self)¶
-
Dirichlet(self)¶
-
Multiply(self, p, subindex)¶
-
NCC(self, coeffs, cutoff, max_terms)¶ Build NCC multiplication matrix.
-
FilterMatchRows(self)¶ Matrix filtering match rows.
-
Match(self)¶ Matrix matching subbases.
-
PrefixBoundary(self)¶
-