00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _PARAMFUNCTIONINT_H
00034 #define _PARAMFUNCTIONINT_H
00035
00036
00037 #include "ParamObjectInt.h"
00038 #include "BoundaryFunctionInt.h"
00039 #include <boost/shared_ptr.hpp>
00040
00041
00042 namespace Go {
00045
00046
00047
00048 class ParamFunctionInt;
00049 class Param0FunctionInt;
00050 class Param1FunctionInt;
00051 class Param2FunctionInt;
00052
00053
00056
00057 class ParamFunctionInt : public ParamObjectInt {
00058 public:
00060 virtual ~ParamFunctionInt(){};
00061
00064 virtual Param0FunctionInt* getParam0FunctionInt()
00065 { return NULL; }
00066
00069 virtual Param1FunctionInt* getParam1FunctionInt()
00070 { return NULL; }
00071
00074 virtual Param2FunctionInt* getParam2FunctionInt()
00075 { return NULL; }
00076
00086 virtual void subdivide(int pardir, double par,
00087 std::vector<boost::
00088 shared_ptr<ParamFunctionInt> >& subdiv_objs,
00089 std::vector<boost::
00090 shared_ptr<ParamFunctionInt> >& bd_objs) = 0;
00091
00095
00096
00097
00098
00099 virtual bool monotone(Point& dir, double tol=1.0e-15) const = 0;
00100
00103 virtual void
00104 getBoundaryObjects(std::vector<boost::
00105 shared_ptr<BoundaryFunctionInt> >& bd_objs) = 0;
00106
00111 virtual int getMeshSize(int dir) = 0;
00112
00118 virtual double paramFromMesh(int dir, int idx) = 0;
00119
00121 virtual std::vector<double>::iterator getMesh() = 0;
00122
00123 protected:
00124 std::vector<boost::shared_ptr<BoundaryFunctionInt> > boundary_obj_;
00125
00126 };
00127
00128
00130 }
00131
00132
00133 #endif // _PARAMFUNCTIONINT_H
00134
00135