Skip to content
Snippets Groups Projects
Commit 9f3e27e0 authored by Mark Olesen's avatar Mark Olesen
Browse files

BUG: indexing in extendedEdgeMesh::add fails (fixes #448)

- 1st problem arises when there are edges, but edgeNormals is empty.
  The UIndirectList fails (zero elements, non-zero addressing)

- further problem occurs if there is a mismatch in the number of edges
  and edges normals (incorrect indexing on loop).
parent 90eeafb4
No related branches found
No related tags found
No related merge requests found
...@@ -1260,20 +1260,36 @@ void Foam::extendedEdgeMesh::add(const extendedEdgeMesh& fem) ...@@ -1260,20 +1260,36 @@ void Foam::extendedEdgeMesh::add(const extendedEdgeMesh& fem)
// ~~~~~~~ // ~~~~~~~
// Combine normals // Combine normals
DynamicField<point> newNormals(normals().size()+fem.normals().size()); DynamicField<point> newNormals
(
normals().size()
+ fem.normals().size()
);
newNormals.append(normals()); newNormals.append(normals());
newNormals.append(fem.normals()); newNormals.append(fem.normals());
// Combine and re-index into newNormals // Combine and re-index into newNormals
labelListList newEdgeNormals(edgeNormals().size()+fem.edgeNormals().size()); labelListList newEdgeNormals
UIndirectList<labelList>(newEdgeNormals, reverseEdgeMap) = (
edgeNormals(); edgeNormals().size()
UIndirectList<labelList>(newEdgeNormals, reverseFemEdgeMap) = + fem.edgeNormals().size()
fem.edgeNormals(); );
forAll(reverseFemEdgeMap, i)
{ UIndirectList<labelList>
label mapI = reverseFemEdgeMap[i]; (
newEdgeNormals,
SubList<label>(reverseEdgeMap, edgeNormals().size())
) = edgeNormals();
UIndirectList<labelList>
(
newEdgeNormals,
SubList<label>(reverseFemEdgeMap, fem.edgeNormals().size())
) = fem.edgeNormals();
forAll(fem.edgeNormals(), i)
{
const label mapI = reverseFemEdgeMap[i];
labelList& en = newEdgeNormals[mapI]; labelList& en = newEdgeNormals[mapI];
forAll(en, j) forAll(en, j)
{ {
...@@ -1300,9 +1316,10 @@ void Foam::extendedEdgeMesh::add(const extendedEdgeMesh& fem) ...@@ -1300,9 +1316,10 @@ void Foam::extendedEdgeMesh::add(const extendedEdgeMesh& fem)
newFeaturePointNormals, newFeaturePointNormals,
SubList<label>(reverseFemPointMap, fem.featurePointNormals().size()) SubList<label>(reverseFemPointMap, fem.featurePointNormals().size())
) = fem.featurePointNormals(); ) = fem.featurePointNormals();
forAll(fem.featurePointNormals(), i) forAll(fem.featurePointNormals(), i)
{ {
label mapI = reverseFemPointMap[i]; const label mapI = reverseFemPointMap[i];
labelList& fn = newFeaturePointNormals[mapI]; labelList& fn = newFeaturePointNormals[mapI];
forAll(fn, j) forAll(fn, j)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment