SysSimX Documentation#
SysSimX is a free and open-source Python library for system simulation. It allows you to build hybrid and heterogenous system models by connecting system component models from different environments, including:
FMU Components - Functional Mock-up Units (FMI 2.0 Co-Simulation)
OpenSim Components - Musculoskeletal biomechanics models using OpenSim
FEM Components - Finite Element Models using NGSolve
Custom Python Components - User-defined models implemented directly in Python
Note
SysSimX targets researchers and engineers who need to couple multi-physics models across simulation environments, especially in mechanical, electrical, and biomechanical systems.
Start Here#
Want to install
syssimx? See Installation.New to
syssimx? Read the Quickstart and Concepts.Looking for APIs? Jump to the SysSimX Package.
Want hands-on learning? Go to Fundamentals.
Interested in tool integration? Check out Modelica / FMU, OpenSim, Netgen/NGSolve, and Master Pendulum (MultiComponent).
Curious about a case study? See Controlled Pendulum Case Study Overview and subsequent chapters.
Quick Example#
from syssimx import System, Connection
from syssimx.components import FMUComponent
# Create and configure components
pendulum = FMUComponent("Pendulum", fmu_path="Pendulum.fmu")
controller = FMUComponent("PID", fmu_path="Controller.fmu")
# Build system with connections
system = System(name="ControlledPendulum")
system.add_component(pendulum)
system.add_component(controller)
system.add_connection(Connection(
src_comp="Pendulum", src_port="angle",
dst_comp="PID", dst_port="measurement"
))
# Run simulation
system.initialize(t0=0.0)
system.run(t0=0.0, tf=10.0, dt=0.001)
Key Features#
- Graph-Based Execution
Automatic dependency analysis with direct feedthrough and algebraic loop detection. Components are executed in topologically sorted order.
- Algebraic Loop Handling
Detection and iterative solving using the Interface Jacobian-based Co-Simulation Algorithm (IJCSA).
- Hybrid Co-Simulation
Event detection via zero-crossing indicators with bisection-based time localization and superdense time semantics.
- Multiple Master Algorithms
Choose from Jacobi (parallel), Gauss-Seidel (sequential), or Hybrid (event-driven) algorithms.
- Multi-Tool Integration
Seamlessly connect FMUs, OpenSim models, and NGSolve FEM models in a single system.
- Multi-Model Switching
Dynamically switch between multiple models of the same component during simulation.
- Unit-Aware Connections
Automatic unit conversion between ports using Pint.
- Extensible Components
Implement custom components in Python or wrap external tools and FMUs.
Contents#
Getting Started
API Reference
Core Tutorials
Tool Integration
- Modelica / FMU
- OpenSim
- Netgen/NGSolve
- Master Pendulum (MultiComponent)
- Motivation: why multiple models for one pendulum?
- What is a MultiComponent?
- MasterPendulum: one interface, three implementations
- Workflow: building your own multi-model component
- Why switch models at runtime?
- State synchronization: the “hard part”
- Practical guidelines (what to verify early)
- Tutorials
Case Study