33 Info<<
"Writing points to " << fName <<
nl <<
endl;
38 Triangulation::Finite_vertices_iterator vit = finite_vertices_begin();
39 vit != finite_vertices_end();
43 if (!internalOnly || vit->internalOrBoundaryPoint())
53 Info<<
"Writing triangles to " << fName <<
nl <<
endl;
56 labelList vertexMap(number_of_vertices(), -2);
61 Triangulation::Finite_vertices_iterator vit = finite_vertices_begin();
62 vit != finite_vertices_end();
66 if (!internalOnly || !vit->farPoint())
68 vertexMap[vit->index()] = verti++;
75 Triangulation::Finite_faces_iterator fit = finite_faces_begin();
76 fit != finite_faces_end();
84 fit->vertex(0)->internalOrBoundaryPoint()
85 || fit->vertex(1)->internalOrBoundaryPoint()
86 || fit->vertex(2)->internalOrBoundaryPoint()
91 for (
label i = 0; i < 3; ++i)
93 str <<
" " << vertexMap[fit->vertex(i)->index()] + 1;
103 Info<<
"Writing dual faces to " << fName <<
nl <<
endl;
110 Triangulation::Finite_faces_iterator fit = finite_faces_begin();
111 fit != finite_faces_end();
119 fit->vertex(0)->internalOrBoundaryPoint()
120 || fit->vertex(1)->internalOrBoundaryPoint()
121 || fit->vertex(2)->internalOrBoundaryPoint()
125 fit->faceIndex() = dualVerti++;
130 fit->faceIndex() = -1;
136 Triangulation::Finite_vertices_iterator vit = finite_vertices_begin();
137 vit != finite_vertices_end();
141 if (!internalOnly || vit->internalOrBoundaryPoint())
143 Face_circulator fcStart = incident_faces(vit);
144 Face_circulator fc = fcStart;
150 if (!is_infinite(fc))
152 if (fc->faceIndex() < 0)
155 <<
"Dual face uses vertex defined by a triangle"
156 " defined by an external point"
160 str<<
' ' << fc->faceIndex() + 1;
162 }
while (++fc != fcStart);
174 EdgeMap<label>& mapEdgesRegion,
175 EdgeMap<label>& indirectPatchEdge
179 label defaultPatchIndex = qSurf_.patchNames().size();
183 mapEdgesRegion.clear();
185 const wordList& existingPatches = qSurf_.patchNames();
187 forAll(existingPatches, sP)
192 patchNames[defaultPatchIndex] =
"CV2D_default_patch";
196 Triangulation::Finite_edges_iterator eit = finite_edges_begin();
197 eit != finite_edges_end();
201 Face_handle fOwner = eit->first;
202 Face_handle fNeighbor = fOwner->neighbor(eit->second);
204 Vertex_handle vA = fOwner->vertex(cw(eit->second));
205 Vertex_handle vB = fOwner->vertex(ccw(eit->second));
209 (vA->internalOrBoundaryPoint() && !vB->internalOrBoundaryPoint())
210 || (vB->internalOrBoundaryPoint() && !vA->internalOrBoundaryPoint())
213 point ptA = toPoint3D(vA->point());
214 point ptB = toPoint3D(vB->point());
216 label patchIndex = qSurf_.findPatch(ptA, ptB);
218 if (patchIndex == -1)
220 patchIndex = defaultPatchIndex;
223 <<
"Dual face found that is not on a surface "
224 <<
"patch. Adding to CV2D_default_patch."
228 edge
e(fOwner->faceIndex(), fNeighbor->faceIndex());
229 patchSizes[patchIndex]++;
230 mapEdgesRegion.insert(
e, patchIndex);
234 indirectPatchEdge.insert(
e, 1);
247 EdgeMap<label>& mapEdgesRegion,
248 EdgeMap<label>& indirectPatchEdge
252 dualPoints.setSize(number_of_faces());
257 Triangulation::Finite_faces_iterator fit = finite_faces_begin();
258 fit != finite_faces_end();
264 fit->vertex(0)->internalOrBoundaryPoint()
265 || fit->vertex(1)->internalOrBoundaryPoint()
266 || fit->vertex(2)->internalOrBoundaryPoint()
269 fit->faceIndex() = dualVerti;
271 dualPoints[dualVerti++] = toPoint2D(circumcenter(fit));
275 fit->faceIndex() = -1;
279 dualPoints.setSize(dualVerti);
281 extractPatches(
patchNames, patchSizes, mapEdgesRegion, indirectPatchEdge);
286 <<
" has size " << patchSizes[patchI] <<
endl;
292 dualFaces.setSize(number_of_vertices());
298 Triangulation::Finite_vertices_iterator vit = finite_vertices_begin();
299 vit != finite_vertices_end();
303 if (vit->internalOrBoundaryPoint())
305 Face_circulator fcStart = incident_faces(vit);
306 Face_circulator fc = fcStart;
311 if (!is_infinite(fc))
313 if (fc->faceIndex() < 0)
316 <<
"Dual face uses vertex defined by a triangle"
317 " defined by an external point"
322 faceVerts[verti++] = fc->faceIndex();
324 }
while (++fc != fcStart);
326 if (faceVerts.size() > 2)
328 dualFaces[dualFacei++] =
333 Info<<
"From triangle point:" << vit->index()
334 <<
" coord:" << toPoint2D(vit->point())
335 <<
" generated illegal dualFace:" << faceVerts
341 dualFaces.setSize(dualFacei);
351 EdgeMap<label> mapEdgesRegion;
352 EdgeMap<label> indirectPatchEdge;
367 dualPoints[ip] = toPoint3D(dual2DPoints[ip]);
373 Info<<
"Writing patch to be used with extrudeMesh to file " << fName
376 str << dualPoints <<
nl << dualFaces <<
nl;