18 #ifndef vtkHigherOrderInterpolation_h 
   19 #define vtkHigherOrderInterpolation_h 
   21 #include "vtkCommonDataModelModule.h"  
   28 #define VTK_21_POINT_WEDGE true 
   42   static int Tensor1ShapeFunctions(
const int order[1], 
const double* pcoords, 
double* shape,
 
   43     void (*function_evaluate_shape_functions)(
int, 
double, 
double*));
 
   44   static int Tensor1ShapeDerivatives(
const int order[1], 
const double* pcoords, 
double* derivs,
 
   45     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   47   static int Tensor2ShapeFunctions(
const int order[2], 
const double* pcoords, 
double* shape,
 
   48     void (*function_evaluate_shape_functions)(
int, 
double, 
double*));
 
   49   static int Tensor2ShapeDerivatives(
const int order[2], 
const double* pcoords, 
double* derivs,
 
   50     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   52   static int Tensor3ShapeFunctions(
const int order[3], 
const double* pcoords, 
double* shape,
 
   53     void (*function_evaluate_shape_functions)(
int, 
double, 
double*));
 
   54   static int Tensor3ShapeDerivatives(
const int order[3], 
const double* pcoords, 
double* derivs,
 
   55     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   57   virtual void Tensor3EvaluateDerivative(
const int order[3], 
const double* pcoords,
 
   58     vtkPoints* 
points, 
const double* fieldVals, 
int fieldDim, 
double* fieldDerivs) = 0;
 
   61     const double* fieldVals, 
int fieldDim, 
double* fieldDerivs,
 
   62     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   64   static void WedgeShapeFunctions(
const int order[3], 
const vtkIdType numberOfPoints,
 
   66     void (*function_evaluate_shape_functions)(
int, 
double, 
double*));
 
   67   static void WedgeShapeDerivatives(
const int order[3], 
const vtkIdType numberOfPoints,
 
   69     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   75   int JacobianInverse(
vtkPoints* 
points, 
const double* derivs, 
double** inverse);
 
   76   int JacobianInverseWedge(
vtkPoints* 
points, 
const double* derivs, 
double** inverse);
 
   78   virtual void WedgeEvaluate(
const int order[3], 
const vtkIdType numberOfPoints,
 
   79     const double* pcoords, 
double* fieldVals, 
int fieldDim, 
double* fieldAtPCoords) = 0;
 
   81   void WedgeEvaluate(
const int order[3], 
const vtkIdType numberOfPoints, 
const double* pcoords,
 
   83     void (*function_evaluate_shape_functions)(
int, 
double, 
double*));
 
   85   virtual void WedgeEvaluateDerivative(
const int order[3], 
const double* pcoords, 
vtkPoints* 
points,
 
   86     const double* fieldVals, 
int fieldDim, 
double* fieldDerivs) = 0;
 
   90     void (*function_evaluate_shape_and_gradient)(
int, 
double, 
double*, 
double*));
 
   92   static vtkVector3d GetParametricHexCoordinates(
int vertexId);
 
   93   static vtkVector2i GetPointIndicesBoundingHexEdge(
int edgeId);
 
   94   static int GetVaryingParameterOfHexEdge(
int edgeId);
 
   95   static vtkVector2i GetFixedParametersOfHexEdge(
int edgeId);
 
   97   static const int* GetPointIndicesBoundingHexFace(
int faceId) 
VTK_SIZEHINT(4);
 
   98   static const int* GetEdgeIndicesBoundingHexFace(
int faceId) 
VTK_SIZEHINT(4);
 
   99   static vtkVector2i GetVaryingParametersOfHexFace(
int faceId);
 
  100   static int GetFixedParameterOfHexFace(
int faceId);
 
  102   static vtkVector3d GetParametricWedgeCoordinates(
int vertexId);
 
  103   static vtkVector2i GetPointIndicesBoundingWedgeEdge(
int edgeId);
 
  104   static int GetVaryingParameterOfWedgeEdge(
int edgeId);
 
  105   static vtkVector2i GetFixedParametersOfWedgeEdge(
int edgeId);
 
  107   static const int* GetPointIndicesBoundingWedgeFace(
int faceId) 
VTK_SIZEHINT(4);
 
  108   static const int* GetEdgeIndicesBoundingWedgeFace(
int faceId) 
VTK_SIZEHINT(4);
 
  109   static vtkVector2i GetVaryingParametersOfWedgeFace(
int faceId);
 
  110   static int GetFixedParameterOfWedgeFace(
int faceId);
 
  113   static void AppendQuadrilateralCollocationPoints(
 
  115   static void AppendHexahedronCollocationPoints(
 
  120   static int NumberOfIntervals(
const int order[N]);
 
  126   void PrepareForOrder(
const int order[3], 
const vtkIdType numberOfPoints);
 
  140   for (
int n = 0; n < N; ++n)
 
  147 #endif // vtkHigherOrderInterpolation_h