Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Alphabetische Liste | Datenstrukturen | Auflistung der Dateien | Datenstruktur-Elemente | Datei-Elemente

RungeKutta Klassenreferenz

#include <RungeKutta.h>

Klassendiagramm für RungeKutta:

Integrator

Ausführliche Beschreibung

Dieser Integrator basiert auf dem einfachen RungeKutta Algorithmus aus Numerical Recipes. Es mussten Erweiterungen fuer die Kollisionskontrolle implementiert werden.

Definiert in Zeile 29 der Datei RungeKutta.h.

Öffentliche Methoden

virtual double integrate (double time)
virtual string getName ()
virtual double getTime ()
virtual void createAttributeWindow ()
virtual void save (ostream &FILE)
virtual void load (istream &FILE)
virtual list< Collisionspair > * getCollisionslist ()
 RungeKutta ()
virtual ~RungeKutta ()

Geschützte Methoden

virtual void saveAttributes ()
virtual void loadAttributes ()
virtual void deleteAdditionalInformation (void *additionalInformation)

Private Methoden

double distance (const int i, const int j, const double x[])
double acceleration (const int i, const int komponente, const double x[])
void derivs (double x, double y[], double dydx[])
double rk4 (double y[], double dydx[], int n, double x, double h, double yout[])
double * vec (long nl, long nh)
void free_vec (double *v, long nl, long nh)

Private Attribute

list< Collisionspaircollisions
double * m
double * radius
double t
double h
int n
int objnumber


Beschreibung der Konstruktoren und Destruktoren

RungeKutta::RungeKutta  ) 
 

Konstruktor , h=0.1 Standardwert, der aber an jeweilige Beduerfnisse angepasst werden sollte

Definiert in Zeile 112 der Datei RungeKutta.cpp.

virtual RungeKutta::~RungeKutta  )  [inline, virtual]
 

Definiert in Zeile 104 der Datei RungeKutta.h.


Dokumentation der Elementfunktionen

double RungeKutta::acceleration const int  i,
const int  komponent,
const double  x[]
[private]
 

Parameter:
i i-tes Objekt
komponent 1,2, oder 3
x[] Datenvektor
Rückgabe:
Beschleunigung, die auf die Komponente komponente des i-ten Obj. wirkt

Definiert in Zeile 232 der Datei RungeKutta.cpp.

Benutzt Integrator::cubic(), distance(), GAMMA, m und objnumber.

Wird benutzt von derivs().

void RungeKutta::createAttributeWindow  )  [virtual]
 

Erzeuge AttributeWindow, um Eigenschaften des Integrators festzulegen

Implementiert Integrator.

Definiert in Zeile 63 der Datei RungeKutta.cpp.

Benutzt Integrator::createBasisAttributeWindow() und loadAttributes().

void RungeKutta::deleteAdditionalInformation void *  additionalInformation  )  [protected, virtual]
 

loesche Zeiger additionalInformation

Parameter:
additionalInformation zu loeschender Zeiger

Implementiert Integrator.

Definiert in Zeile 104 der Datei RungeKutta.cpp.

void RungeKutta::derivs double  a,
double  b[],
double  dbda[]
[private]
 

berechnet die Ableitungen der Funktionen in b und speichert diese in dbda

Parameter:
a in dieser Implementierung irrelevant
b Datenvektor
dbda Ableitungen des Datenvektors

Definiert in Zeile 253 der Datei RungeKutta.cpp.

Benutzt acceleration() und n.

Wird benutzt von integrate() und rk4().

double RungeKutta::distance const int  i,
const int  j,
const double  x[]
[private]
 

Parameter:
i i-tes Objekt in der Objektliste
j j-tes Objekt in der Objektliste
x Vektor mit allen Positionsdaten
Rückgabe:
euklidischer Abstand zwischen den beiden Objekten

Definiert in Zeile 215 der Datei RungeKutta.cpp.

Benutzt Integrator::sqr().

Wird benutzt von acceleration().

void RungeKutta::free_vec double *  v,
long  nl,
long  nh
[private]
 

Numerical Recipes Funktion um Speicher eines Vektors freizugeben

Parameter:
v Vektor
nl untere Grenze von v
nh obere Grenze von v

Definiert in Zeile 354 der Datei RungeKutta.cpp.

Benutzt FREE_ARG und NR_END.

Wird benutzt von rk4().

list< Collisionspair > * RungeKutta::getCollisionslist  )  [virtual]
 

Rückgabe:
Liste mit Kollisionspaaren

Implementiert Integrator.

