dox/Common/vtkRungeKutta45.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00041
#ifndef __vtkRungeKutta45_h
00042
#define __vtkRungeKutta45_h
00043
00044
#include "vtkInitialValueProblemSolver.h"
00045
00046 class VTK_COMMON_EXPORT vtkRungeKutta45 :
public vtkInitialValueProblemSolver
00047 {
00048
public:
00049 vtkTypeRevisionMacro(vtkRungeKutta45,
vtkInitialValueProblemSolver);
00050
00052
static vtkRungeKutta45 *
New();
00053
00055
00070 virtual int ComputeNextStep(
float* xprev,
float* xnext,
float t,
00071
float& delT,
float maxError,
float& error)
00072 {
00073
float minStep = delT;
00074
float maxStep = delT;
00075
float delTActual;
00076
return this->
ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00077 minStep, maxStep, maxError, error);
00078 }
00079 virtual int ComputeNextStep(
float* xprev,
float* dxprev,
float* xnext,
00080
float t,
float& delT,
00081
float maxError,
float& error)
00082 {
00083
float minStep = delT;
00084
float maxStep = delT;
00085
float delTActual;
00086
return this->
ComputeNextStep(xprev, dxprev, xnext, t, delT, delTActual,
00087 minStep, maxStep, maxError, error);
00088 }
00089 virtual int ComputeNextStep(
float* xprev,
float* xnext,
00090
float t,
float& delT,
float& delTActual,
00091
float minStep,
float maxStep,
00092
float maxError,
float& error)
00093 {
00094
return this->
ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00095 minStep, maxStep, maxError, error);
00096 }
00097
virtual int ComputeNextStep(
float* xprev,
float* dxprev,
float* xnext,
00098
float t,
float& delT,
float& delTActual,
00099
float minStep,
float maxStep,
00100
float maxError,
float& error);
00102
00103
protected:
00104 vtkRungeKutta45();
00105 ~vtkRungeKutta45();
00106
00107
virtual void Initialize();
00108
00109
00110 static double A[5];
00111 static double B[5][5];
00112 static double C[6];
00113 static double DC[6];
00114
00115 float* NextDerivs[6];
00116
00117
int ComputeAStep(
float* xprev,
float* dxprev,
float* xnext,
float t,
00118
float& delT,
float& error);
00119
00120
private:
00121 vtkRungeKutta45(
const vtkRungeKutta45&);
00122
void operator=(
const vtkRungeKutta45&);
00123 };
00124
00125
#endif
00126
00127
00128
00129
00130
00131
00132
00133