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)