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
63 #if 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 );
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;
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;
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"
virtual void setDotTables(const int &flags)
static const int D_VALUE_FLAG
PPolynomial< Degree > baseFunction
PPolynomial< Degree > rightBaseFunction
static const int DOT_FLAG
PPolynomial< Degree-1 > dRightBaseFunction
static const int D_DOT_FLAG
PPolynomial< Degree-1 > dBaseFunction
virtual void clearValueTables(void)
PPolynomial< Degree+1 > * baseFunctions
static const int VALUE_FLAG
Real dDotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
static const int D2_DOT_FLAG
PPolynomial< Degree-1 > dLeftBaseFunction
static int SymmetricIndex(const int &i1, const int &i2)
PPolynomial< Degree > leftBaseFunction
virtual void setValueTables(const int &flags, const double &smooth=0)
void set(const int &maxDepth, const PPolynomial< Degree > &F, const int &normalize, bool useDotRatios=true, bool reflectBoundary=false)
Real d2DotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
Real dotProduct(const double ¢er1, const double &width1, const double ¢er2, const double &width2, int boundary1, int boundary2) const
virtual void clearDotTables(const int &flags)