Definiert in Zeile 205 der Datei RungeKutta.cpp.

Benutzt collisions.

virtual string RungeKutta::getName  )  [inline, virtual]
 

Rückgabe:
"RungeKutta"

Implementiert Integrator.

Definiert in Zeile 87 der Datei RungeKutta.h.

virtual double RungeKutta::getTime  )  [inline, virtual]
 

Rückgabe:
t

Implementiert Integrator.

Definiert in Zeile 94 der Datei RungeKutta.h.

Benutzt t.

double RungeKutta::integrate double  time  )  [virtual]
 

Funktion, die Integration vorbereitet und den eigentlichen Integrator rk4 aufruft.

Parameter:
time zu integrierende Zeitspanne
Rückgabe:
tatsaechlich berechnete Zeitspanne

Implementiert Integrator.

Definiert in Zeile 120 der Datei RungeKutta.cpp.

Benutzt collisions, derivs(), h, m, Object::mass, n, objnumber, Object::pos, Object::radius, radius, rk4(), t, Object::v, Vector::x, Vector::y und Vector::z.

void RungeKutta::load istream &  FILE  )  [virtual]
 

laedt die Einstellungen des Integators

Parameter:
FILE Dateiname

Implementiert Integrator.

Definiert in Zeile 29 der Datei RungeKutta.cpp.

Benutzt h.

void RungeKutta::loadAttributes  )  [protected, virtual]
 

setze Schrittweite in AttributeWindow-Verwaltungsklasse

Implementiert Integrator.

Definiert in Zeile 89 der Datei RungeKutta.cpp.

Benutzt h.

Wird benutzt von createAttributeWindow().

double RungeKutta::rk4 double  y[],
double  dydx[],
int  n,
double  x,
double  h,
double  yout[]
[private]
 

Runge-Kutta-Integrator Quelle: Numerical Recipes Erweiterungen: Kollisionscheck, Schrittweitenverringerung bei Kollisionsgefahr

Rückgabe:
tatsaechlich integrierte Schritteweite

Definiert in Zeile 270 der Datei RungeKutta.cpp.

Benutzt collisions, derivs(), free_vec(), Message::msg(), objnumber, radius und vec().

Wird benutzt von integrate().

void RungeKutta::save ostream &  FILE  )  [virtual]
 

speichert die Einstellungen des Integators

Parameter:
FILE Dateiname

Implementiert Integrator.

Definiert in Zeile 19 der Datei RungeKutta.cpp.

Benutzt h.

void RungeKutta::saveAttributes  )  [protected, virtual]
 

hole eps aus AttributeWindow-Verwaltungsklasse

Implementiert Integrator.

Definiert in Zeile 96 der Datei RungeKutta.cpp.

Benutzt h.

double * RungeKutta::vec long  nl,
long  nh
[private]
 

Numerical Recipes Funktion um Speicher fuer einen Vektors zu allokieren

Parameter:
nl untere Grenze
nh obere Grenze

Definiert in Zeile 363 der Datei RungeKutta.cpp.

Benutzt NR_END.

Wird benutzt von rk4().


Dokumentation der Datenelemente

list<Collisionspair> RungeKutta::collisions [private]
 

Liste, die Kollisionspaare enthaelt

Definiert in Zeile 35 der Datei RungeKutta.h.

Wird benutzt von getCollisionslist(), integrate() und rk4().

double RungeKutta::h [private]
 

Schrittweite

Definiert in Zeile 55 der Datei RungeKutta.h.

Wird benutzt von integrate(), load(), loadAttributes(), save() und saveAttributes().

double* RungeKutta::m [private]
 

Massen der Objekte

Definiert in Zeile 40 der Datei RungeKutta.h.

Wird benutzt von acceleration() und integrate().

int RungeKutta::n [private]
 

Anzahl der DGLn

Definiert in Zeile 60 der Datei RungeKutta.h.

Wird benutzt von derivs() und integrate().

int RungeKutta::objnumber [private]
 

Objektanzahl

Definiert in Zeile 65 der Datei RungeKutta.h.

Wird benutzt von acceleration(), integrate() und rk4().

double* RungeKutta::radius [private]
 

Radien der Objekte

Definiert in Zeile 45 der Datei RungeKutta.h.

Wird benutzt von integrate() und rk4().

double RungeKutta::t [private]
 

Zeitdauer, fuer die bisher integriert wurde

Definiert in Zeile 50 der Datei RungeKutta.h.

Wird benutzt von getTime() und integrate().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon May 30 14:31:16 2005 für Sunsystembuildingandsimulation von doxygen 1.3.6