Capabilities
What you can do with Conatus
Write the equations, run them where you like, and let Conatus find the structure of the solutions: instabilities, orbits, bifurcations. Everything below is available from the same language of equations.
Write
The language of equations
You write the problem the way it is written on paper. Conatus understands it as mathematics and explains what it built.
Equations as on paper
Domains, fields, parameters and equations in their usual form; boundary conditions by the name of the boundary. What Conatus places for you, it lists.
Refused, not repaired
A missing or extra boundary condition, an ill-posed split or an undeclared choice is refused with a message that says what, where and why, and proposes a fix it never applies itself.
Exact derivatives, for free
Every expression knows its derivative and its adjoint, so linearisations, tangents and adjoints follow from the equations you wrote.
Discretise
Spectral accuracy, in any geometry
Sparse spectral methods, from the channel to the ball, with bases that are regular by construction.
Boxes, channels and infinite lines
Fourier and Chebyshev directions; sine and cosine series for stress-free or fixed-temperature walls, with no boundary terms at all; Hermite and Laguerre functions on the whole and the half line; compound intervals for interior layers; mapped bases and complex paths for inviscid modes.
Disks, pipes, spheres, shells and balls
Curved geometries without axis conditions or fixes at the poles: every field is regular by construction. Rigid or stress-free walls are one declaration.
Symmetries that halve the work
Declare a reflection or a rotation and Conatus solves in the symmetric subspace, after checking that the equations respect it.
Run
On a laptop or a GPU
The same model runs on a CPU or a GPU. Resolution, scheme and time step are yours to choose, never guessed.
Time integration
Implicit–explicit schemes, multistep (backward differentiation and Crank–Nicolson) and Runge–Kutta: the schemes of Dedalus, with the same numbers. Boundary values that move in time are imposed at every stage: second order or better for every scheme (RK443 about 2.8), where the usual convention falls to first order. Exact restarts from a checkpoint.
GPU-native
One keyword moves a simulation to the GPU, in a box, a channel, a disk, a pipe, on a sphere, in a ball or a spherical shell; nonlinear terms become fused kernels, and in boxes, channels and shells whole steps can be replayed as one graph.
Analyse
The dynamical system behind the equations
The problem you simulate is also a dynamical system: Conatus finds its structure.
Stability
Eigenvalues with their residuals, critical parameters and sensitivities, with spurious modes removed in the open.
Orbits and bifurcations
Equilibria, travelling waves and periodic orbits; branches followed through folds, pitchforks and Hopf points.
Time-periodic flows
Floquet exponents and optimal transient growth about any flow that repeats in time, written as a function of time, such as pulsatile flow in a channel.
Adjoints and transient growth
Exact adjoints of the time stepper, in boxes, channels and the spherical shell, for gradients and optimisation; linear and nonlinear optimal perturbations of non-normal flows.
Keep track
Observable and reproducible
A computation you can find again afterwards.
Runs recorded on request
With record=True or cn.runs.track, the parameters, code version and results of a run are kept; find, compare and reproduce them later. Nothing is recorded unless you ask.
Files any tool can read
Snapshots and checkpoints in HDF5, with the provenance of the run inside; a run split over several jobs continues exactly as if it had never stopped.
A number with its error bar
From the resolutions and time steps you declare, a computed quantity is reported with an error estimate and the checks behind it; time averages come with their statistical error.
A Methods paragraph, written for you
Each computation can describe itself: the discretisation, the scheme and the references, ready for a paper.
How these capabilities compare with published results and independent codes is on the validation page.