• Keine Ergebnisse gefunden

2.3 Algorithmen und Strategien in DAESOL

2.3.4 Skalierung

Die Fehlerformel aus (2.21) f¨ur die neue Schrittweite sollte dann Ek(n+ 1) ≤ T OL[ an Stelle von Ek(n+ 1) ≤T OL erf¨ullen mit versch¨arfter Toleranz

T OL[ = h

ψk+1(n+ 1) · k∆x0k 4·δ0

.

Wir erhalten eine neue Schrittweite h(neu)n+1 aus Formel (2.26) mit T OL[ an Stelle vonT OL0.

2.3.4 Skalierung

Bei der Fehlersch¨atzung und der Schrittweiten- und Ordnungssteuerung tritt immer wie-der die Norm k · k auf. Da die Komponenten der L¨osung oft von ganz unterschiedlicher Gr¨oßenordnung sind, verwenden wir hierf¨ur eine gewichtete Norm an Stelle einer l2-Norm kxk2

kxn+1k= 1 nx

vu utXnx

i=1

xn+1,i xscaln+1,i

2

.

xn+1,i beschreibt dabei die i-te Komponente der approximierten L¨osungstrajektorie im Schritt n+ 1 und xscaln+1,i den zugeh¨origen Skalierungsfaktor.

In DAESOL kann der Benutzer unter den folgenden beiden Skalierungen w¨ahlen:

a) Skalierung wie sie in den meisten Integratoren verwendet wird (siehe etwa Brenan et al. [BCP96]):

xscaln+1,i=|xn+1,i|+AT OLi/T OL, i= 1, . . . , nx (2.28) b) Skalierung, die zus¨atzlich die Gr¨oßenordnung der Komponenten zu fr¨uheren

Zeit-punkten ber¨ucksichtigt:

xscaln+1,i=max(|xn+1,i|, xscaln,i, AT OLi), i= 1, . . . , nx (2.29) mit xscal0,i = 0,T OLdie relative undAT OLdie absolute Genauigkeit, die vom Benutzer vorgegeben werden.

Der Parameter AT OL kann dabei als skalare Gr¨oße gew¨ahlt werden (AT OLi = AT OL1, i = 2, . . . , nx) oder als Vektor (AT OL ∈ IRnx). Letzteres ist dann sinnvoll, wenn die L¨osungskomponenten sehr unterschiedlich groß sind. Im Fall a) hat AT OL die Bedeutung des absoluten Fehlers. Die Gr¨oße (−log10(T OL)) gibt die Anzahl an signifi-kanten Stellen f¨ur die L¨osungstrajektorie an. Werte kleiner als AT OLi gehen nicht mehr signifikant in die L¨osung ein. Im Modus b) hat die Variable AT OL die Bedeutung eines Skalierungsfaktors. Sie beschreibt die Gr¨oßenordnung, f¨ur die wir noch die Genauigkeit von (−log10(T OL)) Ziffern erhalten m¨ochten. Sind die Werte kleiner alsAT OLi, so muß die Komponente nur noch f¨ur die −log10(T OL) + log10(AT OLi) Ziffern genau berechnet werden.

Im Fall b) h¨angt die aktuelle Skalierung von dem Wert aus dem vorherigen Schritt ab.

Die Idee ist, den maximalen Wert der einzelnen Komponenten in der Fehlersch¨atzung mit zu ber¨ucksichtigen. In manchen F¨allen, wenn eine Komponente im Laufe der Integration stark abf¨allt, die kleinen Werte aber trotzdem signifikant in die Berechnungen eingehen, ist der Skalierungsmodus a) zu empfehlen.

Kapitel 3

Strategien in der Startphase

Bei der numerischen Integration von DAE-Systemen, insbesondere mit Mehrschrittver-fahren, muß gerade der Startphase besondere Beachtung geschenkt werden. Bei DAE-Systemen m¨ussen die Anfangswerte konsistent sein (siehe auch Abschnitt 1.3). Sind die algebraischen Gleichungen hochgradig nichtlinear, so k¨onnen konsistente Anfangswerte oft nicht mehr mit einem Newton-Verfahren berechnet werden. Im Programmpaket DAE-SOL stehen zur konsistenten Initialisierung zwei M¨oglichkeiten zur Verf¨ugung: Zum einen k¨onnen die konsistenten Anfangswerte mit einem Homotopie-Verfahren berechnet wer-den. Der Homotopieweg kann dabei eine vorgegebene Standardhomotopie oder ein vom Benutzer definierter, physikalisch fundierter Weg sein. Im Optimierungskontext ist eine Relaxierung der algebraischen Gleichungen zu empfehlen. Diese garantiert Konsistenz bei der L¨osung des Anfangswertproblems in jeder Iteration des Optimierungsproblems.

