Skip to content

Advanced Code Generation

JAFF exposes two programmatic interfaces for code generation that bypass the template-file workflow entirely. Both accept a parsed Network and produce target-language code directly in Python.

Interface Use when
Builder You want a complete, runnable solver project in one call using a built-in template plugin
Codegen You need fine-grained control over individual output strings: rates, fluxes, ODEs, Jacobians

  • Builder


    One-call code generation using named plugin templates. Generates complete solver projects (Python solve_ivp, Fortran DLSODES, Kokkos ODE) from a loaded network.

    Builder

  • Codegen


    Low-level engine for generating rates, fluxes, ODEs, RHS vectors, Jacobians, and radiation ODEs as formatted strings for any of the seven supported languages.

    Codegen


Quick Comparison

from jaff import Network
net = Network("networks/GOW/GOW.jet")

# Builder — complete project in one call
from jaff.codegen import Builder
b = Builder(net)
b.build(template="python_solve_ivp", output_dir="output/")

# Codegen — individual expression strings
from jaff.codegen import Codegen
cg = Codegen(net, lang="python")
print(cg.get_rates_str())
print(cg.get_ode_str())