Problem Formulations

Dedalus parses all equations, including constraints and boundary conditions, into common forms based on the problem type.

Linear Boundary-Value Problems (LBVPs)

Equations in linear boundary-value problems must all take the form:

$L \cdot X = F,$

where $$X$$ is the state-vector of problem variables, $$L$$ are linear operators, and $$F$$ are inhomogeneous terms that are independent of $$X$$. LBVPs are solved by explicitly evaluating the RHS and solving the sparse-matrix representation of the LHS to find $$X$$.

Initial-Value Problems (IVPs)

Equations in initial value problems must all take the form:

$M \cdot \partial_t X + L \cdot X = F(X,t),$

where $$X(t)$$ is the state-vector of problem variables, $$M$$ and $$L$$ are time-independent linear operators, and $$F$$ are inhomogeneous terms or nonlinear terms. Initial conditions $$X(t=0)$$ are set for the state, and the state is then evolved forward in time using mixed implicit-explicit timesteppers. During this process, the RHS is explicitly evaluated using $$X(t)$$ and the LHS is implicitly solved using the sparse-matrix representations of $$M$$ and $$L$$ to produce $$X(t+ \Delta t)$$.

Eigenvalue Problems (EVPs)

Equations in eigenvalue problems must all take the generalized form:

$\lambda M \cdot X + L \cdot X = 0,$

where $$\lambda$$ is the eigenvalue, $$X$$ is the state-vector of problem variables, and $$M$$ and $$L$$ are linear operators. The standard right eigenmodes $$(\lambda_i, X_i)$$ are solved using the sparse-matrix representations of $$M$$ and $$L$$, and satisfy:

$\lambda_i M \cdot X_i + L \cdot X_i = 0.$

The left eigenmodes $$(\lambda_i, Y_i)$$ are solved (if requested) using the sparse-matrix representations of $$M$$ and $$L$$, and satisfy:

$\lambda_i Y_i^* \cdot M + Y_i^* \cdot L = 0.$

The left and right eigenmodes satisfy the generalized $$M$$-orthogonality condition:

$Y_i^* \cdot M \cdot X_j = 0 \quad \mathrm{if} \quad \lambda_i \neq \lambda_j.$

For convenience, we also provide modified left eigenmodes $$Z_i = M^* \cdot Y_i$$. When the eigenvalues are nondegenerate, the left and modified left eigenvectors are rescaled by $$(X_i^* \cdot M^* \cdot Y_i)^{-1}$$ so that

$Z_i^* \cdot X_j = \delta_{ij}.$

Nonlinear Boundary-Value Problems (NLBVPs)

Equations in nonlinear boundary-value problems must all take the form:

$G(X) = H(X),$

where $$X$$ is the state-vector of problem variables and $$G$$ and $$H$$ are generic operators. All equations are immediately reformulated into the root-finding problem

$F(X) = G(X) - H(X) = 0.$

NLBVPs are solved iteratively via Newton’s method. The problem is reduced to a LBVP for an update $$\delta X$$ to the state using the symbolically-computed Frechet differential as:

$F(X_n + \delta X) \approx 0 \quad \implies \quad \partial F(X_n) \cdot \delta X = - F(X_n)$

Each iteration entails reforming the LHS matrix, explicitly evaluating the RHS, solving the LHS to find $$\delta X$$, and updating the new solution as $$X_{n+1} = X_n + \delta X$$. The iterations proceed until convergence criteria are satisfied.