11.10.2013 Aufrufe

Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...

Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...

Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5.4. IMPLEMENTATION 91<br />

• interpretierte Sprache<br />

• vereinfacht symbolische Ausdrücke<br />

• differenziert symbolische Ausdrücke<br />

• generiert C-Quelltext<br />

Neben der symbolischen Umformung von Funktionen und deren Ableitungen<br />

bietet es komfortable Möglichkeiten, Zeichenketten zu bilden<br />

und mathematische Ausdrücke in die Programmiersprache des<br />

Frameworks (C++) zu übersetzen. Dies sind Eigenschaften, die bei<br />

der Code-Generierung in den Adaptionselementen sehr nützlich sind.<br />

Maple erlaubt ferner, Prozeduren zu definieren, diese in Bibliotheken<br />

abzuspeichern, und in einfacher Weise wiederaufzufinden. Dank<br />

der Kombination all dieser Eigenschaften eignet sich Maple für das<br />

gesamte Preprocessing des Frameworks.<br />

2. Die laufzeitintensive Berechnung der Matrizen- und Vektorelemente<br />

erfolgt wenn immer möglich über private Variable der Baustein-Objekte.<br />

Dies ist bei den Ntoren immer der Fall, bei den Summengebern<br />

aber prinzipiell nicht. Summengeber greifen über die in Abbildung<br />

4.5 dargestellte, mehrstufige Adressierung auf die Variable in den<br />

Ntoren zu. Andererseits ist bei den Summengebern die Berechnung<br />

der Terme einfacher, da nur einfache Summen vorkommen.<br />

Die Berechnung ist beim Zugriff direkt über Symboladdressen effektiver.<br />

Die Symboladressen werden bereits zur Übersetzungszeit<br />

vom Kompiler berechnet. <strong>Eine</strong> wichtige Konsequenz des Ansatzes<br />

ist, dass konkrete Baustein-Typen, z.B. ein Transformator-Ntor oder<br />

ein Kirchhoff-Summengeber immer durch konkrete, zur Übersetzungszeit<br />

bekannte Klassen realisiert werden. Ein Klassenkonstruktor<br />

wird zur Programmlaufzeit generell nur ein einziges Mal aufgerufen,<br />

um ein Baustein-Objekt zu erzeugen. In diesem einzigen Aufruf<br />

müssen dann die über alle Dienste benötigten lokalen Variablen und<br />

Übergabeparameter vom Klienten im Baustein-Konstruktor akkumuliert<br />

werden, damit bei der Instantiierung alle benötigten lokalen Variablen<br />

vorhanden sind und initialisiert werden können.<br />

Die Elemente der DA und der Adaptionsprozess beeinflussen sich bei<br />

der Implementation der DA gegenseitig.<br />

Die Einzelteile lassen sich daher im Kontext des Adaptionsprozesses<br />

von Abbildung 5.3 besser verstehen. Die Symbolbeschreibung in Unter-<br />

<strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-E

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!