00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00032 #ifndef __vtkRungeKutta2_h
00033 #define __vtkRungeKutta2_h
00034
00035 #include "vtkInitialValueProblemSolver.h"
00036
00037 class VTK_COMMON_EXPORT vtkRungeKutta2 : public vtkInitialValueProblemSolver
00038 {
00039 public:
00040 vtkTypeRevisionMacro(vtkRungeKutta2,vtkInitialValueProblemSolver);
00041
00043 static vtkRungeKutta2 *New();
00044
00046
00052 virtual int ComputeNextStep(float* xprev, float* xnext, float t,
00053 float& delT, float maxError, float& error)
00054 {
00055 float minStep = delT;
00056 float maxStep = delT;
00057 float delTActual;
00058 return this->ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00059 minStep, maxStep, maxError, error);
00060 }
00061 virtual int ComputeNextStep(float* xprev, float* dxprev, float* xnext,
00062 float t, float& delT,
00063 float maxError, float& error)
00064 {
00065 float minStep = delT;
00066 float maxStep = delT;
00067 float delTActual;
00068 return this->ComputeNextStep(xprev, dxprev, xnext, t, delT, delTActual,
00069 minStep, maxStep, maxError, error);
00070 }
00071 virtual int ComputeNextStep(float* xprev, float* xnext,
00072 float t, float& delT, float& delTActual,
00073 float minStep, float maxStep,
00074 float maxError, float& error)
00075 {
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, float& delTActual,
00081 float minStep, float maxStep,
00082 float maxError, float& error);
00084
00085 protected:
00086 vtkRungeKutta2();
00087 ~vtkRungeKutta2();
00088 private:
00089 vtkRungeKutta2(const vtkRungeKutta2&);
00090 void operator=(const vtkRungeKutta2&);
00091 };
00092
00093 #endif
00094
00095
00096
00097
00098
00099
00100
00101