00001 #ifndef _MY_GeneralFunctionInterface_ 00002 #define _MY_GeneralFunctionInterface_ 00003 #include "globals.h" 00004 #include "vecdouble.h" 00005 00010 class GeneralFunctionInterface 00011 { 00012 unsigned _domainDim; 00013 unsigned _imageDim; 00014 public: 00015 GeneralFunctionInterface(unsigned domainDim,unsigned imageDim) 00016 :_domainDim(domainDim),_imageDim(imageDim){} 00017 unsigned getDomainDim() const {return _domainDim;} 00018 unsigned getImageDim() const {return _imageDim;} 00019 unsigned n_components() const {return _imageDim;} 00020 virtual double operator() (const VecDouble &p, unsigned int component=0) const=0; 00021 virtual bool isInDomain(const VecDouble &p,unsigned component=0) const; 00022 00023 00024 00025 virtual void setParameters(const VecDouble ¶meters) 00026 { 00027 00028 printf("GeneralFunctionInterface::setParameters(const VecDouble ¶meters [size=%d] ) not overloaded\n",parameters.size()); 00029 assert(0); 00030 00031 } 00032 00033 void plotInLine(VecDouble &p1,VecDouble &p2,unsigned npts,std::ostream &out,unsigned cmp =0); 00034 00035 00036 virtual ~GeneralFunctionInterface(){} 00037 00038 virtual void vector_value(const VecDouble &p, VecDouble& values) const 00039 { 00040 printf("Warning: Invalid Base Method called for point %g-%d\n",p(0),values.size()); 00041 std::cout << "Warning: Invali Base Method called" << std::endl; 00042 assert(0); 00043 } 00044 00045 00046 }; 00047 00048 00049 #endif