VTK  9.7.20260729
vtkMeshQuality.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright 2003-2008 Sandia Corporation
3// SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
82
83#ifndef vtkMeshQuality_h
84#define vtkMeshQuality_h
85
86#include "vtkDataSetAlgorithm.h"
87#include "vtkFiltersVerdictModule.h" // For export macro
88
89#include <functional> // For std::function
90
91VTK_ABI_NAMESPACE_BEGIN
92class vtkCell;
93class vtkDataArray;
94class vtkDoubleArray;
95
96class VTKFILTERSVERDICT_EXPORT vtkMeshQuality : public vtkDataSetAlgorithm
97{
98private:
99 class vtkMeshQualityFunctor;
100
101public:
102 void PrintSelf(ostream& os, vtkIndent indent) override;
105
107
115 vtkBooleanMacro(SaveCellQuality, vtkTypeBool);
117
119
126 vtkSetMacro(LinearApproximation, bool);
127 vtkGetMacro(LinearApproximation, bool);
128 vtkBooleanMacro(LinearApproximation, bool);
130
136 static void ComputeAverageCellSize(vtkDataSet* dataset);
137
233
237 static const char* QualityMeasureNames[];
238
240
248 virtual void SetTriangleQualityMeasure(int measure)
249 {
250 this->SetTriangleQualityMeasure(static_cast<QualityMeasureTypes>(measure));
251 }
313
314
316
329 virtual void SetQuadQualityMeasure(int measure)
330 {
331 this->SetQuadQualityMeasure(static_cast<QualityMeasureTypes>(measure));
332 }
412
413
415
423 virtual void SetTetQualityMeasure(int measure)
424 {
425 this->SetTetQualityMeasure(static_cast<QualityMeasureTypes>(measure));
426 }
506
507
509
515 virtual void SetPyramidQualityMeasure(int measure)
516 {
517 this->SetPyramidQualityMeasure(static_cast<QualityMeasureTypes>(measure));
518 }
540
541
543
550 virtual void SetWedgeQualityMeasure(int measure)
551 {
552 this->SetWedgeQualityMeasure(static_cast<QualityMeasureTypes>(measure));
553 }
596
597
599
608 virtual void SetHexQualityMeasure(int measure)
609 {
610 this->SetHexQualityMeasure(static_cast<QualityMeasureTypes>(measure));
611 }
680
681
687 static double TriangleArea(vtkCell* cell, bool linearApproximation = false);
688
700 static double TriangleAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
701
711 static double TriangleAspectRatio(vtkCell* cell, bool linearApproximation = false);
712
718 static double TriangleCondition(vtkCell* cell, bool linearApproximation = false);
719
726 static double TriangleDistortion(vtkCell* cell, bool linearApproximation = false);
727
737 static double TriangleEdgeRatio(vtkCell* cell, bool linearApproximation = false);
738
744 static double TriangleEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
745
751 static double TriangleMaxAngle(vtkCell* cell, bool linearApproximation = false);
752
758 static double TriangleMinAngle(vtkCell* cell, bool linearApproximation = false);
759
767 static double TriangleNormalizedInradius(vtkCell* cell, bool linearApproximation = false);
768
778 static double TriangleRadiusRatio(vtkCell* cell, bool linearApproximation = false);
779
789 static double TriangleRelativeSizeSquared(vtkCell* cell, bool linearApproximation = false);
790
796 static double TriangleScaledJacobian(vtkCell* cell, bool linearApproximation = false);
797
803 static double TriangleShape(vtkCell* cell, bool linearApproximation = false);
804
814 static double TriangleShapeAndSize(vtkCell* cell, bool linearApproximation = false);
815
822 static double QuadArea(vtkCell* cell, bool linearApproximation = false);
823
833 static double QuadAspectRatio(vtkCell* cell, bool linearApproximation = false);
834
842 static double QuadCondition(vtkCell* cell, bool linearApproximation = false);
843
851 static double QuadDistortion(vtkCell* cell, bool linearApproximation = false);
852
862 static double QuadEdgeRatio(vtkCell* cell, bool linearApproximation = false);
863
869 static double QuadEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
870
878 static double QuadJacobian(vtkCell* cell, bool linearApproximation = false);
879
885 static double QuadMaxAngle(vtkCell* cell, bool linearApproximation = false);
886
898 static double QuadMaxAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
899
905 static double QuadMaxEdgeRatio(vtkCell* cell, bool linearApproximation = false);
906
918 static double QuadMedAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
919
925 static double QuadMinAngle(vtkCell* cell, bool linearApproximation = false);
926
934 static double QuadOddy(vtkCell* cell, bool linearApproximation = false);
935
948 static double QuadRadiusRatio(vtkCell* cell, bool linearApproximation = false);
949
961 static double QuadRelativeSizeSquared(vtkCell* cell, bool linearApproximation = false);
962
970 static double QuadScaledJacobian(vtkCell* cell, bool linearApproximation = false);
971
978 static double QuadShape(vtkCell* cell, bool linearApproximation = false);
979
990 static double QuadShapeAndSize(vtkCell* cell, bool linearApproximation = false);
991
998 static double QuadShear(vtkCell* cell, bool linearApproximation = false);
999
1010 static double QuadShearAndSize(vtkCell* cell, bool linearApproximation = false);
1011
1019 static double QuadSkew(vtkCell* cell, bool linearApproximation = false);
1020
1027 static double QuadStretch(vtkCell* cell, bool linearApproximation = false);
1028
1035 static double QuadTaper(vtkCell* cell, bool linearApproximation = false);
1036
1044 static double QuadWarpage(vtkCell* cell, bool linearApproximation = false);
1045
1058 static double TetAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
1059
1067 static double TetAspectGamma(vtkCell* cell, bool linearApproximation = false);
1068
1078 static double TetAspectRatio(vtkCell* cell, bool linearApproximation = false);
1079
1088 static double TetCollapseRatio(vtkCell* cell, bool linearApproximation = false);
1089
1096 static double TetCondition(vtkCell* cell, bool linearApproximation = false);
1097
1106 static double TetDistortion(vtkCell* cell, bool linearApproximation = false);
1107
1117 static double TetEdgeRatio(vtkCell* cell, bool linearApproximation = false);
1118
1124 static double TetEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
1125
1131 static double TetEquivolumeSkew(vtkCell* cell, bool linearApproximation = false);
1132
1139 static double TetInradius(vtkCell* cell, bool linearApproximation = false);
1140
1147 static double TetJacobian(vtkCell* cell, bool linearApproximation = false);
1148
1156 static double TetMeanRatio(vtkCell* cell, bool linearApproximation = false);
1157
1163 static double TetMinAngle(vtkCell* cell, bool linearApproximation = false);
1164
1172 static double TetNormalizedInradius(vtkCell* cell, bool linearApproximation = false);
1173
1183 static double TetRadiusRatio(vtkCell* cell, bool linearApproximation = false);
1184
1196 static double TetRelativeSizeSquared(vtkCell* cell, bool linearApproximation = false);
1197
1205 static double TetScaledJacobian(vtkCell* cell, bool linearApproximation = false);
1206
1213 static double TetShape(vtkCell* cell, bool linearApproximation = false);
1214
1225 static double TetShapeAndSize(vtkCell* cell, bool linearApproximation = false);
1226
1232 static double TetSquishIndex(vtkCell* cell, bool linearApproximation = false);
1233
1240 static double TetVolume(vtkCell* cell, bool linearApproximation = false);
1241
1247 static double PyramidEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
1248
1255 static double PyramidJacobian(vtkCell* cell, bool linearApproximation = false);
1256
1263 static double PyramidScaledJacobian(vtkCell* cell, bool linearApproximation = false);
1264
1272 static double PyramidShape(vtkCell* cell, bool linearApproximation = false);
1273
1279 static double PyramidVolume(vtkCell* cell, bool linearApproximation = false);
1280
1287 static double WedgeCondition(vtkCell* cell, bool linearApproximation = false);
1288
1295 static double WedgeDistortion(vtkCell* cell, bool linearApproximation = false);
1296
1304 static double WedgeEdgeRatio(vtkCell* cell, bool linearApproximation = false);
1305
1311 static double WedgeEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
1312
1319 static double WedgeJacobian(vtkCell* cell, bool linearApproximation = false);
1320
1327 static double WedgeMaxAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
1328
1336 static double WedgeMaxStretch(vtkCell* cell, bool linearApproximation = false);
1337
1345 static double WedgeMeanAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
1346
1358 static double WedgeScaledJacobian(vtkCell* cell, bool linearApproximation = false);
1359
1367 static double WedgeShape(vtkCell* cell, bool linearApproximation = false);
1368
1374 static double WedgeVolume(vtkCell* cell, bool linearApproximation = false);
1375
1382 static double HexCondition(vtkCell* cell, bool linearApproximation = false);
1383
1390 static double HexDiagonal(vtkCell* cell, bool linearApproximation = false);
1391
1399 static double HexDimension(vtkCell* cell, bool linearApproximation = false);
1400
1408 static double HexDistortion(vtkCell* cell, bool linearApproximation = false);
1409
1419 static double HexEdgeRatio(vtkCell* cell, bool linearApproximation = false);
1420
1426 static double HexEquiangleSkew(vtkCell* cell, bool linearApproximation = false);
1427
1435 static double HexJacobian(vtkCell* cell, bool linearApproximation = false);
1436
1443 static double HexMaxAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
1444
1450 static double HexMaxEdgeRatio(vtkCell* cell, bool linearApproximation = false);
1451
1458 static double HexMedAspectFrobenius(vtkCell* cell, bool linearApproximation = false);
1459
1466 static double HexNodalJacobianRatio(vtkCell* cell, bool linearApproximation = false);
1467
1475 static double HexOddy(vtkCell* cell, bool linearApproximation = false);
1476
1488 static double HexRelativeSizeSquared(vtkCell* cell, bool linearApproximation = false);
1489
1497 static double HexScaledJacobian(vtkCell* cell, bool linearApproximation = false);
1498
1505 static double HexShape(vtkCell* cell, bool linearApproximation = false);
1506
1517 static double HexShapeAndSize(vtkCell* cell, bool linearApproximation = false);
1518
1525 static double HexShear(vtkCell* cell, bool linearApproximation = false);
1526
1536 static double HexShearAndSize(vtkCell* cell, bool linearApproximation = false);
1537
1546 static double HexSkew(vtkCell* cell, bool linearApproximation = false);
1547
1554 static double HexStretch(vtkCell* cell, bool linearApproximation = false);
1555
1562 static double HexTaper(vtkCell* cell, bool linearApproximation = false);
1569 static double HexVolume(vtkCell* cell, bool linearApproximation = false);
1570
1571protected:
1573 ~vtkMeshQuality() override = default;
1574
1576
1585
1586 using CellQualityType = std::function<double(vtkCell*, bool)>;
1600
1601 // Variables used to store the average size (2D: area / 3D: volume)
1602 static double TriangleAverageSize;
1603 static double QuadAverageSize;
1604 static double TetAverageSize;
1605 static double PyramidAverageSize;
1606 static double WedgeAverageSize;
1607 static double HexAverageSize;
1608
1609private:
1610 vtkMeshQuality(const vtkMeshQuality&) = delete;
1611 void operator=(const vtkMeshQuality&) = delete;
1612};
1613
1614VTK_ABI_NAMESPACE_END
1615#endif // vtkMeshQuality_h
abstract class to specify cell behavior
Definition vtkCell.h:130
abstract class to specify dataset behavior
Definition vtkDataSet.h:165
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
static double QuadScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the scaled Jacobian of a quadrilateral.
void SetQuadQualityMeasureToSkew()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
virtual void SetWedgeQualityMeasure(int measure)
Set/Get the particular estimator used to measure the quality of wedges.
void SetHexQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetTetQualityMeasureToEquivolumeSkew()
Set/Get the particular estimator used to measure the quality of tetrahedra.
CellQualityType GetQuadraticHexQualityMeasureFunction() const
virtual void SetTetQualityMeasure(int measure)
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetWedgeQualityMeasureToMeanAspectFrobenius()
Set/Get the particular estimator used to measure the quality of wedges.
static double QuadDistortion(vtkCell *cell, bool linearApproximation=false)
Calculate the distortion of a quadrilateral.
CellQualityType GetHexQualityMeasureFunction() const
void SetTriangleQualityMeasureToArea()
Set/Get the particular estimator used to function the quality of triangles.
CellQualityType GetPyramidQualityMeasureFunction() const
vtkGetEnumMacro(HexQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TetShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shape of a tetrahedron.
static double HexOddy(vtkCell *cell, bool linearApproximation=false)
Calculate the oddy of a hexahedron.
void SetWedgeQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to measure the quality of wedges.
static double TriangleAspectRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the aspect ratio of a triangle.
void SetWedgeQualityMeasureToCondition()
Set/Get the particular estimator used to measure the quality of wedges.
virtual void SetTriangleQualityMeasure(int measure)
Set/Get the particular estimator used to function the quality of triangles.
static double TetScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the scaled Jacobian of a tetrahedron.
void SetPyramidQualityMeasureToVolume()
Set/Get the particular estimator used to measure the quality of pyramids.
static double QuadAspectRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the aspect ratio of a planar quadrilateral.
void SetPyramidQualityMeasureToShape()
Set/Get the particular estimator used to measure the quality of pyramids.
void SetTetQualityMeasureToMinAngle()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetHexQualityMeasureToDistortion()
Set/Get the particular estimator used to measure the quality of hexahedra.
CellQualityType GetTetQualityMeasureFunction() const
virtual void SetPyramidQualityMeasure(int measure)
Set/Get the particular estimator used to measure the quality of pyramids.
static double TriangleRadiusRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the radius ratio of a triangle.
static double TetMeanRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the mean ratio of a tetrahedron.
static double WedgeMaxAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the max aspect Frobenius of a wedge.
static double TetEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the edge ratio of a tetrahedron.
void SetTriangleQualityMeasureToRadiusRatio()
Set/Get the particular estimator used to function the quality of triangles.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
static double TetJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a tetrahedron.
static double WedgeJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a wedge.
static double TetRelativeSizeSquared(vtkCell *cell, bool linearApproximation=false)
Calculate the relative size squared of a tetrahedron.
void SetQuadQualityMeasureToRelativeSizeSquared()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetHexQualityMeasureToDiagonal()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetHexQualityMeasureToMedAspectFrobenius()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetTetQualityMeasureToDistortion()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double HexJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a hexahedron.
void SetWedgeQualityMeasureToJacobian()
Set/Get the particular estimator used to measure the quality of wedges.
static double QuadAverageSize
CellQualityType GetQuadraticQuadQualityMeasureFunction() const
void SetTriangleQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to function the quality of triangles.
void SetTetQualityMeasureToInradius()
Set/Get the particular estimator used to measure the quality of tetrahedra.
QualityMeasureTypes TriangleQualityMeasure
QualityMeasureTypes
Enum which lists the Quality Measures Types.
CellQualityType GetQuadraticTriangleQualityMeasureFunction() const
static double TetAspectRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the aspect ratio of a tetrahedron.
void SetQuadQualityMeasureToMaxAspectFrobenius()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double TetAspectGamma(vtkCell *cell, bool linearApproximation=false)
Calculate the aspect gamma of a tetrahedron.
static double HexStretch(vtkCell *cell, bool linearApproximation=false)
Calculate the stretch of a hexahedron.
void SetHexQualityMeasureToMaxAspectFrobenius()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TriangleCondition(vtkCell *cell, bool linearApproximation=false)
Calculate the condition number of a triangle.
static double QuadShapeAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the shape and size of a quadrilateral.
vtkSetEnumMacro(TriangleQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to function the quality of triangles.
vtkSetEnumMacro(WedgeQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of wedges.
static double TriangleEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a triangle.
void SetHexQualityMeasureToJacobian()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetHexQualityMeasureToShape()
Set/Get the particular estimator used to measure the quality of hexahedra.
vtkGetEnumMacro(WedgeQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of wedges.
void SetQuadQualityMeasureToAspectRatio()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double TriangleDistortion(vtkCell *cell, bool linearApproximation=false)
Calculate the distortion of a triangle.
static double QuadTaper(vtkCell *cell, bool linearApproximation=false)
Calculate the taper of a quadrilateral.
static double TetCollapseRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the collapse ratio of a tetrahedron.
static double TriangleMinAngle(vtkCell *cell, bool linearApproximation=false)
Calculate the minimal (nonoriented) angle of a triangle, expressed in degrees.
static vtkMeshQuality * New()
void SetTriangleQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to function the quality of triangles.
static double QuadSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the skew of a quadrilateral.
virtual void SetQuadQualityMeasure(int measure)
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double HexEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the edge ratio of a hexahedron.
void SetTetQualityMeasureToSquishIndex()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double QuadRadiusRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the radius ratio of a planar quadrilateral.
static double PyramidVolume(vtkCell *cell, bool linearApproximation=false)
Calculate the volume of a pyramid.
static double HexTaper(vtkCell *cell, bool linearApproximation=false)
Calculate the taper of a hexahedron.
void SetQuadQualityMeasureToMaxEdgeRatio()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetHexQualityMeasureToShear()
Set/Get the particular estimator used to measure the quality of hexahedra.
vtkGetEnumMacro(QuadQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double TetSquishIndex(vtkCell *cell, bool linearApproximation=false)
Calculate the squish index of a tetrahedron.
void SetTriangleQualityMeasureToAspectRatio()
Set/Get the particular estimator used to function the quality of triangles.
static double TriangleScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the scaled Jacobian of a triangle.
CellQualityType GetQuadraticTetQualityMeasureFunction() const
void SetHexQualityMeasureToStretch()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TetInradius(vtkCell *cell, bool linearApproximation=false)
Calculate the inradius of a tetrahedron.
static double TetAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the Frobenius condition number of the transformation matrix from a regular tetrahedron to a...
void SetTetQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQuadQualityMeasureToCondition()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
CellQualityType GetTriQuadraticHexQualityMeasureFunction() const
void SetTetQualityMeasureToNormalizedInradius()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double QuadStretch(vtkCell *cell, bool linearApproximation=false)
Calculate the stretch of a quadrilateral.
static double HexMaxAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the maximal Frobenius aspect of the 8 corner tetrahedra of a hexahedron,...
void SetTetQualityMeasureToShape()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double HexEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a hexahedron.
vtkSetEnumMacro(PyramidQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of pyramids.
void SetQuadQualityMeasureToShear()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double QuadMaxAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the maximal Frobenius aspect of the 4 corner triangles of a planar quadrilateral,...
QualityMeasureTypes QuadQualityMeasure
CellQualityType GetTriangleQualityMeasureFunction() const
static double HexSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the skew of a hexahedron.
static double PyramidEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a pyramid.
static double QuadEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the edge ratio of a quadrilateral.
static double HexNodalJacobianRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the nodal Jacobian ratio of a hexahedron.
void SetHexQualityMeasureToCondition()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TetAverageSize
static double HexShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shape of a hexahedron.
static double TetCondition(vtkCell *cell, bool linearApproximation=false)
Calculate the condition number of a tetrahedron.
void SetHexQualityMeasureToDimension()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double WedgeMeanAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the mean aspect Frobenius of a wedge.
void SetTriangleQualityMeasureToNormalizedInradius()
Set/Get the particular estimator used to function the quality of triangles.
static double TriangleRelativeSizeSquared(vtkCell *cell, bool linearApproximation=false)
Calculate the square of the relative size of a triangle.
static double WedgeDistortion(vtkCell *cell, bool linearApproximation=false)
Calculate the distortion of a wedge.
QualityMeasureTypes TetQualityMeasure
void SetTetQualityMeasureToVolume()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double QuadMinAngle(vtkCell *cell, bool linearApproximation=false)
Calculate the minimal (nonoriented) angle of a quadrilateral, expressed in degrees.
static double QuadRelativeSizeSquared(vtkCell *cell, bool linearApproximation=false)
Calculate the relative size squared of a quadrilateral.
void SetQuadQualityMeasureToTaper()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetWedgeQualityMeasureToVolume()
Set/Get the particular estimator used to measure the quality of wedges.
void SetTetQualityMeasureToAspectRatio()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetTriangleQualityMeasureToRelativeSizeSquared()
Set/Get the particular estimator used to function the quality of triangles.
static double QuadShear(vtkCell *cell, bool linearApproximation=false)
Calculate the shear of a quadrilateral.
void SetHexQualityMeasureToRelativeSizeSquared()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double PyramidJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a pyramid.
void SetQuadQualityMeasureToEdgeRatio()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetPyramidQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to measure the quality of pyramids.
void SetQuadQualityMeasureToRadiusRatio()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetQuadQualityMeasureToShapeAndSize()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double HexCondition(vtkCell *cell, bool linearApproximation=false)
Calculate the condition of a hexahedron.
void SetHexQualityMeasureToSkew()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetQuadQualityMeasureToShearAndSize()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double HexAverageSize
static double HexShapeAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the shape and size of a hexahedron.
static double HexRelativeSizeSquared(vtkCell *cell, bool linearApproximation=false)
Calculate the relative size squared of a hexahedron.
static double WedgeVolume(vtkCell *cell, bool linearApproximation=false)
Calculate the volume of a wedge.
vtkGetEnumMacro(TetQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQuadQualityMeasureToJacobian()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetHexQualityMeasureToMaxEdgeRatio()
Set/Get the particular estimator used to measure the quality of hexahedra.
CellQualityType GetBiQuadraticQuadQualityMeasureFunction() const
static double HexShearAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the shear and size of a hexahedron.
void SetQuadQualityMeasureToMedAspectFrobenius()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
vtkGetEnumMacro(PyramidQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of pyramids.
CellQualityType GetBiQuadraticTriangleQualityMeasureFunction() const
static double TetDistortion(vtkCell *cell, bool linearApproximation=false)
Calculate the distortion of a tetrahedron.
void SetWedgeQualityMeasureToEdgeRatio()
Set/Get the particular estimator used to measure the quality of wedges.
void SetTriangleQualityMeasureToCondition()
Set/Get the particular estimator used to function the quality of triangles.
void SetWedgeQualityMeasureToShape()
Set/Get the particular estimator used to measure the quality of wedges.
void SetTetQualityMeasureToMeanRatio()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetWedgeQualityMeasureToMaxStretch()
Set/Get the particular estimator used to measure the quality of wedges.
~vtkMeshQuality() override=default
void SetTetQualityMeasureToAspectFrobenius()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double TriangleShapeAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the product of shape and relative size of a triangle.
static double WedgeShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shape of a wedge.
void SetHexQualityMeasureToTaper()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetTriangleQualityMeasureToShapeAndSize()
Set/Get the particular estimator used to function the quality of triangles.
void SetQuadQualityMeasureToShape()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double TriangleArea(vtkCell *cell, bool linearApproximation=false)
Calculate the area of a triangle.
CellQualityType GetWedgeQualityMeasureFunction() const
QualityMeasureTypes HexQualityMeasure
static double HexDistortion(vtkCell *cell, bool linearApproximation=false)
Calculate the distortion of a hexahedron.
void SetHexQualityMeasureToNodalJacobianRatio()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TriangleNormalizedInradius(vtkCell *cell, bool linearApproximation=false)
Calculate the normalized in-radius of a triangle.
static double WedgeEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a wedge.
static double TriangleMaxAngle(vtkCell *cell, bool linearApproximation=false)
Calculate the maximal (nonoriented) angle of a triangle, expressed in degrees.
void SetWedgeQualityMeasureToDistortion()
Set/Get the particular estimator used to measure the quality of wedges.
void SetTriangleQualityMeasureToAspectFrobenius()
Set/Get the particular estimator used to function the quality of triangles.
void SetQuadQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetHexQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to measure the quality of hexahedra.
static void ComputeAverageCellSize(vtkDataSet *dataset)
Compute the average cell size for each cell type in the mesh, and store it in field data arrays (TriA...
void SetTetQualityMeasureToRelativeSizeSquared()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetHexQualityMeasureToShearAndSize()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TetRadiusRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the radius ratio of a tetrahedron.
vtkTypeBool SaveCellQuality
void SetHexQualityMeasureToShapeAndSize()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double TetEquivolumeSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equivolume skew of a tetrahedron.
void SetQuadQualityMeasureToArea()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetQuadQualityMeasureToWarpage()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double TriangleAverageSize
static double QuadWarpage(vtkCell *cell, bool linearApproximation=false)
Calculate the warpage of a quadrilateral.
void SetTetQualityMeasureToCollapseRatio()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetTriangleQualityMeasureToMaxAngle()
Set/Get the particular estimator used to function the quality of triangles.
static double TetEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a tetrahedron.
void SetQuadQualityMeasureToMaxAngle()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double WedgeMaxStretch(vtkCell *cell, bool linearApproximation=false)
Calculate the max stretch of a wedge.
static const char * QualityMeasureNames[]
Array which lists the Quality Measures Names.
static double PyramidShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shape of a pyramid.
static double TetVolume(vtkCell *cell, bool linearApproximation=false)
Calculate the volume of a tetrahedron.
void SetTetQualityMeasureToJacobian()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double TriangleAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the Frobenius condition number of the transformation matrix from an equilateral triangle to...
vtkSetEnumMacro(TetQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double QuadOddy(vtkCell *cell, bool linearApproximation=false)
Calculate the oddy of a quadrilateral.
static double WedgeScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the scaled Jacobian a wedge.
void SetTetQualityMeasureToRadiusRatio()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double QuadMedAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the average Frobenius aspect of the 4 corner triangles of a planar quadrilateral,...
void SetHexQualityMeasureToOddy()
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetTetQualityMeasureToShapeAndSize()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetHexQualityMeasureToVolume()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double WedgeEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the edge ratio of a wedge.
static double TriangleShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shape of a triangle.
static double HexShear(vtkCell *cell, bool linearApproximation=false)
Calculate the shear of a hexahedron.
static double PyramidAverageSize
void SetWedgeQualityMeasureToMaxAspectFrobenius()
Set/Get the particular estimator used to measure the quality of wedges.
static double HexScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the scaled Jacobian of a hexahedron.
static double QuadMaxAngle(vtkCell *cell, bool linearApproximation=false)
Calculate the maximum (nonoriented) angle of a quadrilateral, expressed in degrees.
void SetPyramidQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to measure the quality of pyramids.
static double TriangleEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the edge ratio of a triangle.
void SetTetQualityMeasureToCondition()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQuadQualityMeasureToOddy()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
void SetTetQualityMeasureToEdgeRatio()
Set/Get the particular estimator used to measure the quality of tetrahedra.
static double HexMaxEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the maximum edge ratio of a hexahedron at its center.
static double QuadShape(vtkCell *cell, bool linearApproximation=false)
Calculate the shear of a quadrilateral.
static double TetNormalizedInradius(vtkCell *cell, bool linearApproximation=false)
Calculate the normalized in-radius of a tetrahedron.
QualityMeasureTypes PyramidQualityMeasure
static double HexDimension(vtkCell *cell, bool linearApproximation=false)
Calculate the dimension of a hexahedron.
static double QuadShearAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the shear and size of a quadrilateral.
void SetHexQualityMeasureToEdgeRatio()
Set/Get the particular estimator used to measure the quality of hexahedra.
static double QuadEquiangleSkew(vtkCell *cell, bool linearApproximation=false)
Calculate the equiangle skew of a quadrilateral.
void SetTetQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQuadQualityMeasureToMinAngle()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
vtkSetEnumMacro(QuadQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of quadrilaterals.
vtkSetEnumMacro(HexQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetTriangleQualityMeasureToShape()
Set/Get the particular estimator used to function the quality of triangles.
void SetTriangleQualityMeasureToEdgeRatio()
Set/Get the particular estimator used to function the quality of triangles.
static double QuadArea(vtkCell *cell, bool linearApproximation=false)
Calculate the area of a quadrilateral.
static double QuadMaxEdgeRatio(vtkCell *cell, bool linearApproximation=false)
Calculate the maximum edge length ratio of a quadrilateral at quad center.
std::function< double(vtkCell *, bool)> CellQualityType
static double QuadCondition(vtkCell *cell, bool linearApproximation=false)
Calculate the condition number of a quadrilateral.
vtkGetEnumMacro(TriangleQualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to function the quality of triangles.
void SetTetQualityMeasureToAspectGamma()
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQuadQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double PyramidScaledJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a pyramid.
virtual void SetHexQualityMeasure(int measure)
Set/Get the particular estimator used to measure the quality of hexahedra.
static double HexMedAspectFrobenius(vtkCell *cell, bool linearApproximation=false)
Calculate the average Frobenius aspect of the 8 corner tetrahedra of a hexahedron,...
CellQualityType GetQuadQualityMeasureFunction() const
void SetTriangleQualityMeasureToDistortion()
Set/Get the particular estimator used to function the quality of triangles.
void SetTriangleQualityMeasureToMinAngle()
Set/Get the particular estimator used to function the quality of triangles.
void SetQuadQualityMeasureToStretch()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double WedgeCondition(vtkCell *cell, bool linearApproximation=false)
Calculate the condition number of a wedge.
static double WedgeAverageSize
static double HexDiagonal(vtkCell *cell, bool linearApproximation=false)
Calculate the diagonal of a hexahedron.
void SetWedgeQualityMeasureToEquiangleSkew()
Set/Get the particular estimator used to measure the quality of wedges.
QualityMeasureTypes WedgeQualityMeasure
static double TetMinAngle(vtkCell *cell, bool linearApproximation=false)
Calculate the minimal (nonoriented) dihedral angle of a tetrahedron, expressed in degrees.
void SetPyramidQualityMeasureToJacobian()
Set/Get the particular estimator used to measure the quality of pyramids.
void SetQuadQualityMeasureToDistortion()
Set/Get the particular estimator used to measure the quality of quadrilaterals.
static double HexVolume(vtkCell *cell, bool linearApproximation=false)
Calculate the volume of a hexahedron.
static double TetShapeAndSize(vtkCell *cell, bool linearApproximation=false)
Calculate the shape and size of a tetrahedron.
static double QuadJacobian(vtkCell *cell, bool linearApproximation=false)
Calculate the Jacobian of a quadrilateral.
int vtkTypeBool
Definition vtkABI.h:64
#define vtkDataArray