Der DDL-Compiler übersetzt die in DDL gegebenen Beschreibungen der einzelnen Basiskomponenten sowie Brücken in C++-Dateien. Alle Basiskomponenten werden von der Basisklasse BasisKomponente abgeleitet, die selbst von der Klasse Komponente abgleitet ist. Alle Brücken werden von der Klasse Bruecke abgeleitet. Im Folgenden sind die Anforderungen an die Komponenten und Brücken genauer spezifiziert.
Die folgenden Funktionen muß der DDL-Compiler erzeugen:
Folgende Funktionen sind entfallen und werden hier nicht mehr dokumentiert. Eventuell noch vorhandene Funktionen im Quelltext können ersatzlos gestrichen werden. Diese Funktionen müssen auch vom Compiler nicht mehr definiert werden.
Außerdem muß eine Komponente folgende Datenfelder zur Verfügung stellen:
Diese Funktionen einer Brücke muß der DDL-Compiler erzeugen:
Außerdem muß eine Brücke folgende Datenfelder zur Verfügung stellen:
Die weiteren Datenfelder der Komponenten und Brücken ergeben sich unmittelbar aus der Beschreibung der Komponenten in der DDL.
Die DDL sollte jedoch mindestens folgende Datentypen zur Verfügung stellen:
Die Beschreibung der Komponenten und Brücken findet sich in der Datei komponenten.html.
Ein Port beschreibt die Verbindung dieser Komponente zu einer anderen
Komponente. Jeder Port besitzt einen Typ sowie eine Beschreibung der Übergänge.
Jeder Port wird in der Funktion Init der Komponente initialisiert
wie in der Beschreibung des Ports angegeben ist.
Konstanten werden übersetzt in Werte des Typs "double" und im Konstruktor der Komponente auf den angegeben Wert gesetzt.
Beispiel:
Die Deklaration
Constant d;
Name_of_Constant d is "Rohrdurchmesser";
Value_of_Constant d is 0.5;
in der DDL ergibt
1. in der Klassendefinition:
double d;
2. im Konstruktor:
d = 0.5;
Eine Variable ist eine Klasse, deren einziges Member eine Zahl vom Typ double ist.
Beispiel:
Die Deklaration
Variable q;
Name_of_Variable q is "Fluss";
Derivative_of_Variable q is q_punkt;
in der DDL ergibt
Außerdem muß beachtet werden, daß die Ableitung als
Typ Unknown_Quantity auch tatsächlich irgendwo in der Komponente
deklariert ist.
Eine Unknown_Quantity selbst hat keinen Wert, sie referenziert lediglich den Ergebnisvektor des zu lösenden Gleichungssystems.
Beispiel:
Die Deklaration
Unknown_Quantity P1;
Name_of_Unknown_Quantity P1 is "Druck
am ersten Rohrende";
in der DDL ergibt
Eine Regel beschreibt eine Zeile des Gleichungssystems.
Beispiel:
Die Deklaration
Rule r1;
Define_Rule r1: q_punkt = k * (P_add
+ P2 - P1 - R * q * |q|);
in der DDL ergibt