00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00046 #ifndef __vtkInitialValueProblemSolver_h
00047 #define __vtkInitialValueProblemSolver_h
00048
00049 #include "vtkObject.h"
00050
00051 class vtkFunctionSet;
00052
00053 class VTK_COMMON_EXPORT vtkInitialValueProblemSolver : public vtkObject
00054 {
00055 public:
00056 vtkTypeRevisionMacro(vtkInitialValueProblemSolver,vtkObject);
00057 virtual void PrintSelf(ostream& os, vtkIndent indent);
00058
00060
00074 virtual int ComputeNextStep(float* xprev, float* xnext, float t,
00075 float& delT, float maxError,
00076 float& error)
00077 {
00078 float minStep = delT;
00079 float maxStep = delT;
00080 float delTActual;
00081 return this->ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00082 minStep, maxStep, maxError, error);
00083 }
00084 virtual int ComputeNextStep(float* xprev, float* dxprev, float* xnext,
00085 float t, float& delT, float maxError,
00086 float& error)
00087 {
00088 float minStep = delT;
00089 float maxStep = delT;
00090 float delTActual;
00091 return this->ComputeNextStep(xprev, dxprev, xnext, t, delT, delTActual,
00092 minStep, maxStep, maxError, error);
00093 }
00094 virtual int ComputeNextStep(float* xprev, float* xnext,
00095 float t, float& delT, float& delTActual,
00096 float minStep, float maxStep,
00097 float maxError, float& error)
00098 {
00099 return this->ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00100 minStep, maxStep, maxError, error);
00101 }
00102 virtual int ComputeNextStep(float* xprev, float* dxprev, float* xnext,
00103 float t, float& delT, float& delTActual,
00104 float minStep, float maxStep,
00105 float maxError, float& error) = 0;
00107
00109
00110 virtual void SetFunctionSet(vtkFunctionSet* functionset);
00111 vtkGetObjectMacro(FunctionSet,vtkFunctionSet);
00113
00115 virtual int IsAdaptive() { return this->Adaptive; }
00116
00117
00118 enum ErrorCodes
00119 {
00120 OUT_OF_DOMAIN = 1,
00121 NOT_INITIALIZED = 2,
00122 UNEXPECTED_VALUE = 3
00123 };
00124
00125
00126 protected:
00127 vtkInitialValueProblemSolver();
00128 ~vtkInitialValueProblemSolver();
00129
00130 virtual void Initialize();
00131
00132 vtkFunctionSet* FunctionSet;
00133
00134 float* Vals;
00135 float* Derivs;
00136 int Initialized;
00137 int Adaptive;
00138
00139 private:
00140 vtkInitialValueProblemSolver(const vtkInitialValueProblemSolver&);
00141 void operator=(const vtkInitialValueProblemSolver&);
00142 };
00143
00144 #endif
00145
00146
00147
00148