00001 #ifndef __ORTHOG_BASIS_FUNC_EXPANSION_H__
00002 #define __ORTHOG_BASIS_FUNC_EXPANSION_H__
00003
00004 #include "parametermap.h"
00005 #include "func_expansion1d.h"
00006
00007 class COrthogonalFuncExpansion1d: public CBasisFunctionExpansion1d {
00008 public:
00009
00010
00011 COrthogonalFuncExpansion1d(int _l=0, int _m=0, bool r=true, int N=1, double _xmin=0., double _xmax=1.0):
00012 CBasisFunctionExpansion1d( _l, _m, r, N, _xmin, _xmax ){}
00013 COrthogonalFuncExpansion1d(const COrthogonalFuncExpansion1d& h):
00014 CBasisFunctionExpansion1d( h ){}
00015
00016
00017 virtual ~COrthogonalFuncExpansion1d( void ){}
00018
00019
00020 bool Read(const parameterMap& m){return CBasisFunctionExpansion1d::Read(m);}
00021 bool Write(parameterMap& m){return CBasisFunctionExpansion1d::Write(m);}
00022
00023
00024 double basisFunction(double x, int i, int jderiv=0) const;
00025 double basisFunctionInverse(double x, int i) const {return basisFunction(x,i);}
00026 double basisFunctionInverse(double x, int i)
00027 {return const_cast<const COrthogonalFuncExpansion1d*>(this)->basisFunctionInverse(x,i);}
00028
00029
00030 virtual double orthogFunctionValue(double x, int i, int jderiv=0) const=0;
00031 virtual double weightFunction(double x, int jderiv=0) const{if (jderiv==0) return 1.0; else return 0.0;}
00032 virtual double normalization(int j) const{return 1.0;}
00033 virtual double rangeRemap(double x) const{return x/xScale()-xShift();}
00034 virtual double xScale(void) const{return 1.0;}
00035 virtual double xShift(void) const{return 0.0;}
00036
00037
00038 virtual void CopyState(const COrthogonalFuncExpansion1d& a)
00039 {CBasisFunctionExpansion1d::CopyState(a);}
00040
00041
00042 virtual double getLeftSupport(int i) const=0;
00043 virtual double getRightSupport(int i) const=0;
00044
00045
00046 bool setDim(int __ndata);
00047
00048 };
00049
00050 #endif