29 #ifndef FUNCTION_DATA_INCLUDED
30 #define FUNCTION_DATA_INCLUDED
32 #define BOUNDARY_CONDITIONS 1
35 # pragma GCC system_header
39 #include "ppolynomial.h"
46 template<
int Degree,
class Real>
50 #if BOUNDARY_CONDITIONS
52 #endif // BOUNDARY_CONDITIONS
63 #if BOUNDARY_CONDITIONS
66 #else // !BOUNDARY_CONDITIONS
69 #endif // BOUNDARY_CONDITIONS
78 virtual void setValueTables(
const int& flags,
const double& smooth=0);
79 virtual void setValueTables(
const int& flags,
const double& valueSmooth,
const double& normalSmooth);
96 #if BOUNDARY_CONDITIONS
97 void set(
const int& maxDepth ,
const PPolynomial<Degree>& F ,
const int& normalize ,
bool useDotRatios=
true ,
bool reflectBoundary=
false );
98 #else // !BOUNDARY_CONDITIONS
100 #endif // BOUNDARY_CONDITIONS
102 #if BOUNDARY_CONDITIONS
103 Real dotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 ,
int boundary1 ,
int boundary2 )
const;
104 Real dDotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 ,
int boundary1 ,
int boundary2 )
const;
105 Real d2DotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 ,
int boundary1 ,
int boundary2 )
const;
106 #else // !BOUNDARY_CONDITIONS
107 Real dotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 )
const;
108 Real dDotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 )
const;
109 Real d2DotProduct(
const double& center1 ,
const double& width1 ,
const double& center2 ,
const double& width2 )
const;
110 #endif // BOUNDARY_CONDITIONS
112 static inline int SymmetricIndex(
const int& i1 ,
const int& i2 );
113 static inline int SymmetricIndex(
const int& i1 ,
const int& i2 ,
int& index );
121 #include "function_data.hpp"
123 #endif // FUNCTION_DATA_INCLUDED
static const int D2_DOT_FLAG
static const int D_DOT_FLAG
static int SymmetricIndex(const int &i1, const int &i2)
virtual void clearValueTables(void)
Real dotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
PPolynomial< Degree > baseFunction
static const int DOT_FLAG
virtual void setDotTables(const int &flags)
PPolynomial< Degree-1 > dLeftBaseFunction
virtual void setValueTables(const int &flags, const double &smooth=0)
static const int D_VALUE_FLAG
PPolynomial< Degree+1 > * baseFunctions
PPolynomial< Degree > rightBaseFunction
virtual void clearDotTables(const int &flags)
static const int VALUE_FLAG
PPolynomial< Degree > leftBaseFunction
Real dDotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
PPolynomial< Degree-1 > dRightBaseFunction
Real d2DotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
void set(const int &maxDepth, const PPolynomial< Degree > &F, const int &normalize, bool useDotRatios=true, bool reflectBoundary=false)
PPolynomial< Degree-1 > dBaseFunction