-
Notifications
You must be signed in to change notification settings - Fork 0
/
astbase.pas
125 lines (108 loc) · 3.17 KB
/
astbase.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
PROGRAM AstroCAD(Input,Output);
{
Astronomisches CAD-Programm zur Bestimmung von Planetenbahnen mittels
der L”sung von jeweils 6 Differentialgleichungen fr einen K”rper;
autom. Verwaltung von Positionsdateien und graphischer Analyse und
abschlieáender Koordinatenumrechnung fr alle Astronomen, die ber die
'Trockenbungen' hinaus kommen wollen.
ASTRO-CAD V0.1a
(c) 1990,91,92 by Wolfram Schroers
}
USES Vectors,AstConv,AstVerw;
{
*** 1. Teil: Globale Variablen und Konstanten ***
}
VAR JulianDate : Skalar; { Julianisches Datum }
UT,MOZ : Skalar; { Verschiedene Zeiten }
SonnenSystem : TRKInfo; { Daten fr Runge-Kutta-Verfahen }
{
*** 2. Teil: Unterprogramme und Initialisierungen ***
}
PROCEDURE Init;
VAR Lauf:Byte;
BEGIN
(* Variablen initialisieren *)
SonnenSystem.AnzK:=0;
SonnenSystem.Faktor:=600; { Schrittweite Runge-Kutta-Verfahren }
JulianDate:=2448256.5; { Dummy }
UT:=0;
FOR Lauf:=1 TO MaxKoerper DO New(SonnenSystem.Koerper[Lauf].Info)
END;
PROCEDURE DeInit;
VAR Lauf:Byte;
BEGIN
FOR Lauf:=1 TO MaxKoerper DO Dispose(SonnenSystem.Koerper[Lauf].Info);
WriteLn('Vielen Dank fr die Arbeit mit AstroCAD !')
END;
PROCEDURE ZeigePosition(VAR A:Byte;VAR Koerper:TSSystem;VAR I:LongInt); Far;
BEGIN
JulianDate:=JulianDate+1
END;
PROCEDURE Ausfuehren;
VAR Daten:DiskSystem;
Lauf:Byte;
TeXDatei:Text;
SPhenDaten:SPhen;
Anzeige:TWatch;
aktpage:Byte;
last:Boolean;
Wahl:Char;
Ende:Boolean;
PROCEDURE Laden(DName:String);
BEGIN
WITH SonnenSystem DO
BEGIN
Daten.AnzK:=AnzK;
Daten.Koerper:=Addr(Koerper);
Daten.JulDat:=JulianDate;
Daten.Dateiname:=DName
END;
LoadBodies(Daten);
SonnenSystem.AnzK:=Daten.AnzK;
JulianDate:=Daten.JulDat;
IF Daten.OK THEN
WriteLn(SonnenSystem.AnzK:2,' Koerper eingelesen.')
ELSE
WriteLn('Fehler beim Einlesen. Bitte brechen Sie ab !');
END;
PROCEDURE Speichern;
BEGIN
aktpage:=0;
Daten.Dateiname:='SOLARUPD.TSS';
Daten.Beschreib:='Unser Sonnensystem am Ende eines Analyselaufes';
WITH Daten DO
BEGIN
AnzK:=SonnenSystem.AnzK;
Koerper:=Addr(SonnenSystem.Koerper);
JulDat:=JulianDate
END;
SaveBodies(Daten)
END;
PROCEDURE Ereignisse_suchen;
BEGIN
WITH SPhenDaten DO
BEGIN
AnzK:=SonnenSystem.AnzK;
Von:=ErdNr; Bis:=SonnenSystem.AnzK;
Koerper:=Addr(SonnenSystem.Koerper);
Faktor:=SonnenSystem.Faktor;
JulDat:=JulianDate;
Tage:=600;
Assign(ToDat,'jup2.dat');
ReWrite(ToDat);
Bahn:=NichtAktiv;
Konstell:=Aktiv;
Eclipse:=Aktiv
END;
SolarPheno(SPhenDaten);
END;
BEGIN
Laden('SOLARST.TSS');
Ereignisse_suchen;
Speichern
END;
BEGIN
Init;
Ausfuehren;
DeInit
END.