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. -
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.
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())