VMTK
vtkvmtkLinearToQuadraticMeshFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: VMTK
4 Module: $RCSfile: vtkvmtkLinearToQuadraticMeshFilter.h,v $
5 Language: C++
6 
7  Copyright (c) Luca Antiga, David Steinman. All rights reserved.
8  See LICENSE file for details.
9 
10  Portions of this code are covered under the VTK copyright.
11  See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm
12  for details.
13 
14  This software is distributed WITHOUT ANY WARRANTY; without even
15  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16  PURPOSE. See the above copyright notices for more information.
17 
18 =========================================================================*/
28 #ifndef __vtkvmtkLinearToQuadraticMeshFilter_h
29 #define __vtkvmtkLinearToQuadraticMeshFilter_h
30 
31 #include "vtkUnstructuredGridAlgorithm.h"
32 #include "vtkPolyData.h"
33 #include "vtkCell.h"
34 #include "vtkvmtkWin32Header.h"
35 
36 class VTK_VMTK_MISC_EXPORT vtkvmtkLinearToQuadraticMeshFilter : public vtkUnstructuredGridAlgorithm
37 {
38  public:
39  vtkTypeMacro(vtkvmtkLinearToQuadraticMeshFilter,vtkUnstructuredGridAlgorithm);
40  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
41 
43 
44  vtkSetMacro(UseBiquadraticWedge,int);
45  vtkGetMacro(UseBiquadraticWedge,int);
46  vtkBooleanMacro(UseBiquadraticWedge,int);
47 
48  vtkSetMacro(NumberOfNodesHexahedra,int);
49  vtkGetMacro(NumberOfNodesHexahedra,int);
50 
51  vtkSetObjectMacro(ReferenceSurface,vtkPolyData);
52  vtkGetObjectMacro(ReferenceSurface,vtkPolyData);
53 
54  vtkSetStringMacro(CellEntityIdsArrayName);
55  vtkGetStringMacro(CellEntityIdsArrayName);
56 
57  vtkSetMacro(ProjectedCellEntityId,int);
58  vtkGetMacro(ProjectedCellEntityId,int);
59 
60  vtkSetMacro(QuadratureOrder,int);
61  vtkGetMacro(QuadratureOrder,int);
62 
63  vtkSetMacro(NegativeJacobianTolerance,double);
64  vtkGetMacro(NegativeJacobianTolerance,double);
65 
66  vtkSetMacro(JacobianRelaxation,int);
67  vtkGetMacro(JacobianRelaxation,int);
68  vtkBooleanMacro(JacobianRelaxation,int);
69 
70  vtkSetMacro(TestFinalJacobians,int);
71  vtkGetMacro(TestFinalJacobians,int);
72  vtkBooleanMacro(TestFinalJacobians,int);
73 
74  protected:
77 
78  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
79 
80  bool HasJacobianChangedSign(vtkCell* linearVolumeCell, vtkCell* quadraticVolumeCell);
81  double ComputeJacobian(vtkCell* cell, double pcoords[3]);
82 
84 
86 
87  vtkPolyData* ReferenceSurface;
88 
93 
96 
97  private:
99  void operator=(const vtkvmtkLinearToQuadraticMeshFilter&); // Not implemented.
100 };
101 
102 #endif
Converts linear mesh elements to quadratic mesh elements (optionally) by executing by projecting mid ...