Julia Code Generation
Generate Julia simulation scripts with DifferentialEquations.jl integration.
Features
DifferentialEquations.jl: Tsit5, Vern9, Rodas5, CVODE_BDF, RK4 solvers
Plots.jl visualization: Time histories, phase space portraits
CSV/DataFrame export: Via CSV.jl and DataFrames.jl
Energy tracking: Conservation monitoring from Lagrangian
Adaptive tolerances: Configurable
abstolandreltol
Basic Usage
from mechanics_dsl.codegen.julia import JuliaGenerator
import sympy as sp
theta, g, l = sp.symbols('theta g l')
gen = JuliaGenerator(
system_name="pendulum",
coordinates=["theta"],
parameters={"g": 9.81, "l": 1.0},
initial_conditions={"theta": 0.5, "theta_dot": 0.0},
equations={"theta_ddot": -g/l * sp.sin(theta)},
solver="Tsit5",
abstol=1e-8,
reltol=1e-8
)
gen.generate("pendulum.jl")
Parameters
solver: ODE solver name (default:Tsit5)abstol: Absolute tolerance (default:1e-8)reltol: Relative tolerance (default:1e-8)
Supported solvers: Tsit5, Vern9, Rodas5, CVODE_BDF, RK4
Generated Code Structure
The generated Julia script includes:
Package imports: DifferentialEquations, Plots, CSV, DataFrames
Physical constants: Parameters as
constglobals``equations_of_motion!``: In-place ODE function for DifferentialEquations.jl
``simulate()``: Configurable simulation with solver and tolerances
``plot_results()``: Time history subplots saved to PNG
``plot_phase_space()``: Phase portrait visualization
``export_csv()``: DataFrame-based CSV export
Energy function:
compute_energy()from Lagrangian when available
Running the Generated Code
Install Julia dependencies first:
using Pkg
Pkg.add(["DifferentialEquations", "Plots", "CSV", "DataFrames"])
Then run:
julia pendulum.jl
Solver Selection Guide
Solver |
Best For |
Order |
|---|---|---|
|
General non-stiff problems (default) |
5th |
|
High-accuracy requirements |
9th |
|
Stiff systems |
5th |
|
Very stiff / large systems |
Variable |
|
Fixed-step, educational |
4th |
See Also
Python Code Generation - NumPy-accelerated Python generation
MATLAB/Octave Code Generation - MATLAB/Octave generation
Code Generation Overview - All code generation targets