Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Modules
Visualization
Commits
d6d313be
Commit
d6d313be
authored
May 06, 2010
by
Mark Olesen
Browse files
ENH: use simpler API for vtkPolyhedron
parent
32c03c7c
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/paraview-plugins/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamMeshVolume.C
View file @
d6d313be
...
...
@@ -164,17 +164,10 @@ vtkUnstructuredGrid* Foam::vtkPV3Foam::volumeVTKMesh
// data types - max 'order' = hex = 8 points
vtkIdType
nodeIds
[
8
];
// hash to establish unique node ids for a polyhedral cell
HashSet
<
vtkIdType
,
Hash
<
label
>
>
hashUniqId
(
2
*
256
);
// unique node ids for a polyhedral cell
DynamicList
<
vtkIdType
>
uniqueNodeIds
(
256
);
// face-stream for a polyhedral cell
// [numFace0Pts, id1, id2, id3, numFace1Pts, id1, id2, id3, ...]
DynamicList
<
vtkIdType
>
faceStream
(
256
);
forAll
(
cellShapes
,
cellI
)
{
const
cellShape
&
cellShape
=
cellShapes
[
cellI
];
...
...
@@ -282,6 +275,7 @@ vtkUnstructuredGrid* Foam::vtkPV3Foam::volumeVTKMesh
// Polyhedral cell - use VTK_POLYHEDRON
const
labelList
&
cFaces
=
mesh
.
cells
()[
cellI
];
#ifdef HAS_VTK_POLYHEDRON
vtkIdType
nFaces
=
cFaces
.
size
();
vtkIdType
nLabels
=
nFaces
;
...
...
@@ -292,13 +286,6 @@ vtkUnstructuredGrid* Foam::vtkPV3Foam::volumeVTKMesh
nLabels
+=
f
.
size
();
}
// hash to establish unique node ids for a polyhedral cell
hashUniqId
.
clear
();
// unique node ids - approximately equal to the number of point ids
uniqueNodeIds
.
clear
();
uniqueNodeIds
.
reserve
(
nLabels
-
nFaces
);
// build face-stream
// [numFace0Pts, id1, id2, id3, numFace1Pts, id1, id2, id3, ...]
// point Ids are global
...
...
@@ -318,7 +305,6 @@ vtkUnstructuredGrid* Foam::vtkPV3Foam::volumeVTKMesh
{
forAll
(
f
,
fp
)
{
hashUniqId
.
insert
(
f
[
fp
]);
faceStream
.
append
(
f
[
fp
]);
}
}
...
...
@@ -328,32 +314,37 @@ vtkUnstructuredGrid* Foam::vtkPV3Foam::volumeVTKMesh
// or use face::reverseFace()
forAllReverse
(
f
,
fp
)
{
hashUniqId
.
insert
(
f
[
fp
]);
faceStream
.
append
(
f
[
fp
]);
}
}
}
uniqueNodeIds
.
append
(
hashUniqId
.
sortedToc
());
vtkIdType
nodeCount
=
uniqueNodeIds
.
size
();
#ifdef HAS_VTK_POLYHEDRON
vtkmesh
->
InsertNextCell
(
VTK_POLYHEDRON
,
nodeCount
,
uniqueNodeIds
.
data
(),
nFaces
,
faceStream
.
data
()
);
vtkmesh
->
InsertNextCell
(
VTK_POLYHEDRON
,
nFaces
,
faceStream
.
data
());
#else
// this is a horrible substitute
// but avoids crashes when there is no vtkPolyhedron support
// establish unique node ids used
HashSet
<
vtkIdType
,
Hash
<
label
>
>
hashUniqId
(
2
*
256
);
forAll
(
cFaces
,
cFaceI
)
{
const
face
&
f
=
mesh
.
faces
()[
cFaces
[
cFaceI
]];
forAll
(
f
,
fp
)
{
hashUniqId
.
insert
(
f
[
fp
]);
}
}
// use face stream to store unique node ids:
faceStream
=
hashUniqId
.
sortedToc
();
vtkmesh
->
InsertNextCell
(
VTK_CONVEX_POINT_SET
,
nodeCount
,
uniqueNodeIds
.
data
()
vtkIdType
(
faceStream
.
size
())
,
faceStream
.
data
()
);
#endif
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment