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
|