File: vtkIntegrationStrategy.h

package info (click to toggle)
vtk9 9.5.2%2Bdfsg3-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 205,916 kB
  • sloc: cpp: 2,336,565; ansic: 327,116; python: 111,200; yacc: 4,104; java: 3,977; sh: 3,032; xml: 2,771; perl: 2,189; lex: 1,787; makefile: 178; javascript: 165; objc: 153; tcl: 59
file content (149 lines) | stat: -rw-r--r-- 7,170 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
 * @class   vtkIntegrationStrategy
 * @brief   abstract class to define an integration strategy for vtkIntegrateAttributes
 *
 * Parent class for the integration strategies. It defines a pure virtual methods
 * to integrate over each handled cell type.
 */

#ifndef vtkIntegrationStrategy_h
#define vtkIntegrationStrategy_h

#include "vtkFiltersParallelModule.h" // For export macro
#include "vtkObject.h"

VTK_ABI_NAMESPACE_BEGIN
class vtkDataSet;
class vtkDataSetAttributes;
class vtkGenericCell;
class vtkIdList;
class vtkIntegrateAttributesFieldList;
class vtkUnstructuredGrid;

class VTKFILTERSPARALLEL_EXPORT vtkIntegrationStrategy : public vtkObject
{
public:
  void PrintSelf(ostream& os, vtkIndent indent) override;
  vtkTypeMacro(vtkIntegrationStrategy, vtkObject);

  ///@{
  /**
   * Function to integrate the specified cell type
   */
  virtual void IntegratePolyLine(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType numPts, const vtkIdType* cellPtIds, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegratePolygon(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType numPts, const vtkIdType* cellPtIds, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateTriangleStrip(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegrateTriangle(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType pt1Id, vtkIdType pt2Id, vtkIdType pt3Id, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateQuad(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType pt1Id, vtkIdType pt2Id, vtkIdType pt3Id, vtkIdType pt4Id, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegrateTetrahedron(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkIdType cellId, vtkIdType pt1Id, vtkIdType pt2Id, vtkIdType pt3Id, vtkIdType pt4Id,
    double& sum, double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegratePixel(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType numPts, const vtkIdType* cellPtIds, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateVoxel(vtkDataSet* input, vtkUnstructuredGrid* output, vtkIdType cellId,
    vtkIdType numPts, const vtkIdType* cellPtIds, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateHexahedron(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkGenericCell* cell, vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds,
    vtkIdList* cellPtIdsList, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateWedge(vtkDataSet* input, vtkUnstructuredGrid* output, vtkGenericCell* cell,
    vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds, vtkIdList* cellPtIdsList,
    double& sum, double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegratePyramid(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkGenericCell* cell, vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds,
    vtkIdList* cellPtIdsList, double& sum, double sumCenter[3],
    vtkIntegrateAttributesFieldList& cellFieldList, vtkIntegrateAttributesFieldList& pointFieldList,
    int index) = 0;

  virtual void IntegrateGeneral1DCell(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegrateGeneral2DCell(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegrateGeneral3DCell(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkIdType cellId, vtkIdType numPts, const vtkIdType* cellPtIds, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;

  virtual void IntegrateDefault(vtkDataSet* input, vtkUnstructuredGrid* output,
    vtkGenericCell* cell, vtkIdType cellId, vtkIdType numPts, vtkIdList* cellPtIds, double& sum,
    double sumCenter[3], vtkIntegrateAttributesFieldList& cellFieldList,
    vtkIntegrateAttributesFieldList& pointFieldList, int index) = 0;
  ///@}

  ///@{
  /**
   * Integrates on data arrays depending on the number of node of the shape
   */
  virtual void IntegrateData1(vtkDataSetAttributes* inda, vtkDataSetAttributes* outda,
    vtkIdType pt1Id, double k, vtkIntegrateAttributesFieldList& fieldlist, int fieldlist_index) = 0;

  virtual void IntegrateData2(vtkDataSetAttributes* inda, vtkDataSetAttributes* outda,
    vtkIdType pt1Id, vtkIdType pt2Id, double k, vtkIntegrateAttributesFieldList& fieldlist,
    int fieldlist_index) = 0;

  virtual void IntegrateData3(vtkDataSetAttributes* inda, vtkDataSetAttributes* outda,
    vtkIdType pt1Id, vtkIdType pt2Id, vtkIdType pt3Id, double k,
    vtkIntegrateAttributesFieldList& fieldlist, int fieldlist_index) = 0;

  virtual void IntegrateData4(vtkDataSetAttributes* inda, vtkDataSetAttributes* outda,
    vtkIdType pt1Id, vtkIdType pt2Id, vtkIdType pt3Id, vtkIdType pt4Id, double k,
    vtkIntegrateAttributesFieldList& fieldlist, int fieldlist_index) = 0;
  ///@}

  /**
   * Setup necessary precomputations
   * Here does nothing, can be overriden if needed
   */
  virtual void Initialize(vtkDataSet* input);

protected:
  vtkIntegrationStrategy() = default;
  ~vtkIntegrationStrategy() override = default;

private:
  vtkIntegrationStrategy(const vtkIntegrationStrategy&) = delete;
  void operator=(const vtkIntegrationStrategy&) = delete;
};

VTK_ABI_NAMESPACE_END
#endif