VTK  9.3.1
vtkLagrangeInterpolation.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 // .NAME vtkLagrangeInterpolation
4 // .SECTION Description
5 // .SECTION See Also
6 #ifndef vtkLagrangeInterpolation_h
7 #define vtkLagrangeInterpolation_h
8 
9 #include "vtkCommonDataModelModule.h" // For export macro.
11 #include "vtkSmartPointer.h" // For API.
12 
13 #include <vector> // For scratch storage.
14 
15 // Define this to include support for a "complete" (21- vs 18-point) wedge.
16 #define VTK_21_POINT_WEDGE true
17 
18 VTK_ABI_NAMESPACE_BEGIN
19 class vtkPoints;
20 class vtkVector2i;
21 class vtkVector3d;
22 
23 class VTKCOMMONDATAMODEL_EXPORT vtkLagrangeInterpolation : public vtkHigherOrderInterpolation
24 {
25 public:
26  static vtkLagrangeInterpolation* New();
27  void PrintSelf(ostream& os, vtkIndent indent) override;
29 
30  static void EvaluateShapeFunctions(int order, double pcoord, double* shape);
31  static void EvaluateShapeAndGradient(int order, double pcoord, double* shape, double* grad);
32 
33  static int Tensor1ShapeFunctions(const int order[1], const double* pcoords, double* shape);
34  static int Tensor1ShapeDerivatives(const int order[1], const double* pcoords, double* derivs);
35 
36  static int Tensor2ShapeFunctions(const int order[2], const double* pcoords, double* shape);
37  static int Tensor2ShapeDerivatives(const int order[2], const double* pcoords, double* derivs);
38 
39  static int Tensor3ShapeFunctions(const int order[3], const double* pcoords, double* shape);
40  static int Tensor3ShapeDerivatives(const int order[3], const double* pcoords, double* derivs);
41 
42  void Tensor3EvaluateDerivative(const int order[3], const double* pcoords, vtkPoints* points,
43  const double* fieldVals, int fieldDim, double* fieldDerivs) override;
44 
45  static void WedgeShapeFunctions(
46  const int order[3], vtkIdType numberOfPoints, const double* pcoords, double* shape);
47  static void WedgeShapeDerivatives(
48  const int order[3], vtkIdType numberOfPoints, const double* pcoords, double* derivs);
49 
50  void WedgeEvaluate(const int order[3], vtkIdType numberOfPoints, const double* pcoords,
51  double* fieldVals, int fieldDim, double* fieldAtPCoords) override;
52 
53  void WedgeEvaluateDerivative(const int order[3], const double* pcoords, vtkPoints* points,
54  const double* fieldVals, int fieldDim, double* fieldDerivs) override;
55 
56 protected:
58  ~vtkLagrangeInterpolation() override;
59 
60 private:
62  void operator=(const vtkLagrangeInterpolation&) = delete;
63 };
64 
65 VTK_ABI_NAMESPACE_END
66 #endif // vtkLagrangeInterpolation_h
int vtkIdType
Definition: vtkType.h:315
static int Tensor3ShapeDerivatives(const int order[3], const double *pcoords, double *derivs, void(*function_evaluate_shape_and_gradient)(int, double, double *, double *))
virtual void WedgeEvaluate(const int order[3], vtkIdType numberOfPoints, const double *pcoords, double *fieldVals, int fieldDim, double *fieldAtPCoords)=0
static int Tensor3ShapeFunctions(const int order[3], const double *pcoords, double *shape, void(*function_evaluate_shape_functions)(int, double, double *))
a simple class to control print indentation
Definition: vtkIndent.h:28
virtual void WedgeEvaluateDerivative(const int order[3], const double *pcoords, vtkPoints *points, const double *fieldVals, int fieldDim, double *fieldDerivs)=0
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:440
static int Tensor2ShapeFunctions(const int order[2], const double *pcoords, double *shape, void(*function_evaluate_shape_functions)(int, double, double *))
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static int Tensor2ShapeDerivatives(const int order[2], const double *pcoords, double *derivs, void(*function_evaluate_shape_and_gradient)(int, double, double *, double *))
virtual void Tensor3EvaluateDerivative(const int order[3], const double *pcoords, vtkPoints *points, const double *fieldVals, int fieldDim, double *fieldDerivs)=0
static int Tensor1ShapeDerivatives(const int order[1], const double *pcoords, double *derivs, void(*function_evaluate_shape_and_gradient)(int, double, double *, double *))
static void WedgeShapeDerivatives(const int order[3], vtkIdType numberOfPoints, const double *pcoords, double *derivs, vtkHigherOrderTriangle &tri, void(*function_evaluate_shape_and_gradient)(int, double, double *, double *))
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
static void WedgeShapeFunctions(const int order[3], vtkIdType numberOfPoints, const double *pcoords, double *shape, vtkHigherOrderTriangle &tri, void(*function_evaluate_shape_functions)(int, double, double *))
static int Tensor1ShapeFunctions(const int order[1], const double *pcoords, double *shape, void(*function_evaluate_shape_functions)(int, double, double *))
represent and manipulate 3D points
Definition: vtkPoints.h:28