MCPcopy Create free account
hub / github.com/OpenFOAM/OpenFOAM-dev / stitchTriangles

Function stitchTriangles

src/triSurface/triSurface/stitchTriangles.C:32–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
31
32bool Foam::triSurface::stitchTriangles
33(
34 const scalar tol,
35 bool verbose
36)
37{
38 pointField& ps = storedPoints();
39
40 // Merge points
41 labelList pointMap;
42 pointField newPoints;
43 bool hasMerged = mergePoints(ps, tol, verbose, pointMap, newPoints);
44
45 if (hasMerged)
46 {
47 if (verbose)
48 {
49 Pout<< "stitchTriangles : Merged from " << ps.size()
50 << " points down to " << newPoints.size() << endl;
51 }
52
53 // Set the coordinates to the merged ones
54 ps.transfer(newPoints);
55
56 // Reset the triangle point labels to the unique points array
57 label newTriangleI = 0;
58 forAll(*this, i)
59 {
60 const labelledTri& tri = operator[](i);
61 labelledTri newTri
62 (
63 pointMap[tri[0]],
64 pointMap[tri[1]],
65 pointMap[tri[2]],
66 tri.region()
67 );
68
69 if
70 (
71 (newTri[0] != newTri[1])
72 && (newTri[0] != newTri[2])
73 && (newTri[1] != newTri[2])
74 )
75 {
76 operator[](newTriangleI++) = newTri;
77 }
78 else if (verbose)
79 {
80 Pout<< "stitchTriangles : "
81 << "Removing triangle " << i
82 << " with non-unique vertices." << endl
83 << " vertices :" << newTri << endl
84 << " coordinates:" << newTri.points(ps)
85 << endl;
86 }
87 }
88
89 if (newTriangleI != size())

Callers 3

cleanupFunction · 0.85
readTRIFunction · 0.85
readACFunction · 0.85

Calls 10

sizeFunction · 0.85
mergePointsFunction · 0.50
forAllFunction · 0.50
labelledTriClass · 0.50
sizeMethod · 0.45
transferMethod · 0.45
pointsMethod · 0.45
setMethod · 0.45
setSizeMethod · 0.45
regionMethod · 0.45

Tested by

no test coverage detected