Ein weiteres Problem ist die Generierung von zur¨uckliegenden Werten bei Mehrschrittver-fahren. Dies kann entweder mit einem Einschrittverfahren h¨oherer Ordnung erfolgen oder durch Starten des Mehrschrittverfahrens mit Ordnung 1 und anschließendem langsamem Hochschalten der Ordnung. In letzterem Fall ist die Approximation bei niedriger Ordnung weniger genau, weshalb in der Regel eine k¨urzere Schrittweite im Vergleich zu h¨oheren Ordnungen n¨otig ist.

Im folgenden beschreiben wir zun¨achst ein Homotopie-Verfahren zur konsistenten Initia-lisierung bei DAE-Systemen vom Index 1 wie es im Programmpaket DAESOL implemen-tiert ist. Wie bei der Fehlersch¨atzung und Schrittweitensteuerung f¨ur das BDF-Verfahren in DAESOL beruht die Schrittweitensteuerung auf Fehlerformeln auf dem tats¨achlichen nicht¨aquidistanten Gitter; f¨ur die L¨osung der Lineare-Algebra-Teilprobleme wird eine Monitor-Strategie ¨ahnlich zu 2.3.1 angewendet.

Im Optimierungskontext ist eine Relaxierung der algebraischen Gleichungen sinnvoll, wie sie im Anschluß dargestellt wird. Die dabei auftretenden Strukturen werden in DAESOL ausgenutzt.

Zur Generierung von Startdaten wurde ein Runge-Kutta-Verfahren der Ordnung 4 im-plementiert. Da auch 4 der 7 internen Stufen von der Ordnung 3 sind, reicht ein Schritt

43

mit dem Einschrittverfahren aus, um alle n¨otigen zur¨uckliegenden Werte f¨ur das BDF-Verfahren zu generieren. Das implementierte Runge-Kutta-BDF-Verfahren ist ein SDIRK-Verfahren, so daß f¨ur die L¨osung der Lineare-Algebra-Teilprobleme jeweils die gleiche zer-legte Iterationsmatrix verwendet werden kann. Dabei wurde auch ber¨ucksichtigt, daß diese im Anschluß f¨ur das BDF-Verfahren wiederverwendet werden kann. Die Fehlersch¨atzung f¨ur das SDIRK-Verfahren ist genau auf diejenige des BDF-Verfahrens zugeschnitten.

3.1 Konsistente Initialisierung

Zur L¨osung eines Anfangswertproblems f¨ur eine DAE der Form F(t, y,y) = 0,˙ y(t0) =y0,y(t˙ 0) = ˙y0,

m¨ussen die Anfangswerte konsistent sein, d.h. F(t0, y0,y˙0) = 0 (siehe Abschnitt 1.3).

W¨urde man die Integration mit inkonsistenten Anfangswerten starten, so w¨urde das Ver-fahren (falls das Newton-VerVer-fahren zur L¨osung der impliziten nichtlinearen Gleichungen uberhaupt konvergiert) nach einem Schritt einen konsistenten Punkt, d.h.¨ F(t1, y1,y˙1) = 0 berechnen. Probleme erg¨aben sich dann bei der Fehlersch¨atzung, da der Fehler im An-fangsschritt mit h0 →0 in der Regel konstant ist oder zumindest nicht mith0 →0 gegen 0 geht, da er zus¨atzlich den Abstand zwischen inkonsistentem und konsistentem Anfangs-wert enth¨alt. Die Fehlersch¨atzung w¨urde auch bei Reduzierung der Schrittweite keinen berechneten Wert akzeptieren.

Nachfolgend beschr¨anken wir uns wiederum auf DAEs vom Index 1 der Form (2.11). Hier-bei sind die differentiellen Variableny die freien Variablen. Die algebraischen Variablenz k¨onnen durch die algebraischen Gleichungen eindeutig bestimmt werden, dagz regul¨ar ist (Index 1-Bedingung). Um die konsistenten Anfangswerte f¨ur die algebraischen Variablen zu bestimmen, muß man die Nullstelle von g(t0, y0, z) berechnen.

Ein Vollschritt-Newton-Verfahren zur Berechnung der Nullstelle von g(t0, y0, z) konver-giert nur dann, wenn die Startwerte f¨urz(t0) im lokalen Konvergenzbereich des Verfahrens liegen. F¨ur hochgradig nichtlineare Systeme kann der Konvergenzbereich des Vollschritt-Newton-Verfahrens sehr klein sein. Manche Komponenten von z sind oft g¨anzlich unbe-kannt, da sie unter anderem keinen Messungen zug¨anglich sind. Es ist dann schwierig oder praktisch unm¨oglich, geeignete Startsch¨atzungen f¨ur die einzelnen Komponenten anzuge-ben.

Zur Berechnung konsistenter Anfangswerte sind dann Verfahren mit Globalisierungsstra-tegien n¨otig, wie etwa globalisierte Newton-Verfahren oder Homotopie-Verfahren.

F¨ur das Programmpaket DAESOL wurde ein Homotopie-Verfahren entwickelt und imple-mentiert, das konsistente Anfangswerte berechnet, falls die L¨osung mit einem Vollschritt-Newton-Verfahren mit den gegebenen Startsch¨atzungen nicht gefunden werden kann.