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

RungeKuttaAdaptive Klassenreferenz

#include <RungeKuttaAdaptive.h>

Klassendiagramm für RungeKuttaAdaptive:

Integrator

Ausführliche Beschreibung

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

Definiert in Zeile 34 der Datei RungeKuttaAdaptive.h.

Öffentliche Methoden

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

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[])
void rkck (double y[], double dydx[], int n, double x, double h, double yout[], double yerr[])
bool rkqs (double y[], double dydx[], int n, double *x, double htry, double eps, double yscal[], double *hdid, double *hnext)
double * vec (long nl, long nh)
void free_vec (double *v, long nl, long nh)

Private Attribute

double * m
double * radius
double t
int n
double eps
double nextsteplength
double actualsteplength
int objnumber
list< Collisionspaircollisions


Beschreibung der Konstruktoren und Destruktoren

RungeKuttaAdaptive::RungeKuttaAdaptive  ) 
 

Konstruktor, initialisiert Variablen und setzt empfohlene Genauigkeit

Definiert in Zeile 110 der Datei RungeKuttaAdaptive.cpp.

Benutzt eps.

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

Definiert in Zeile 126 der Datei RungeKuttaAdaptive.h.


Dokumentation der Elementfunktionen

double RungeKuttaAdaptive::acceleration const int  i,
const int  komponente,
const double  x[]
[private]
 

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

Definiert in Zeile 235 der Datei RungeKuttaAdaptive.cpp.

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

Wird benutzt von derivs().

void RungeKuttaAdaptive::createAttributeWindow  )  [virtual]
 

Erzeuge AttributeWindow, um Eigenschaften des Integrators festzulegen

Implementiert Integrator.

Definiert in Zeile 61 der Datei RungeKuttaAdaptive.cpp.

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

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

loesche Zeiger additionalInformation

Parameter:
*additionalInformation zu loeschender Zeiger

Implementiert Integrator.

Definiert in Zeile 103 der Datei RungeKuttaAdaptive.cpp.

void RungeKuttaAdaptive::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 256 der Datei RungeKuttaAdaptive.cpp.

Benutzt acceleration().

Wird benutzt von integrate() und rkck().

double RungeKuttaAdaptive::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 218 der Datei RungeKuttaAdaptive.cpp.

Benutzt Integrator::sqr().

Wird benutzt von acceleration().

void RungeKuttaAdaptive::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 399 der Datei RungeKuttaAdaptive.cpp.

Benutzt FREE_ARG und NR_END.

Wird benutzt von rkck() und rkqs().

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

Rückgabe:
Liste mit Kollisionspaaren

Implementiert Integrator.

Definiert in Zeile 208 der Datei RungeKuttaAdaptive.cpp.

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

Rückgabe:
"RungeKuttaAdaptive"

Implementiert Integrator.

Definiert in Zeile 108 der Datei RungeKuttaAdaptive.h.

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

Rückgabe:
t

Implementiert Integrator.

Definiert in Zeile 115 der Datei RungeKuttaAdaptive.h.

double RungeKuttaAdaptive::integrate double  time  )  [virtual]
 

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

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

Implementiert Integrator.

Definiert in Zeile 125 der Datei RungeKuttaAdaptive.cpp.

Benutzt actualsteplength, derivs(), eps, Object::mass, nextsteplength, Object::pos, Object::radius, rkqs(), Object::v, Vector::x, Vector::y und Vector::z.

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

laedt die Einstellungen des Integators

Parameter:
FILE Dateiname

Implementiert Integrator.

Definiert in Zeile 27 der Datei RungeKuttaAdaptive.cpp.

Benutzt eps.

void RungeKuttaAdaptive::loadAttributes  )  [protected, virtual]
 

setze eps in AttributeWindow-Verwaltungsklasse

Implementiert Integrator.

Definiert in Zeile 88 der Datei RungeKuttaAdaptive.cpp.

Benutzt eps.

Wird benutzt von createAttributeWindow().

void RungeKuttaAdaptive::rkck double  y[],
double  dydx[],
int  n,
double  x,
double  h,
double  yout[],
double  yerr[]
[private]
 

Integrator-Hilfsfunktion, wird von rkqs aufgerufen. Quelle: Numerical Recipes

Definiert in Zeile 272 der Datei RungeKuttaAdaptive.cpp.

Benutzt derivs(), free_vec() und vec().

Wird benutzt von rkqs().

bool RungeKuttaAdaptive::rkqs double  y[],
double  dydx[],
int  n,
double *  x,
double  htry,
double  eps,
double  yscal[],
double *  hdid,
double *  hnext
[private]
 

adaptiver Runge-Kutta-Integrator Quelle: Numerical Recipes Erweiterungen: Kollisionscheck, Abbruchkriterium bei stepsize underflow

Rückgabe:
false, wenn keine Kollisionen stattgefunden haben, sonst true

Definiert in Zeile 327 der Datei RungeKuttaAdaptive.cpp.

Benutzt Integrator::abs(), ERRCON, free_vec(), PGROW, PSHRNK, rkck(), SAFETY und vec().

Wird benutzt von integrate().

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

speichert die Einstellungen des Integators

Parameter:
FILE Dateiname

Implementiert Integrator.

Definiert in Zeile 17 der Datei RungeKuttaAdaptive.cpp.

Benutzt eps.

void RungeKuttaAdaptive::saveAttributes  )  [protected, virtual]
 

hole eps aus AttributeWindow-Verwaltungsklasse

Implementiert Integrator.

Definiert in Zeile 95 der Datei RungeKuttaAdaptive.cpp.

Benutzt eps.

double * RungeKuttaAdaptive::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 408 der Datei RungeKuttaAdaptive.cpp.

Benutzt NR_END.

Wird benutzt von rkck() und rkqs().


Dokumentation der Datenelemente

double RungeKuttaAdaptive::actualsteplength [private]
 

zu letzt durchgefuehrte Schrittlaenge

Definiert in Zeile 70 der Datei RungeKuttaAdaptive.h.

Wird benutzt von integrate().

list<Collisionspair> RungeKuttaAdaptive::collisions [private]
 

Liste, die die Kollisionspaare speichert, falls Kollisionen stattgefunden haben

Definiert in Zeile 81 der Datei RungeKuttaAdaptive.h.

double RungeKuttaAdaptive::eps [private]
 

Genauigkeit mit der integriert wird

Definiert in Zeile 60 der Datei RungeKuttaAdaptive.h.

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

double* RungeKuttaAdaptive::m [private]
 

Massen der Objekte

Definiert in Zeile 40 der Datei RungeKuttaAdaptive.h.

int RungeKuttaAdaptive::n [private]
 

Anzahl der DGLn

Definiert in Zeile 55 der Datei RungeKuttaAdaptive.h.

double RungeKuttaAdaptive::nextsteplength [private]
 

Vorhersage des Integrators zur naechsten Schrittlaenge

Definiert in Zeile 65 der Datei RungeKuttaAdaptive.h.

Wird benutzt von integrate().

int RungeKuttaAdaptive::objnumber [private]
 

Objektanzahl

Definiert in Zeile 75 der Datei RungeKuttaAdaptive.h.

double* RungeKuttaAdaptive::radius [private]
 

Radien der Objekte

Definiert in Zeile 45 der Datei RungeKuttaAdaptive.h.

double RungeKuttaAdaptive::t [private]
 

Zeitdauer, fuer die bisher integriert wurde

Definiert in Zeile 50 der Datei RungeKuttaAdaptive.h.


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