Symbolic

cubie.odesystems.symbolic

The symbolic subpackage implements the SymPy-driven pipeline that generates CUDA kernels for right-hand-side evaluations and Newton–Krylov helpers. It parses symbolic systems, emits CUDA dxdt kernels, and packages metadata required by cubie.odesystems.SymbolicODE so integrator loops can consume compiled functions directly.

Key helpers

  • builders – utilities that assemble CUDA source strings from SymPy expressions.

  • codegen – orchestrates SymPy code generation for device kernels.

  • templates – shared Jinja templates for kernel emission.

  • transforms – symbolic transformations applied before code generation.

Dependencies

The code generation workflow relies on sympy for symbolic manipulation and numba.cuda for compiling emitted kernels. Generated code is cached via cubie.CUDAFactory and consumed by cubie.integrators during loop assembly.