Ich schließe mich mit diesem Blog mal dem Letzten an. Beim Nachdenken über die Berechnung des Luftwiderstandes der Pumhard von Steyr. Der ist bei diesem Geschütz, dessen Schussbahn sich maximal 100 m über den Boden erhebt, konstant. Doch bei einem anderen Geschütz nimmt er ab je höher das Projektil steigt. Ein Schiffsgeschütz mit einer Reichweite von 40 km müsste schon die Stratosphäre durchqueren und damit sinkt natürlich der Druck der Atmosphäre.
Die Idee, die mir nun kam: Im Vakuum erreicht man beim schrägen Wurf (als solcher wird der Schuss behandelt) die maximale Weite wenn gilt:
cos (alpha) = Sin(Alpha), was bei einem Winkel von 45 Grad der Fall ist.
Wenn ich nun den Luftwiderstand mit einberechne, so sollte von der Logik her es sinnvoll sein, die Atmosphäre möglichst schnell zu durchqueren, also mit steilerem Winkel zu feuern. Ich verliere dann zwar etwas theoretische Maximalreichweite, aber mein Geschoss wird weniger stark abbremst, sodass die realisierbare Reichweite vielleicht größer ist.
Ich habe dies nun mal simuliert und dafür im Kern die Routine genommen, die ich schon beim letzten Mal publiziert habe.
Die Dichte der Atmosphäre habe ich mit der Internationalen Höhenformel berechnet. Genauer gesagt den Druck und den dann mit der Dichte auf Meereshöhe multipliziert. Als Cw-Wert für ein modernes Geschoss habe ich 0,31 genommen, ein Wert, den ich diesem Dokument entnommen habe.
Die Routine verwendet eine Annäherung die zuerst für eine Grafik die Reichweite und Höhe in 1 Grad Schritten berechnet. Während des Durchlaufs wird der weiteste Weg und zugehörige Winkel gemerkt und dann in einer zweiten Schleife wird von diesem Wert jeweils um einen Schritt zurück und vor gegangen und innerhalb dieser neuen nun engeren Grenzen erneut der beste Wert gesucht. Das wird solange wiederholt, wobei die Schrittweite immer kleiner wird, bis man bei unter 1 m Abweichung ist. Der Rest der Anweisungen dient für die Aufnahme der Grafikdaten und Ausgabe.
- 45,1 Grad
- 112,40 s Flugzeit
- 61.751,5 m Sx
- 15.510,8 m Hmax
- 776,5 m/s vakt
Dies sind die Werte für das größte Schiffsgeschütz, ein 45-cm-Geschütz der japanischen Marine. Dessen Kanonen konnten nur bis 45 Grad ausgerichtet werden. Die angegebene Maximalreichweite (bei 45 Grad) von 42 km ist deutlich kleiner als bei der Simulation.
Wie sieht es bei kleineren Geschützen aus?
- 45,3 Grad
- 133,30 s Flugzeit
- 86.253,5 m Sx
- 21.838,7 m Hmax
- 914,7 m/s vakt
Das könnte an Abweichungen der realen Atmosphäre von dem Standardmodell sein, ich vermute aber eher, dass der cW-Wert nicht konstant ist. In dem Dokument steigt er z.B. beim Übergang vom Unterschall in den Überschallbereich stark an und die 0,31 waren ein Mittelwert. Bei dieser Granate, die nur im Überschallbereich unterwegs ist, müsste man einen höheren cW-Wert nehmen. Zudem habe ich nur die Frontfläche berechnet. Wenn auch die Seitenflächen Widerstand erzeugen, dann ist die Fläche viel größer.
Zuletzt noch ein kleineres Kaliber, die 7,5 cm Feldkanone 18. Daten: 5,83 kg Geschossgewicht, 9.425 m Reichweite, 580 m/s Anfangsgeschwindigkeit. Hier erhält man die größte Weite bei einem niedrigen Winkel:
- 45,1 Grad
- 82,25 s Flugzeit
- 33.008,9 m Sx
- 8.421,9 m Hmax
- 558,1 m/s vakt
Auch hier erhalte ich eine deutlich höhere Reichweite. Die Simulation hat also deutliche Mängel und müsste mit den realen Flächen und (geschwindigkeitsabhängigen) cw-Werten rechnen, diese liegen mir aber nicht vor.
Jubelfeuer
Zuletzt noch eine Frage, die ab und zu auftaucht: Wie gefährlich ist es, in die Luft zu schießen? Wenn ein Diktator gestürzt wird, schießen die Leute ja gerne in die Luft und Gerüchten zufolge sollen die Kugeln selbst dann noch lebensgefährlich sein, wenn sie wieder herunterkommen. Ich habe mal einen Winkel von 80 Grad genommen. Das modellierte Geschoss ist eine 7,62 x 39 mm Patrone, das ist das Format, das die Kalaschnikow nutzt, das wohl am häufigsten eingesetzte Sturmgewehr. Die Patrone wiegt 7,9 g und wird mit 730,3 m/s abgeschossen.
Die Patrone hat noch eine ziemliche Geschwindigkeit drauf:
80,0 Grad
103,54 s Flugzeit
9.270,9 m Sx
14.150,8 m Hmax
457,2 m/s vakt
Die Höhe und Reichweite erscheint mir deutlich zu hoch, aber gefährlich dürften die Patronen auch noch sein, wenn sie nur mit der halben Geschwindigkeit ankommen. Dies würde mit den 2-3 km Maximalhöhe, die genannt werden, korrelieren.
procedure TForm2.Berechnen(Sender: TObject);
const
startv = 780;
rhoref = 772.41;
cw = 0.31;
d = 0.4;
Masse = 1500;
dt = 0.01;
g = 9.81;
refp = 1013.25;
var
v, vx, vy, vg, rho: double;
widerstand: double;
f: double;
ekin: double;
sx, sy: double;
hmax: double;
t: double;
winkel: double;
Merkwinkel, merkdistanz: double;
step, obergrenze: double;
Grafikwerte: TMesswerte;
Grafikwertey: TMesswerte;
Function Hoehenformel(const H: double): double;
begin
result := refp * power(1 - ((0.0065 * H) / 288.15), 5.255);
end;
begin
setlength(Grafikwerte, 0);
setlength(Grafikwertey, 0);
f := pi * sqr(d / 2);
winkel := 0;
obergrenze := 90;
step := 1;
merkdistanz := -1; // Damit schon die erste Berechnung eine neue Distanz setzt
Merkwinkel := winkel; // Damit der Compiler nicht meckert
repeat
repeat
v := startv;
sx := 0;
sy := 0.0;
hmax := 0;
t := 0;
repeat
ekin := 1 / 2 * Masse * v * v;
rho := rhoref * Hoehenformel(sy) / refp;
widerstand := rho * cw * f * v * v / 2 * dt;
ekin := ekin - widerstand;
v := Sqrt(2 * ekin / Masse);
vx := cos(Degtorad(winkel)) * v;
vy := sin(Degtorad(winkel)) * v;
vg := g * t;
sx := sx + (vx * dt);
sy := sy + (vy * dt) - (vg * dt);
hmax := max(hmax, sy);
t := t + dt;
until (t > 1) and (sy < 0); // 0 m
if step = 1 then
begin
setlength(Grafikwerte, length(Grafikwerte) + 1);
Grafikwerte[high(Grafikwerte)].y := sx;
Grafikwerte[high(Grafikwerte)].x := winkel;
Grafikwerte[high(Grafikwerte)].Farbe := clred;
setlength(Grafikwertey, length(Grafikwertey) + 1);
Grafikwertey[high(Grafikwertey)].y := hmax;
Grafikwertey[high(Grafikwertey)].x := winkel;
Grafikwertey[high(Grafikwertey)].Farbe := clnavy;
end;
if sx > merkdistanz then
begin
merkdistanz := sx;
Merkwinkel := winkel;
end;
winkel := winkel + step;
until winkel > obergrenze;
winkel := Merkwinkel - step;
obergrenze := Merkwinkel + step;
step := step / 10;
until Abs(merkdistanz - sx) < 1;
Cleargraphic;
SetRunden(true, true);
SetScreenAnpassung(Donothing);
SetParameter(700, 700, 2, 3, true);
// SetzeGrenzen(0, 50000, 0, 100);
SetFormatstr('%.0n', '%.0n');
Setfont('Arial Narrow', 20);
SetBeschriftung('Flugbahn über Winkel', 'm', 'Grad');
AddCurve(Grafikwerte, clred, 'Winkel gegen Weite');
AddCurve(Grafikwertey, clnavy, 'Winkel gegen Höhe');
Show_Grafik;
form1.Image1.Picture.Assign(getimage);
form1.Show;
Memo1.Lines.Clear;
Memo1.Lines.Add(Format('%.1n Grad', [Merkwinkel]));
Memo1.Lines.Add(Format('%.2n s Flugzeit', [t]));
Memo1.Lines.Add(Format('%.1n m Sx', [sx]));
Memo1.Lines.Add(Format('%.1n Hmax', [hmax]));
Memo1.Lines.Add(Format('%.1n vakt', [v]));
end;