00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00031 #ifndef __vtkInitialValueProblemSolver_h
00032 #define __vtkInitialValueProblemSolver_h
00033
00034 #include "vtkObject.h"
00035
00036 class vtkFunctionSet;
00037
00038 class VTK_COMMON_EXPORT vtkInitialValueProblemSolver : public vtkObject
00039 {
00040 public:
00041 vtkTypeMacro(vtkInitialValueProblemSolver,vtkObject);
00042 virtual void PrintSelf(ostream& os, vtkIndent indent);
00043
00045
00059 virtual int ComputeNextStep(double* xprev, double* xnext, double t,
00060 double& delT, double maxError,
00061 double& error)
00062 {
00063 double minStep = delT;
00064 double maxStep = delT;
00065 double delTActual;
00066 return this->ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00067 minStep, maxStep, maxError, error);
00068 }
00069 virtual int ComputeNextStep(double* xprev, double* dxprev, double* xnext,
00070 double t, double& delT, double maxError,
00071 double& error)
00072 {
00073 double minStep = delT;
00074 double maxStep = delT;
00075 double delTActual;
00076 return this->ComputeNextStep(xprev, dxprev, xnext, t, delT, delTActual,
00077 minStep, maxStep, maxError, error);
00078 }
00079 virtual int ComputeNextStep(double* xprev, double* xnext,
00080 double t, double& delT, double& delTActual,
00081 double minStep, double maxStep,
00082 double maxError, double& error)
00083 {
00084 return this->ComputeNextStep(xprev, 0, xnext, t, delT, delTActual,
00085 minStep, maxStep, maxError, error);
00086 }
00087 virtual int ComputeNextStep(double* xprev, double* dxprev, double* xnext,
00088 double t, double& delT, double& delTActual,
00089 double minStep, double maxStep,
00090 double maxError, double& error) = 0;
00092
00094
00095 virtual void SetFunctionSet(vtkFunctionSet* functionset);
00096 vtkGetObjectMacro(FunctionSet,vtkFunctionSet);
00098
00100 virtual int IsAdaptive() { return this->Adaptive; }
00101
00102
00103 enum ErrorCodes
00104 {
00105 OUT_OF_DOMAIN = 1,
00106 NOT_INITIALIZED = 2,
00107 UNEXPECTED_VALUE = 3
00108 };
00109
00110
00111 protected:
00112 vtkInitialValueProblemSolver();
00113 ~vtkInitialValueProblemSolver();
00114
00115 virtual void Initialize();
00116
00117 vtkFunctionSet* FunctionSet;
00118
00119 double* Vals;
00120 double* Derivs;
00121 int Initialized;
00122 int Adaptive;
00123
00124 private:
00125 vtkInitialValueProblemSolver(const vtkInitialValueProblemSolver&);
00126 void operator=(const vtkInitialValueProblemSolver&);
00127 };
00128
00129 #endif
00130
00131
00132
00133