Ich habe versucht, ein sehr einfaches Programm zu schreiben, um die Umlaufdauer eines Nanosatelliten zu berechnen. Ich habe die Atmosphärendichte als Funktion der Höhe von dieser Seite erhalten.
ALT(km) DENSITY(kg/m^3)
0 1.17E+00
20 9.49E-02
40 4.07E-03
60 3.31E-04
80 1.68E-05
100 5.08E-07
120 1.80E-08
140 3.26E-09
160 1.18E-09
180 5.51E-10
200 2.91E-10
220 1.66E-10
240 9.91E-11
260 6.16E-11
280 3.94E-11
300 2.58E-11
320 1.72E-11
340 1.16E-11
360 7.99E-12
380 5.55E-12
400 3.89E-12
420 2.75E-12
440 1.96E-12
460 1.40E-12
480 1.01E-12
500 7.30E-13
520 5.31E-13
540 3.88E-13
560 2.85E-13
580 2.11E-13
600 1.56E-13
620 1.17E-13
640 8.79E-14
660 6.65E-14
680 5.08E-14
700 3.91E-14
Laut diesem Papier, das ich nur überfliege, kann zwischen 2,0 und 2,2 entnommen werden. Der Teil des Programms, der die Beschleunigung berechnet, lautet wie folgt:
#define REARTH (6400.0) // Radius of earth in Km
#define AREA (0.1 * 1.0E-6) // 0.1 m^2
#define MASS (14) // 14 Kg
#define CD (2.2)
// mu = 3.986004418E5 km^3/s^2
pos = subm(sv, range(0, 2), range(0, 0));
vel = subm(sv, range(3, 5), range(0, 0));
r = length(pos);
g = - mu / (r*r*r) * pos;
alt = r - REARTH;
// gd() returns density in kg/km^3
pho = gd(alt);
drag = - 1.0 * CD * pho * AREA / MASS * vel * length(vel) / 2.0;
dydx(0) = vel(0);
dydx(1) = vel(1);
dydx(2) = vel(2);
gpdrag = g + drag;
dydx(3) = gpdrag(0);
dydx(4) = gpdrag(1);
dydx(5) = gpdrag(2);
Wenn ich dieses Programm ausführe, fällt die Umlaufbahn innerhalb von 70 Tagen auf weniger als 100,0 km für 350,0 km ab. Dies scheint zu wenig Zeit zu sein. Gehe ich davon aus, dass hier etwas falsch oder völlig falsch ist?
Ich habe eine kugelförmige Erde angenommen, der Unterschied zwischen Polen und Äquator beträgt lediglich 22 km. Macht also SSPO oder die äquatoriale Umlaufbahn einen Unterschied für diese Schlussfolgerung?
Ich habe Diagramme für verschiedene Kreisbahnhöhen hinzugefügt.
Einige allgemeine Code-Reviews.
Insgesamt sehen die Annahmen in Ordnung aus, aber die Art und Weise, wie der Zerfall tatsächlich berechnet wird, könnte klarer sein.
die atmosphärische Dichte wird aus obigem Link entnommen und für die dazwischen liegenden Höhen linear interpoliert.
Obwohl ich zustimme, dass dies ein vollkommen vernünftiger Ansatz ist, enthält die Tabelle einige spärliche Werte, bei denen eine lineare Interpolation nicht angemessen ist:
0 1.17E+00
20 9.49E-02
40 4.07E-03
Zu diesem Zeitpunkt schlägt Ihr Satellit jedoch sowieso bereits innerhalb von Sekunden in den Boden ein, also ist es wahrscheinlich in Ordnung.
#define REARTH (6400.0) // Radius of earth in Km
Dies ist größer als jeder Erdradius, sowohl die äquatorialen 6378,1 km als auch die polaren 6356,8 km. Genauere Konstanten kosten Sie nichts und machen deutlicher, welche Annahmen Sie getroffen haben.
"Nano-Satellit"
#define MASS (14) // 14 Kg
Nanosatelliten sind typischerweise mit weniger als 10 kg definiert.
gpdrag = g + drag
Sie addieren Vektorgrößen zusammen. Es ist jedoch schwer zu sagen, ohne zu wissen, wie Vektoren in Ihrem Code behandelt werden, und es ist wahrscheinlich in Ordnung. Aber die falsche Behandlung von Vektoren ist im Allgemeinen eine Hauptquelle für falsche Simulationen.
Programm geht von mittlerer Sonnenaktivität aus
Dies ist keine sichere Annahme, da die Dichte in diesen Höhen stark von der Sonnenaktivität abhängt. Versuchen Sie, Daten sowohl für Tiefs als auch für Hochs zu erhalten, und führen Sie Ihre Simulation für beide aus. Es sollte einen großen lebenslangen Unterschied geben.
1.0 […] / 2.0
Dies ist keine Fließkommakonstante, sondern genau 1/2
die Drag-Formel. Die Dezimalschreibweise ist hier verwirrend.
Ich habe eine kugelförmige Erde angenommen, der Unterschied zwischen Polen und Äquator beträgt lediglich 22 km. Macht also SSPO oder die äquatoriale Umlaufbahn einen Unterschied für diese Schlussfolgerung?
Bei Ihren eigenen Grundstücken machen 22 km oder sogar nur 10 km einen großen Unterschied in der Lebensdauer.
Plausibilitätsprüfung: Haben die Kurven nach Unterschreiten der gleichen Höhe die gleiche Form? Ja!
Aus einer Abbildung in An Evaluation of Cube Sat Orbital Decay geht hervor, dass dies in der Tat vernünftig aussieht:
äh
zephyr0110
zephyr0110
zephyr0110
äh
SE - hör auf, die Guten zu feuern