Das Typsystem von Synarius

 ·  Synarius Modellierung Python

Motivation

In der technischen Modellierung begegnet man immer wieder dem gleichen Problem:
Parameter haben nicht nur Werte, sondern auch Einheiten, Dimensionen und
Abhängigkeiten von anderen Parametern.

Ein naiver Ansatz – Parameter als einfache float-Werte – verliert diese Information
und führt unweigerlich zu schwer auffindbaren Fehlern.

Parameterzentrierte Modellierung

In Synarius ist ein Parameter kein reiner Zahlenwert, sondern ein Objekt mit Metadaten:

from synarius.core import Parameter, Unit

mass = Parameter(
    name="Fahrzeugmasse",
    value=1500.0,
    unit=Unit("kg"),
    description="Gesamtmasse des Fahrzeugs inklusive Zuladung",
)

Vorteile

  • Einheitenkonsistenz wird zur Laufzeit geprüft
  • Die Intermediate Representation enthält vollständige Typinformationen
  • Codegenerierung (Python, C, FMU) nutzt diese Informationen direkt

Intermediate Representation

Das Modell wird zunächst in eine Intermediate Representation (IR) überführt,
bevor Code generiert wird. Die IR ist ein gerichteter azyklischer Graph (DAG),
in dem Knoten Parameter und Kanten Abhängigkeiten repräsentieren.

Parameter A ──▶ Berechnung X ──▶ Parameter C
Parameter B ──▶ Berechnung X

Diese strikte Trennung – Modell → IR → Code – macht das System
target-agnostic: dasselbe Modell kann Python-Code, C-Code oder FMU-Pakete
erzeugen.

Ausblick

Die nächste Ausbaustufe ist die Integration von Engineering-AI-Methoden:
Modelle, die aus Messdaten gelernte Zusammenhänge mit physikalisch motivierten
Strukturen kombinieren.