modelingtoolkit

adapters.modelingtoolkit

Standalone ModelingToolkit.jl backend adapter for SimulationExperiment.

Pure MTK adapter using component? + mtkcompile + ODEProblem + solve. No dependency on NetworkDynamics.jl.

Key capability: symbolic round-trip. tvbo’s SymPy equations are rendered to MTK Julia code, MTK’s mtkcompile performs structural transformations (e.g. higher-order ODE lowering), and the resulting equations are extracted back into SymPy.

Classes

Name Description
ModelingToolkitAdapter Adapter for running SimulationExperiment via pure ModelingToolkit.jl.

ModelingToolkitAdapter

adapters.modelingtoolkit.ModelingToolkitAdapter(source=None)

Adapter for running SimulationExperiment via pure ModelingToolkit.jl.

Uses component? syntax (MTK v11+), mtkcompile, ODEProblem, and solve.

Accepts Dynamics, SimulationExperiment, or no argument::

adapter = ModelingToolkitAdapter()              # empty, set .experiment later
adapter = ModelingToolkitAdapter(dynamics)      # wraps in minimal experiment
adapter = ModelingToolkitAdapter(exp)            # full experiment

Methods

Name Description
lower Lower higher-order ODEs via MTK’s mtkcompile.
render_code Render Julia code using the standalone MTK template.
run Run simulation using pure ModelingToolkit.jl.
lower
adapters.modelingtoolkit.ModelingToolkitAdapter.lower(
    source=None,
    returns='auto',
    **kwargs,
)

Lower higher-order ODEs via MTK’s mtkcompile.

Performs a symbolic round-trip: tvbo → MTK Julia → mtkcompile → lowered first-order SymPy equations, optionally wrapped back into a tvbo Dynamics or SimulationExperiment.

Parameters

source : Dynamics | SimulationExperiment, optional The system to lower. Can also be set at init time. returns : str What to return:

- ``"sympy"`` — dict of SymPy equations, unknowns, parameters
- ``"dynamics"`` — tvbo ``Dynamics`` with lowered equations
- ``"experiment"`` — tvbo ``SimulationExperiment`` with lowered
  dynamics
- ``"auto"`` (default) — same type as the input: ``Dynamics``
  if given ``Dynamics``, ``SimulationExperiment`` if given an
  experiment, ``"sympy"`` if empty.
Returns

dict | Dynamics | SimulationExperiment

render_code
adapters.modelingtoolkit.ModelingToolkitAdapter.render_code(**kwargs)

Render Julia code using the standalone MTK template.

run
adapters.modelingtoolkit.ModelingToolkitAdapter.run(**kwargs)

Run simulation using pure ModelingToolkit.jl.

Returns

ExperimentResult Simulation results with named dimensions and coordinates.