Raketenballistik

Mathematische Möglichkeiten zur Lösung der Bewegungsgleichungen.

Der aufmerksame Leser hat den Unterschied in den Formeln, die zur Lösung der Bewegungsgleichung mit und ohne Luftwiderstand angeben wurden, bestimmt bemerkt. Der Unterschied besteht nicht nur in der Einführung der zusätzlichen Komponente des Luftwiderstands sondern, auch im Weglassen eines von der Senkrechten abweichenden Startwinkels.

Die Bewegungsgleichung unter Beachtung des Luftwiderstands lässt sich nur geschlossen lösen, wenn die Flugphase in zwei Abschnitte aufgeteilt wird. Sie lässt sich aber nur lösen, wenn der Flug senkrecht nach oben erfolgt, da Schub, Luftwiderstand und Gewichtskraft hier auf einer Linie liegen.

Erfolgt ein schräger "Abschuss", dann sind die Gleichungen nach Fehskens - Malewicki nicht mehr anwendbar. Notgedrungen müssen die Gleichung(en) iterativ in kleinen Schritte (z.B. 1ms) gelöst werden.

Auf einem PC lassen sich die folgenden Zeilen schnell eintippen, so dass man relativ einfach z.B. Höhe und Maximalgeschwindigkeit ermitteln kann.


double fwd= rocketdiameter*rocketdiameter / 4 * 3.14;  Frontfläche
double dt = 10;  // Schrittweite 10ms
double g = 9.81; // Fallbeschleunigung m/s2
double az = 0;   // Beschleunigung  
double vz = 0;   // Geschwindigkeit  
double sz = 0;   // Strecke
double gesamtflugzeit = 0;
double gesamtflughöhe = 0;
    
for (double t_cur = 0; ; t_cur += dt) {

  // --------------------------------------------------------
  // Schub und Masse berechnen
  // --------------------------------------------------------
  double schub = 0;
  double masse = raketebmasse + motormasse;  

  // --------------------------------------------------------
  // Konstanter Schub während der Abbrandphase
  // Masse nimmt während Schubphase ab
  // --------------------------------------------------------
  if (t_cur < Abbrandzeit) {
    schub = averagethrust;
    masse -= treibsatzmasse * t_cur/Abbrandzeit;
  } else {
    masse  -= treibsatzmasse;
  }
  // --------------------------------------------------------
  // maximalen Luftwiderstand berechnen und merken
  // --------------------------------------------------------
  double lw = Luftwiderstand(fwd, vz, sz);
  az = (schub - lw)/masse - g;
  // --------------------------------------------------------
  // Geschwindigkeitszuwachs aus Beschleunigung
  // --------------------------------------------------------
  vz += az * dt;
  // --------------------------------------------------------
  // Streke aus Geschwindigkeit
  // --------------------------------------------------------
  sz += vz * dt;
  // --------------------------------------------------------
  // Wenn Spitze erreicht, dann ist Schluss mit Rechnnen
  // --------------------------------------------------------
  if (sz<sz_last && gesamtflughöhe==0) {
    gesamtflugzeit = t_cur;
    gesamtflughöhe = sz;
    break;
  } 
  sz_last = sz;
}

Ein nächster Schritt kann u.a. darin bestehen, dass man die Schubkurve als Polynom abspeichert und zu jeden Zeitschritt einen genaueren Wert als den Durchschnittswert des Schub in die Rechnung einfließen lässt.


double Schub(double t) {
double zeit[6] = { 0.25, 0.4, 0.55, 1.0, 1.9, 2.1 };
double schub[6] = { 20, 7.8, 2.9, 0.5, 0.5, 0 };

  for (int i=5; i>=0; i--) {
    if (t < zeit[i])
	  return schub[i];
  }
  return 0; 
}

Den Einfluß der Schubkurve auf das Berechnungsergebnis wird im Papier Vergleich Schubkurve deutlich. Obwohl der durchschnittliche Schub für alle drei Beispiele gleich ist, errechnen sich stark abweichende Ergebnisse. Eine genaue Abbildung der Schubkurve ist daher sinnvoll.

Weiterhin erkennt man bei der ansteigenden Kurve, dass der Schub am Anfang nicht ausreicht, um die Rakete von der Rampe zu bewegen. Die Beschleunigung wird aufgrund der Fallbeschleunigung negativ! Für eine genaue Höhe sollte dieser Effekt berücksichtigt werden.
 

Auch die Luftdichte kann als nicht konstant angenommen werden. Sie ändert sich mit der Höhe.


double Luftwiderstand(double fwd, double vz, double sz) {
  return CW(vz) * Dichte(sz)/2 * vz*vz * fwd; 
}

Auch hier ist eine ständige Berechnung aufgrund der aktuell erreichten Höhe möglich. Da der CW-Wert sich bei der Annäherung der Geschwindigkeit an die Schallgeschwindigkeit ändert, kann hier zusätzlich noch eine derartige Abhängigkeit modellieren.

Wenn die schrittweise Lösungsmöglichkeit generell besteht, so bleibt die Frage, wieso es dann verschiedene Ansätze gibt?

Geht man in das letzte Jahrhundert zurück, so gab es in den 60er und 70er Jahren noch keine PCs. Dennoch wollte man wissen, wie hoch Modellraketen fliegen. Wählt man bei einem Flug mit einer Dauer von 10 Sekunden eine grobe Auflösung von 100 ms, so muss man die Bewegungsgleichung 100 Mal lösen. Um eine genauere Lösung zu bekommen, kann man eine Schrittweite von 10ms wählen, mit dem Taschenrechner wären dann 1000 Gleichungen zu lösen.

Diese Mühe wollte sich niemand machen ... Eine Lösung bot sich mit der Aufteilung in zwei Flugphasen (Start- und Freiflugphase). Hier musste man nur drei Gleichung lösen, die allerdings die Nutzung eines Tafelwerks erforderten.

Die Arbeit mit vorberechneten Funktionen (Tafelwerken) gab es aber auch schon früher. Für die Berechnung der ballistischen Daten (Flugweite, Streuung) von militärisch eingesetzten Raketen wurden ebenfalls Tafelwerke eingesetzt. Selbst in den 80er Jahren des letzten Jahrhunderts waren Tafelwerke zur überschlägigen Bewertung von Flugkörpern im Einsatz (NACA Report 1307). Mit Großrechnern wurden anhand aerodynamischer Modelle diese Tabellen berechnet und mittels Vergleichswerten aus der Praxis abgeglichen.

Als PCs verstärkt in das Leben Einzug hielten, reichten diese mit ihrer Rechenleistung noch nicht an die heutigen Möglichkeiten. Um dennoch in annehmbarer Zeit zu belastbaren Resultaten zu kommen, wurden die Gleichungen numerisch unter Zuhilfenahme spezieller Verfahren (z.B. Runge-Kutta) schrittweise gelöst. Die Verfahren wählen selbständig die Schrittweite, so dass bei einem glatten Verlauf die Schrittweite erhöht werden kann und weniger Schritte benötigt werden, als wenn mit einer konstanten Schrittweite gerechnet wird.

In der heutigen Zeit kann man aufgrund der hohen Rechenleistung die Gleichungen ohne Probleme und "ohne Nachzudenken" mit sehr kleinen Schritten iterative berechnen. Selbst wenn die Gleichungen (um Momente und verfeinerte Strukturen) erweitert werden, hält sich die Rechenzeit für die Berechnung des Flugs einer Modellrakete in Grenzen.