PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
MeshUtilities.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __MeshUtilities_H
13#define __MeshUtilities_H
14
15#include "GeometryUtilities.hpp"
16#include "IMeshDAO.hpp"
17
18namespace Gedim
19{
23{
24 public:
37
54
64
78
80 {
81 std::unordered_map<unsigned int, unsigned int> OldCell0DToNewCell0D;
83 std::unordered_map<unsigned int, unsigned int> OldCell1DToNewCell1D;
85 std::unordered_map<unsigned int, unsigned int> OldCell2DToNewCell2D;
87 std::unordered_map<unsigned int, unsigned int> OldCell3DToNewCell3D;
89 std::unordered_map<unsigned int, unsigned int> NewCell0DToOldCell0D;
91 std::unordered_map<unsigned int, unsigned int> NewCell1DToOldCell1D;
93 std::unordered_map<unsigned int, unsigned int> NewCell2DToOldCell2D;
95 std::unordered_map<unsigned int, unsigned int> NewCell3DToOldCell3D;
97 };
98
100 {
101 std::vector<unsigned int> Cell0Ds;
102 std::vector<unsigned int> Cell1Ds;
103 std::vector<unsigned int> Cell2Ds;
104 std::vector<unsigned int> Cell3Ds;
105 };
106
108 {
109 std::vector<unsigned int> OldCell0DToNewCell0D = {};
110 std::vector<unsigned int> OldCell1DToNewCell1D = {};
111 std::vector<unsigned int> OldCell2DToNewCell2D = {};
112 std::vector<unsigned int> OldCell3DToNewCell3D = {};
113 std::vector<unsigned int> NewCell0DToOldCell0D = {};
114 std::vector<unsigned int> NewCell1DToOldCell1D = {};
115 std::vector<unsigned int> NewCell2DToOldCell2D = {};
116 std::vector<unsigned int> NewCell3DToOldCell3D = {};
117 };
118
120 {
121 Eigen::MatrixXi Cell1Ds;
122 std::vector<Eigen::MatrixXi> Cell2Ds;
124 };
125
127 {
128
129 Eigen::MatrixXi AlignedCell1Ds;
130 std::vector<Eigen::MatrixXi> Cell0DsAlignedCell1DsIndex;
131 std::vector<Eigen::MatrixXi> Cell1DsAlignedCell1DsIndex;
132 std::vector<Eigen::MatrixXi> Cell3DsAlignedCell1DsIndex;
133 std::vector<std::vector<unsigned int>> AlignedCell1Ds_SubCell0Ds;
134 std::vector<std::vector<unsigned int>> AlignedCell1Ds_SubCell1Ds;
135 std::vector<std::vector<unsigned int>> AlignedCell1Ds_Cell3Ds;
136 };
137
139 {
140 std::vector<Eigen::MatrixXd> Cell1DsBoundingBox;
141 std::vector<Eigen::MatrixXd> Cell1DsVertices;
142 std::vector<Eigen::Vector3d> Cell1DsTangents;
143 std::vector<double> Cell1DsLengths;
144 std::vector<double> Cell1DsSquaredLengths;
145 std::vector<Eigen::Vector3d> Cell1DsCentroids;
146 };
147
149 {
150 std::vector<Eigen::MatrixXd> Cell2DsBoundingBox;
151 std::vector<Eigen::MatrixXd> Cell2DsVertices;
152 std::vector<std::vector<Eigen::Matrix3d>> Cell2DsTriangulations;
153 std::vector<double> Cell2DsAreas;
154 std::vector<Eigen::Vector3d> Cell2DsCentroids;
155 std::vector<double> Cell2DsDiameters;
156 std::vector<std::vector<bool>> Cell2DsEdgeDirections;
157 std::vector<Eigen::MatrixXd> Cell2DsEdgesCentroid;
158 std::vector<Eigen::VectorXd> Cell2DsEdgeLengths;
159 std::vector<Eigen::MatrixXd> Cell2DsEdgeTangents;
160 std::vector<Eigen::MatrixXd> Cell2DsEdgeNormals;
161 std::vector<Eigen::Vector3d> Cell2DsChebyshevCenter;
162 std::vector<std::vector<Eigen::Matrix3d>> Cell2DsTriangulationsByChebyshevCenter;
163 std::vector<double> Cell2DsInRadius;
164 };
165
213
215 {
216 std::vector<Eigen::MatrixXd> Cell3DsVertices;
217 std::vector<Eigen::MatrixXi> Cell3DsEdges;
218 std::vector<std::vector<Eigen::MatrixXi>> Cell3DsFaces;
219 std::vector<Eigen::MatrixXd> Cell3DsBoundingBox;
220 std::vector<double> Cell3DsVolumes;
221 std::vector<double> Cell3DsDiameters;
222 std::vector<Eigen::Vector3d> Cell3DsCentroids;
223 std::vector<Eigen::MatrixXd> Cell3DsEdgesCentroid;
224 std::vector<Eigen::VectorXd> Cell3DsEdgeLengths;
225 std::vector<Eigen::MatrixXd> Cell3DsEdgeTangents;
226 std::vector<std::vector<bool>> Cell3DsEdgeDirections;
227 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsTetrahedronPoints;
228 std::vector<std::vector<Eigen::Vector3d>> Cell3DsFacesTranslations;
229 std::vector<std::vector<Eigen::Matrix3d>> Cell3DsFacesRotationMatrices;
230 std::vector<std::vector<Eigen::Vector3d>> Cell3DsFacesNormals;
231 std::vector<std::vector<std::array<Eigen::Vector3d, 2>>> Cell3DsFacesTangents;
232 std::vector<std::vector<bool>> Cell3DsFacesNormalDirections;
233 std::vector<std::vector<bool>> Cell3DsFacesNormalGlobalDirection;
234 std::vector<std::vector<std::array<bool, 2>>> Cell3DsFacesTangentsGlobalDirection;
235 std::vector<std::vector<std::vector<bool>>> Cell3DsFacesEdgeDirections;
236 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFaces3DVertices;
237 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFaces2DVertices;
238 std::vector<std::vector<std::vector<Eigen::Matrix3d>>> Cell3DsFaces3DTriangulations;
240 std::vector<std::vector<std::vector<Eigen::Matrix3d>>> Cell3DsFaces2DTriangulations;
242 std::vector<std::vector<double>> Cell3DsFacesAreas;
243 std::vector<std::vector<Eigen::Vector3d>> Cell3DsFaces2DCentroids;
244 std::vector<std::vector<double>> Cell3DsFacesDiameters;
245 std::vector<std::vector<Eigen::VectorXd>> Cell3DsFacesEdgeLengths;
246 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFacesEdge3DTangents;
247 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFacesEdges3DCentroid;
248 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFacesEdge2DTangents;
249 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFacesEdges2DCentroid;
250 std::vector<std::vector<Eigen::MatrixXd>> Cell3DsFacesEdge2DNormals;
251 };
252
254 {
255 Eigen::MatrixXd Vertices;
256 std::vector<std::vector<unsigned int>> PolyhedronFaces;
257 };
258
260 {
261 std::vector<unsigned int> RemovedEdges;
262 std::vector<unsigned int> VerticesIndex;
263 std::vector<unsigned int> EdgesIndex;
264 };
265
267 {
269 {
270 unsigned int Cell2DIndex;
271 std::vector<unsigned int> ConvexCell2DsIndex;
272 };
273
274 std::vector<Gedim::MeshUtilities::AgglomerateMeshFromTriangularMeshResult::ConcaveCell2D> ConcaveCell2Ds;
275 std::vector<unsigned int> RemovedCell1Ds;
276 std::vector<unsigned int> RemovedCell2Ds;
277 };
278
280 {
281 std::vector<unsigned int> OriginalCell0DToAgglomeratedCell0Ds = {};
282 std::vector<unsigned int> OriginalCell1DToAgglomeratedCell1Ds = {};
283 std::vector<unsigned int> OriginalCell2DToAgglomeratedCell2Ds = {};
284 std::vector<unsigned int> AgglomeratedCell0DToOriginalCell0Ds = {};
285 std::vector<std::vector<unsigned int>> AgglomeratedCell1DToOriginalCell1Ds = {};
286 std::vector<std::vector<unsigned int>> AgglomeratedCell2DToOriginalCell2Ds = {};
287 };
288
290 {
291 std::vector<unsigned int> AgglomerateCell1DVertices;
292 std::vector<unsigned int> SubCell1DsRemovedVertices;
293 };
294
296 {
297 std::vector<unsigned int> AgglomerateCell2DVertices;
298 std::vector<unsigned int> AgglomerateCell2DEdges;
299 std::vector<unsigned int> SubCell2DsRemovedVertices;
300 std::vector<unsigned int> SubCell2DsRemovedEdges;
301 };
302
304 {
305 std::vector<unsigned int> AgglomerateCell3DVertices;
306 std::vector<unsigned int> AgglomerateCell3DEdges;
307 std::vector<unsigned int> AgglomerateCell3DFaces;
308 std::vector<unsigned int> SubCell3DsRemovedVertices;
309 std::vector<unsigned int> SubCell3DsRemovedEdges;
310 std::vector<unsigned int> SubCell3DsRemovedFaces;
311 };
312
314 {
316 {
317 unsigned int ConvexCell3DIndex = 0;
318 unsigned int ConvexCell3DFaceIndex = 0;
319 };
320
321 std::vector<Gedim::MeshUtilities::FindConcaveCell3DFacesConvexCell2DResult::ConvexCell2D> ConcaveCell3DFacesConvexCell2D = {};
322 };
323
325 {
326 std::vector<unsigned int> VerticesIndex;
327 std::vector<unsigned int> EdgesIndex;
328 std::vector<unsigned int> FacesIndex;
329 };
330
332 {
334 {
335 enum struct Types
336 {
337 Unknown = 0,
338 Outside = 1,
339 Cell0D = 2,
340 Cell1D = 3,
341 Cell2D = 4,
342 Cell3D = 5
343 };
344
346 unsigned int Cell_index;
347 };
348
349 std::vector<Gedim::MeshUtilities::FindPointMeshPositionResult::PointMeshPosition> MeshPositions;
350 };
351
353 {
359
360 std::vector<Gedim::MeshUtilities::FindPointCell2DResult::PointCell2DFound> Cell2Ds_found;
361 };
362
364 {
370
371 std::vector<Gedim::MeshUtilities::FindPointCell3DResult::PointCell3DFound> Cell3Ds_found;
372 };
373
375 {
376 enum struct Types
377 {
378 None = 1,
379 Vertices = 2,
380 };
381
383 {
384 enum struct Types
385 {
386 Vertex = 1,
387 Edge = 2,
388 Face = 3,
389 Polyhedron = 4
390 };
391
393 unsigned int Geometry_index;
394 std::vector<unsigned int> Cell0Ds_index;
395 std::vector<unsigned int> Cell1Ds_index;
396 std::vector<unsigned int> Cell2Ds_index;
397 std::vector<unsigned int> Cell3Ds_index;
398 };
399
401 {
402 std::map<unsigned int, unsigned int> Cell0Ds_intersections;
403 std::map<unsigned int, std::vector<unsigned int>> Cell1Ds_intersections;
404 std::map<unsigned int, std::vector<unsigned int>> Cell2Ds_intersections;
405 std::map<unsigned int, std::vector<unsigned int>> Cell3Ds_intersections;
406 };
407
410 std::vector<Gedim::MeshUtilities::Intersect_mesh_polyhedron_result::Polyhedron_Intersection> Polyhedron_intersections;
412 };
413
414 public:
417
421
423
425 Gedim::MeshUtilities::FilterMeshData FilterMesh1D(const std::vector<unsigned int> &cell1DsFilter,
426 const Gedim::IMeshDAO &mesh) const;
427
429 Gedim::MeshUtilities::FilterMeshData FilterMesh2D(const std::vector<unsigned int> &cell2DsFilter,
430 const Gedim::IMeshDAO &mesh) const;
431
433 Gedim::MeshUtilities::FilterMeshData FilterMesh3D(const std::vector<unsigned int> &cell3DsFilter,
434 const Gedim::IMeshDAO &mesh) const;
435
437 const std::vector<unsigned int> &cell1DsFilter,
439 Gedim::IMeshDAO &mesh) const;
440
442 const std::vector<unsigned int> &cell1DsFilter,
443 const std::vector<unsigned int> &cell2DsFilter,
445 Gedim::IMeshDAO &mesh) const;
446
448 const std::vector<unsigned int> &cell1DsFilter,
449 const std::vector<unsigned int> &cell2DsFilter,
450 const std::vector<unsigned int> &cell3DsFilter,
452 Gedim::IMeshDAO &mesh) const;
453
459 void FillMesh1D(const Gedim::GeometryUtilities &geometryUtilities,
460 const Eigen::Vector3d &segmentOrigin,
461 const Eigen::Vector3d &segmentTangent,
462 const std::vector<double> &coordinates,
463 Gedim::IMeshDAO &mesh) const;
464
470 void FillMesh2D(const Eigen::MatrixXd &cell0Ds,
471 const Eigen::MatrixXi &cell1Ds,
472 const std::vector<Eigen::MatrixXi> &cell2Ds,
473 Gedim::IMeshDAO &mesh) const;
474
475 void FillMesh3D(const Eigen::MatrixXd &cell0Ds,
476 const Eigen::MatrixXi &cell1Ds,
477 const std::vector<Eigen::MatrixXi> &cell2Ds,
478 const std::vector<Mesh3DPolyhedron> &cell3Ds,
479 Gedim::IMeshDAO &mesh) const;
480
481 void FillMesh3D(const Eigen::MatrixXd &cell0Ds,
482 const std::vector<std::pair<unsigned int, unsigned int>> &cell1Ds_vertices,
483 const std::vector<std::vector<unsigned int>> &cell2Ds_vertices,
484 const std::vector<std::vector<unsigned int>> &cell2Ds_edges,
485 const std::vector<std::vector<unsigned int>> &cell3Ds_vertices,
486 const std::vector<std::vector<unsigned int>> &cell3Ds_edges,
487 const std::vector<std::vector<unsigned int>> &cell3Ds_faces,
488 Gedim::IMeshDAO &mesh) const;
489
490 void FillMesh3D(const Eigen::MatrixXd &cell0Ds,
491 const std::vector<std::vector<std::vector<unsigned int>>> &cell3Ds_faces_vertices,
492 Gedim::IMeshDAO &mesh) const;
493
494 void FixCell2DsOrientation(const Gedim::GeometryUtilities &geometryUtilities, IMeshDAO &mesh) const;
495
496 void SetMesh3DMarker(const unsigned int marker, Gedim::IMeshDAO &mesh) const;
497
503 const std::vector<Eigen::VectorXi> &cell2Ds) const;
504
509 const Gedim::GeometryUtilities &geometryUtilities,
510 const Gedim::IMeshDAO &convexMesh) const;
511
516 const Gedim::GeometryUtilities &geometryUtilities,
517 const Gedim::IMeshDAO &mesh) const;
518
524 const std::vector<std::vector<std::vector<unsigned int>>> &cell3DsAlignedEdgesVertices,
525 const std::vector<std::vector<std::vector<unsigned int>>> &cell3DsAlignedEdgesEdges,
526 const Gedim::IMeshDAO &mesh) const;
527
533 const Gedim::GeometryUtilities &geometryUtilities,
534 const Gedim::IMeshDAO &mesh,
536
540 void Mesh1DFromSegment(const Gedim::GeometryUtilities &geometryUtilities,
541 const Eigen::MatrixXd &segmentVertices,
542 const std::vector<unsigned int> vertexMarkers,
543 Gedim::IMeshDAO &mesh) const;
544
549 void Mesh2DFromPolygon(const Eigen::MatrixXd &polygonVertices,
550 const std::vector<unsigned int> vertexMarkers,
551 const std::vector<unsigned int> edgeMarkers,
552 Gedim::IMeshDAO &mesh) const;
553
561 void SetMeshMarkersOnLine(const Gedim::GeometryUtilities &geometryUtilities,
562 const Eigen::Vector3d &lineOrigin,
563 const Eigen::Vector3d &lineTangent,
564 const double &lineTangentSquaredLength,
565 const unsigned int &marker,
566 Gedim::IMeshDAO &mesh) const;
567
568 void SetMeshMarkersOnSegment(const Gedim::GeometryUtilities &geometryUtilities,
569 const Eigen::Vector3d &segment_origin,
570 const Eigen::Vector3d &segment_tangent,
571 const double &segment_tangent_squared_length,
572 const unsigned int &marker,
573 Gedim::IMeshDAO &mesh) const;
574
582 void Mesh3DFromPolyhedron(const Eigen::MatrixXd &polyhedronVertices,
583 const Eigen::MatrixXi &polyhedronEdges,
584 const std::vector<Eigen::MatrixXi> &polyhedronFaces,
585 const std::vector<unsigned int> vertexMarkers,
586 const std::vector<unsigned int> edgeMarkers,
587 const std::vector<unsigned int> faceMarkers,
588 Gedim::IMeshDAO &mesh) const;
589
596 void SetMeshMarkersOnPlane(const Gedim::GeometryUtilities &geometryUtilities,
597 const Eigen::Vector3d &planeNormal,
598 const Eigen::Vector3d &planeOrigin,
599 const unsigned int &marker,
600 Gedim::IMeshDAO &mesh) const;
601
602 void SetMeshMarkersByFaceNormal(const Gedim::GeometryUtilities &geometryUtilities,
603 const Eigen::Vector3d &normal,
604 const std::vector<Eigen::Vector3d> &cell2Ds_normal,
605 const unsigned int &marker,
606 Gedim::IMeshDAO &mesh) const;
607
609 void SetMeshMarkersOnPolygon(const Gedim::GeometryUtilities &geometryUtilities,
610 const Eigen::Vector3d &polygon_plane_normal,
611 const Eigen::Vector3d &polygon_plane_origin,
612 const Eigen::MatrixXd &polygon_vertices_2D,
613 const Eigen::Vector3d &polygon_translation,
614 const Eigen::Matrix3d &polygon_rotation_matrix,
615 const unsigned int &marker,
616 Gedim::IMeshDAO &mesh) const;
617
618 void SetMeshMarkersOnPolygon(const Gedim::GeometryUtilities &geometryUtilities,
619 const Eigen::Vector3d &polygon_plane_normal,
620 const Eigen::Vector3d &polygon_plane_origin,
621 const Eigen::MatrixXd &polygon_vertices_2D,
622 const Eigen::Vector3d &polygon_translation,
623 const Eigen::Matrix3d &polygon_rotation_matrix,
624 const std::vector<Eigen::Vector3d> &cell1Ds_centroid,
625 const std::vector<Eigen::Vector3d> &cell2Ds_centroid,
626 const unsigned int &marker,
627 Gedim::IMeshDAO &mesh) const;
628
632 std::vector<unsigned int> MeshCell2DRoots(const Gedim::IMeshDAO &mesh) const;
633
637 MeshGeometricData1D FillMesh1DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
638 const Gedim::IMeshDAO &convexMesh) const;
639
640 MeshGeometricData1D ImportMeshGeometricData1DFromTxt(const std::string &file_path);
641 void ExportMeshGeometricData1DToTxt(const MeshGeometricData1D &mesh_geometric_data, const std::string &file_path);
642
646 MeshGeometricData2D FillMesh2DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
647 const Gedim::IMeshDAO &convexMesh) const;
648
654 const Gedim::IMeshDAO &mesh,
655 const std::vector<Gedim::GeometryUtilities::PolygonTypes> &meshCell2DsPolygonType,
656 const MeshGeometricData2DConfig &config = MeshGeometricData2DConfig()) const;
657
663 MeshGeometricData2D FillMesh2DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
664 const Gedim::IMeshDAO &mesh,
666 const std::vector<std::vector<unsigned int>> &meshCell2DToConvexCell2DIndices) const;
667
668 MeshGeometricData2D ImportMeshGeometricData2DFromTxt(const std::string &file_path);
669 void ExportMeshGeometricData2DToTxt(const MeshGeometricData2D &mesh_geometric_data, const std::string &file_path);
670
674 MeshGeometricData3D FillMesh3DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
675 const Gedim::IMeshDAO &convexMesh) const;
676
683 MeshGeometricData3D FillMesh3DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
684 const Gedim::IMeshDAO &mesh,
686 const std::vector<std::vector<unsigned int>> &meshCell3DToConvexCell3DIndices) const;
687
688 MeshGeometricData3D FillMesh3DGeometricData(const Gedim::GeometryUtilities &geometryUtilities,
689 const Gedim::IMeshDAO &mesh,
690 const std::vector<std::vector<Eigen::MatrixXd>> &cell3Ds_tetra_vertices,
691 const std::vector<std::vector<Eigen::Matrix3d>> &cell2Ds_triangles_3D_vertices) const;
692
693 MeshGeometricData3D ImportMeshGeometricData3DFromTxt(const std::string &file_path);
694 void ExportMeshGeometricData3DToTxt(const MeshGeometricData3D &mesh_geometric_data, const std::string &file_path);
695
699
703
707
711
720 void CreateRectangleMesh(const Eigen::Vector3d &rectangleOrigin,
721 const Eigen::Vector3d &rectangleBaseTangent,
722 const Eigen::Vector3d &rectangleHeightTangent,
723 const std::vector<double> &baseMeshCurvilinearCoordinates,
724 const std::vector<double> &heightMeshCurvilinearCoordinates,
725 Gedim::IMeshDAO &mesh) const;
726
727 void CreateStructuredTriangularMesh(const Eigen::Vector3d &rectangleOrigin,
728 const Eigen::Vector3d &rectangleBaseTangent,
729 const Eigen::Vector3d &rectangleHeightTangent,
730 const std::vector<double> &baseMeshCurvilinearCoordinates,
731 const std::vector<double> &heightMeshCurvilinearCoordinates,
732 Gedim::IMeshDAO &mesh) const;
733
734 void CreateParallelepipedMesh(const Eigen::Vector3d &rectangleOrigin,
735 const Eigen::Vector3d &rectangleLengthTangent,
736 const Eigen::Vector3d &rectangleHeightTangent,
737 const Eigen::Vector3d &rectangleWidthTangent,
738 const std::vector<double> &lengthMeshCurvilinearCoordinates,
739 const std::vector<double> &heightMeshCurvilinearCoordinates,
740 const std::vector<double> &widthMeshCurvilinearCoordinates,
741 Gedim::IMeshDAO &mesh) const;
742
743 void CreateTrianglePlusHangingNodesMesh(const Eigen::Vector3d &rectangleOrigin,
744 const Eigen::Vector3d &rectangleBaseTangent,
745 const Eigen::Vector3d &rectangleHeightTangent,
746 const std::vector<double> &baseMeshCurvilinearCoordinates,
747 const std::vector<double> &heightMeshCurvilinearCoordinates,
748 const std::vector<unsigned int> &numberOfAddedVerticesForEachRectangle,
749 const Gedim::GeometryUtilities &geometryUtilities,
750 Gedim::IMeshDAO &mesh) const;
751
752 void CreateRectanglePlusHangingNodesMesh(const Eigen::Vector3d &rectangleOrigin,
753 const Eigen::Vector3d &rectangleBaseTangent,
754 const Eigen::Vector3d &rectangleHeightTangent,
755 const std::vector<double> &baseMeshCurvilinearCoordinates,
756 const std::vector<double> &heightMeshCurvilinearCoordinates,
757 const std::vector<unsigned int> &numberOfAddedVerticesForEachRectangle,
758 const Gedim::GeometryUtilities &geometryUtilities,
759 Gedim::IMeshDAO &mesh) const;
760
765 Gedim::IMeshDAO &mesh) const;
766
768 const Eigen::MatrixXd &polygonVertices,
769 const double &maxTriangleArea,
770 Gedim::IMeshDAO &mesh) const;
771
778 void CreateTriangularMesh(const Eigen::MatrixXd &polygonVertices,
779 const double &maxTriangleArea,
781 const std::string &options = "-QDzpqnea") const;
782
783 void CreatePolygonalMesh(const Gedim::GeometryUtilities &geometryUtilities,
784 const Eigen::MatrixXd &polygonVertices,
785 const unsigned int numPoints,
786 const unsigned int numIterations,
788 const unsigned int random_seed = 0) const;
789
798 void CreateTetrahedralMesh(const Eigen::MatrixXd &polyhedronVertices,
799 const Eigen::MatrixXi &polyhedronEdges,
800 const std::vector<Eigen::MatrixXi> &polyhedronFaces,
801 const double &maxTetrahedronVolume,
803 const std::string &options = "Qpqfezna") const;
804 void CreateTetrahedralMesh(const Eigen::MatrixXd &points,
805 const std::vector<std::vector<unsigned int>> &facets,
806 const double &maxTetrahedronVolume,
808 const std::string &options = "Qpqfezna") const;
809
810 void CreateDelaunayMesh3D(const Eigen::MatrixXd &points, const std::vector<unsigned int> &points_marker, Gedim::IMeshDAO &mesh) const;
811
812 void CreatePolyhedralMesh(const Gedim::GeometryUtilities &geometryUtilities,
813 const Eigen::MatrixXd &polyhedronVertices,
814 const Eigen::MatrixXi &polyhedronEdges,
815 const std::vector<Eigen::MatrixXi> &polyhedronFaces,
816 const unsigned int numPoints,
817 const unsigned int numIterations,
819 const unsigned int random_seed = 0) const;
820
821 void MakeMeshTriangularFaces(const std::vector<std::vector<unsigned int>> &faces_triangulation, Gedim::IMeshDAO &mesh) const;
822
828 const std::string &cell0Ds_file_path,
829 const std::string &cell2Ds_file_path,
830 const std::string &marker_file_path,
831 const char separator,
832 Gedim::IMeshDAO &mesh) const;
833
838 const std::string &node_file_path,
839 const std::string &ele_file_path,
840 IMeshDAO &mesh) const;
841
843 void ImportOpenVolumeMesh(const std::string &ovmFilePath,
845 std::vector<std::vector<bool>> &meshCell3DsFacesOrientation) const;
846
849 const std::vector<std::vector<bool>> &meshCell3DsFacesOrientation,
850 const std::string &ovmFilePath) const;
851
853 void ImportVtkMesh3D(const std::string &vtkFilePath, Gedim::IMeshDAO &mesh) const;
854
856 void ImportObjectFileFormat(const std::string &offFilePath, Gedim::IMeshDAO &mesh) const;
857
859 void ExportMeshToObjectFileFormat(const Gedim::IMeshDAO &mesh, const std::string &offFilePath) const;
860
862 void ImportWavefrontOBJ(const std::string &offFilePath, Gedim::IMeshDAO &mesh) const;
863
865 void ExportMeshToWavefrontOBJ(const Gedim::IMeshDAO &mesh, const std::string &offFilePath) const;
866
871 void ChangePolygonMeshMarkers(const Eigen::MatrixXd &polygonVertices,
872 const std::vector<unsigned int> &cell0DMarkers,
873 const std::vector<unsigned int> &cell1DMarkers,
874 Gedim::IMeshDAO &mesh) const;
875
876 void ChangePolyhedronMeshMarkers(const Gedim::GeometryUtilities &geometryUtilities,
877 const Eigen::MatrixXd &polyhedron_vertices,
878 const Eigen::MatrixXi &polyhedron_edges,
879 const std::vector<Eigen::MatrixXi> &polyhedron_faces,
880 const Eigen::MatrixXd &polyhedron_edges_tangent,
881 const Eigen::VectorXd &polyhedron_edges_length,
882 const std::vector<Eigen::Vector3d> &polyhedron_faces_normal,
883 const std::vector<Eigen::MatrixXd> &polyhedron_faces_vertices,
884 const std::vector<Eigen::MatrixXd> &polyhedron_faces_vertices_2D,
885 const std::vector<Eigen::Vector3d> &polyhedron_faces_translation,
886 const std::vector<Eigen::Matrix3d> &polyhedron_faces_rotation_matrix,
887 const std::vector<unsigned int> &polyhedron_vertices_marker,
888 const std::vector<unsigned int> &polyhedron_edges_marker,
889 const std::vector<unsigned int> &polyhedron_faces_marker,
890 const std::vector<Eigen::Vector3d> &cell1Ds_centroid,
891 const std::vector<Eigen::Vector3d> &cell2Ds_centroid,
892 Gedim::IMeshDAO &mesh) const;
893
898 const std::string &exportFolder,
899 const std::string &fileName,
900 const bool &separateFile = false) const;
901
906 const std::string &exportFolder,
907 const std::string &fileName,
908 const bool &separateFile = false) const;
909
915 const std::string &exportFolder,
916 const std::string &fileName,
917 const bool &separateFile = false,
918 const unsigned int &order = 1) const;
919
929 const unsigned int &cell2DIndex,
930 const Eigen::MatrixXd &cell2DVertices,
931 const std::vector<Eigen::Matrix3d> &cell2DTriangulations,
932 const double &cell2DArea,
933 const Eigen::Vector3d &cell2DCentroid,
934 const std::string &exportFolder) const;
935
936 void ExportCell3DToVTU(const Gedim::GeometryUtilities &geometryUtilities,
937 const Gedim::IMeshDAO &mesh,
938 const unsigned int &cell3DIndex,
939 const Eigen::MatrixXd &cell3DVertices,
940 const std::vector<Eigen::MatrixXd> &cell3DTetrahedrons,
941 const std::vector<std::vector<Eigen::Matrix3d>> &cell3DFaces3DTriangulations,
942 const double &cell3DVolume,
943 const Eigen::Vector3d &cell3DCentroid,
944 const std::vector<Eigen::Vector3d> &cell3DFacesTranslation,
945 const std::vector<Eigen::Matrix3d> &cell3DFacesRotationMatrix,
946 const std::vector<double> &cell3DFacesArea,
947 const std::vector<Eigen::MatrixXd> &cell3DFaces2DVertices,
948 const std::vector<Eigen::MatrixXd> &cell3DFaces3DVertices,
949 const std::vector<Eigen::VectorXd> &cell3DFacesEdgeLengths,
950 const std::vector<std::vector<bool>> &cell3DFacesEdgeDirections,
951 const std::vector<Eigen::MatrixXd> &cell3DFacesEdges2DTangent,
952 const std::vector<Eigen::MatrixXd> &cell3DFacesEdges2DNormal,
953 const std::vector<Eigen::Vector3d> &cell3DFacesNormals,
954 const std::vector<bool> &cell3DFacesNormalDirections,
955 const std::vector<Eigen::Vector3d> &cell3DFaces2DCentroids,
956 const std::string &exportFolder) const;
957
963
969
975 std::vector<unsigned int> SplitCell1D(const unsigned int &cell1DIndex, const Eigen::MatrixXi subCell1Ds, Gedim::IMeshDAO &mesh) const;
976
982 std::vector<unsigned int> SplitCell2D(const unsigned int &cell2DIndex,
983 const std::vector<Eigen::MatrixXi> &subCell2Ds,
984 Gedim::IMeshDAO &mesh) const;
985
991 std::vector<unsigned int> SplitCell3D(const unsigned int &cell3DIndex,
992 const std::vector<std::vector<unsigned int>> &subCell3DsVertices,
993 const std::vector<std::vector<unsigned int>> &subCell3DsEdges,
994 const std::vector<std::vector<unsigned int>> &subCell3DsFaces,
995 Gedim::IMeshDAO &mesh) const;
996
998 const Gedim::IMeshDAO &mesh) const;
999
1001 const std::unordered_set<unsigned int> &cell2DsIndex,
1002 const Gedim::IMeshDAO &mesh) const;
1003
1005 const Gedim::IMeshDAO &mesh) const;
1006
1007 unsigned int AgglomerateCell1Ds(const std::unordered_set<unsigned int> &subCell1DsIndex,
1008 const std::vector<unsigned int> &agglomerateCell1DVertices,
1009 const std::vector<unsigned int> &subCell1DsRemovedCell0Ds,
1011 std::vector<std::vector<unsigned int>> &meshCell1DsOriginalCell1Ds,
1012 const bool mantain_neigh2D_order = false) const;
1013
1014 unsigned int AgglomerateCell2Ds(const std::unordered_set<unsigned int> &subCell2DsIndex,
1015 const std::vector<unsigned int> &agglomerateCell2DVertices,
1016 const std::vector<unsigned int> &agglomerateCell2DEdges,
1017 const std::vector<unsigned int> &subCell2DsRemovedCell0Ds,
1018 const std::vector<unsigned int> &subCell2DsRemovedCell1Ds,
1020 std::vector<std::vector<unsigned int>> &meshCell2DsOriginalCell2Ds) const;
1021
1022 unsigned int AgglomerateCell3Ds(const std::unordered_set<unsigned int> &subCell3DsIndex,
1023 const std::vector<unsigned int> &agglomerateCell3DVertices,
1024 const std::vector<unsigned int> &agglomerateCell3DEdges,
1025 const std::vector<unsigned int> &agglomerateCell3DFaces,
1026 const std::vector<unsigned int> &subCell3DsRemovedCell0Ds,
1027 const std::vector<unsigned int> &subCell3DsRemovedCell1Ds,
1028 const std::vector<unsigned int> &subCell3DsRemovedCell2Ds,
1030 std::vector<std::vector<unsigned int>> &meshCell3DsOriginalCell3Ds) const;
1031
1033 const Eigen::Vector3d &rectangleOrigin,
1034 const Eigen::Vector3d &rectangleBaseTangent,
1035 const Eigen::Vector3d &rectangleHeightTangent,
1036 const unsigned int &numQuadrilateralsBaseTangent,
1037 const unsigned int &numQuadrilateralsHeightTangent,
1038 const double &maxDeformingPercentageBase,
1039 const double &maxDeformingPercentageHeight,
1040 Gedim::IMeshDAO &mesh) const;
1041
1042 void CreateDistortedQuadrilaterals(const Gedim::GeometryUtilities &geometryUtilities,
1043 const Eigen::Vector3d &rectangleOrigin,
1044 const Eigen::Vector3d &rectangleBaseTangent,
1045 const Eigen::Vector3d &rectangleHeightTangent,
1046 const unsigned int &numQuadrilateralsBaseTangent,
1047 const unsigned int &numQuadrilateralsHeightTangent,
1048 Gedim::IMeshDAO &mesh) const;
1053 std::vector<unsigned int> FindCell2DsCommonVertices(const std::vector<unsigned int> &cell2DsIndex,
1054 const Gedim::IMeshDAO &mesh) const;
1055
1060 std::vector<unsigned int> FindCell2DsCommonEdges(const std::vector<unsigned int> &cell2DsIndex, const Gedim::IMeshDAO &mesh) const;
1061
1063 const Gedim::GeometryUtilities &geometryUtilities,
1064 const unsigned int &concaveCell3DIndex,
1065 const Gedim::IMeshDAO &mesh,
1067 const std::vector<unsigned int> &convexCell3DIndices,
1068 const std::vector<Eigen::MatrixXd> &concaveCell3DFaces3DVertices,
1069 const std::vector<Eigen::MatrixXd> &concaveCell3DFaces2DVertices,
1070 const std::vector<Eigen::Vector3d> &concaveCell3DFacesTranslation,
1071 const std::vector<Eigen::Matrix3d> &concaveCell3DFacesRotationMatrix,
1072 const std::vector<Eigen::Vector3d> &concaveCell3DFacesNormal,
1073 const std::vector<std::vector<Eigen::MatrixXd>> &convexCell3DsFaces3DVertices,
1074 const std::vector<std::vector<std::vector<unsigned int>>> &convexCell3DsFacesUnalignedVertices) const;
1075
1077 const Gedim::GeometryUtilities &geometryUtilities,
1078 const unsigned int &concaveCell3DIndex,
1079 const Gedim::IMeshDAO &mesh,
1080 const std::vector<Eigen::MatrixXd> &concaveCell3DTetra,
1081 const std::vector<std::vector<Eigen::Matrix3d>> &concaveCell3D_faces_2D_triangles,
1082 const std::vector<Eigen::MatrixXd> &concaveCell3DFaces3DVertices,
1083 const std::vector<Eigen::Vector3d> &concaveCell3DFacesTranslation,
1084 const std::vector<Eigen::Matrix3d> &concaveCell3DFacesRotationMatrix,
1085 const std::vector<Eigen::Vector3d> &concaveCell3DFacesNormal,
1086 const std::vector<std::vector<Eigen::MatrixXd>> &convexCell3DsFaces3DVertices,
1087 const std::vector<std::vector<std::vector<unsigned int>>> &convexCell3DsFacesUnalignedVertices) const;
1088
1090 const Gedim::IMeshDAO &mesh) const;
1091
1093 const Gedim::IMeshDAO &mesh) const;
1094
1096 const Eigen::Vector3d &point,
1097 const Gedim::IMeshDAO &mesh,
1098 const std::vector<Eigen::MatrixXd> &cell2DsVertices,
1099 const std::vector<Eigen::MatrixXd> &cell2DsBoundingBox,
1100 const bool find_only_first_cell2D = true,
1101 const unsigned int starting_cell2D_index = 0) const;
1102
1104 const Gedim::GeometryUtilities &geometryUtilities,
1105 const Eigen::Vector3d &point,
1106 const Gedim::IMeshDAO &mesh,
1107 const std::vector<std::vector<Eigen::MatrixXi>> &cell3DsFaces,
1108 const std::vector<std::vector<Eigen::MatrixXd>> &cell3DsFaceVertices,
1109 const std::vector<std::vector<Eigen::MatrixXd>> &cell3DsFaceRotatedVertices,
1110 const std::vector<std::vector<Eigen::Vector3d>> &cell3DsFaceNormals,
1111 const std::vector<std::vector<bool>> &cell3DsFaceNormalDirections,
1112 const std::vector<std::vector<Eigen::Vector3d>> &cell3DsFaceTranslations,
1113 const std::vector<std::vector<Eigen::Matrix3d>> &cell3DsFaceRotationMatrices,
1114 const std::vector<Eigen::MatrixXd> &cell3DsBoundingBox,
1115 const bool find_only_first_cell3D = true,
1116 const unsigned int starting_cell3D_index = 0) const;
1117
1119 const Gedim::GeometryUtilities &geometryUtilities,
1120 const Eigen::Vector3d &point,
1121 const Gedim::IMeshDAO &mesh,
1122 const std::vector<std::vector<Eigen::MatrixXi>> &cell3DsFaces,
1123 const std::vector<std::vector<Eigen::MatrixXd>> &cell3DsFaceVertices,
1124 const std::vector<std::vector<Eigen::MatrixXd>> &cell3DsFaceRotatedVertices,
1125 const std::vector<std::vector<Eigen::Vector3d>> &cell3DsFaceNormals,
1126 const std::vector<std::vector<bool>> &cell3DsFaceNormalDirections,
1127 const std::vector<std::vector<Eigen::Vector3d>> &cell3DsFaceTranslations,
1128 const std::vector<std::vector<Eigen::Matrix3d>> &cell3DsFaceRotationMatrices,
1129 const std::vector<Eigen::MatrixXd> &cell3DsBoundingBox,
1130 const std::vector<std::vector<Eigen::MatrixXd>> &cell3DsTetrahedra,
1131 const bool find_only_first_cell3D,
1132 const unsigned int starting_cell3D_index) const;
1133
1141
1143 const std::vector<std::vector<unsigned int>> &trianglesIndicesToAgglomerate,
1145
1161 const std::string &fileName,
1162 const char &separator) const;
1163
1179 const std::string &fileName,
1180 const char &separator) const;
1181
1183 void ExportMeshToCsv(const Gedim::IMeshDAO &mesh, const char &separator, const std::string &exportFolderPath) const;
1184
1187 const std::vector<std::vector<unsigned int>> &convexCell2DsIndex,
1188 const char &separator,
1189 const std::string &exportFolderPath) const;
1190
1191 std::vector<unsigned int> MarkCells(const std::function<Eigen::VectorXi(const Eigen::MatrixXd &)> &marking_function,
1192 const std::vector<Eigen::MatrixXd> &cells_points,
1193 const unsigned int default_mark) const;
1194
1197 const Eigen::MatrixXd &polyhedron_vertices,
1198 const Eigen::MatrixXi &polyhedron_edges,
1199 const std::vector<Eigen::MatrixXd> &polyhedron_edges_vertices,
1200 const Eigen::MatrixXd &polyhedron_edges_tangent,
1201 const std::vector<Eigen::MatrixXd> &polyhedron_edges_boudingBox,
1202 const std::vector<Eigen::MatrixXi> &polyhedron_faces,
1203 const std::vector<Eigen::MatrixXd> &polyhedron_faces_vertices,
1204 const std::vector<Eigen::MatrixXd> &polyhedron_faces_rotated_vertices,
1205 const std::vector<Eigen::Vector3d> &polyhedron_faces_normals,
1206 const std::vector<bool> &polyhedron_faces_normal_direction,
1207 const std::vector<Eigen::Vector3d> &polyhedron_faces_translation,
1208 const std::vector<Eigen::Matrix3d> &polyhedron_faces_rotation_matrix,
1209 const std::vector<Eigen::MatrixXd> &polyhedron_faces_boudingBox,
1210 const Eigen::MatrixXd &polyhedron_boudingBox,
1211 const Gedim::IMeshDAO &mesh,
1212 const std::vector<Eigen::MatrixXd> &mesh_cell1Ds_boudingBox,
1213 const std::vector<Eigen::MatrixXd> &mesh_cell1Ds_vertices,
1214 const std::vector<Eigen::Vector3d> &mesh_cell1Ds_tangent,
1215 const std::vector<Eigen::MatrixXd> &mesh_cell2Ds_vertices,
1216 const std::vector<Eigen::Vector3d> &mesh_cell2Ds_normal,
1217 const std::vector<Eigen::MatrixXd> &mesh_cell2Ds_2D_vertices,
1218 const std::vector<Eigen::Vector3d> &mesh_cell2Ds_translation,
1219 const std::vector<Eigen::Matrix3d> &mesh_cell2Ds_rotation_matrix,
1220 const std::vector<Eigen::MatrixXd> &mesh_cell2Ds_boudingBox,
1221 const std::vector<Eigen::MatrixXd> &mesh_cell3Ds_boudingBox,
1222 const std::vector<std::vector<Eigen::MatrixXi>> &mesh_cell3Ds_faces,
1223 const std::vector<std::vector<Eigen::MatrixXd>> &mesh_cell3Ds_faces_vertices,
1224 const std::vector<std::vector<Eigen::MatrixXd>> &mesh_cell3Ds_faces_2D_vertices,
1225 const std::vector<std::vector<Eigen::Vector3d>> &mesh_cell3Ds_faces_normal,
1226 const std::vector<std::vector<bool>> &mesh_cell3Ds_faces_normal_directions,
1227 const std::vector<std::vector<Eigen::Vector3d>> &mesh_cell3Ds_faces_translation,
1228 const std::vector<std::vector<Eigen::Matrix3d>> &mesh_cell3Ds_faces_rotation_matrix) const;
1229
1230 void SetPolygonMeshMarkers(const Gedim::GeometryUtilities &geometryUtilities,
1231 const Eigen::MatrixXd &polygonVertices,
1232 const std::vector<unsigned int> &cell0DMarkers,
1233 const std::vector<unsigned int> &cell1DMarkers,
1234 Gedim::IMeshDAO &mesh) const;
1235
1237 const Gedim::GeometryUtilities &geometryUtilities,
1238 const Gedim::IMeshDAO &mesh,
1239 const MeshGeometricData2D &geometricData) const;
1240
1242 const Eigen::MatrixXd &interface_vertices,
1243 Gedim::IMeshDAO &mesh) const;
1244
1245 bool CollapseCell1D(const unsigned int cell1D_index, Gedim::IMeshDAO &mesh) const;
1246
1248 const std::vector<Gedim::GeometryUtilities::Polyhedron> &polyhedra,
1249 Gedim::IMeshDAO &mesh) const;
1250};
1251
1252} // namespace Gedim
1253
1254#endif // __MeshUtilities_H
Eigen column vector.
Definition Eigen_Array.hpp:23
The GeometryUtilities class intersects 3D segments.
Definition GeometryUtilities.hpp:37
The IMeshDAO (mesh data access object) class to read and write mesh data.
Definition IMeshDAO.hpp:24
MeshUtilities.
Definition MeshUtilities.hpp:23
void ExportMeshToWavefrontOBJ(const Gedim::IMeshDAO &mesh, const std::string &offFilePath) const
Export 2D mesh to OBJ file.
Definition MeshUtilities.cpp:237
void ComputeCell1DCell2DNeighbours(Gedim::IMeshDAO &mesh) const
Compute Cell1D Cell2DNeighbours with given mesh data.
Definition MeshUtilities2D.cpp:1184
MeshGeometricData3D FillMesh3DGeometricData(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &convexMesh) const
Fill Mesh3D Geometric Data given a mesh with convex mesh cells.
Definition MeshUtilities3D.cpp:885
void CreateDistortedQuadrilaterals(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const unsigned int &numQuadrilateralsBaseTangent, const unsigned int &numQuadrilateralsHeightTangent, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:1701
void CreateParallelepipedMesh(const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleLengthTangent, const Eigen::Vector3d &rectangleHeightTangent, const Eigen::Vector3d &rectangleWidthTangent, const std::vector< double > &lengthMeshCurvilinearCoordinates, const std::vector< double > &heightMeshCurvilinearCoordinates, const std::vector< double > &widthMeshCurvilinearCoordinates, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:1826
void ComputeCell0DCell1DNeighbours(Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:1094
void ExtractActiveMesh(Gedim::IMeshDAO &mesh, Gedim::MeshUtilities::ExtractActiveMeshData &extractionData) const
Extract Active Cells from mesh.
Definition MeshUtilities.cpp:52
Gedim::MeshUtilities::AgglomerationInformation ImportAgglomerationInformationFromOFF(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &originalMesh, const Gedim::IMeshDAO &agglomeratedMesh, const std::string &fileName, const char &separator) const
Import Agglomeration mesh Information From file OFF.
Definition MeshUtilities2D.cpp:1738
void CreateRandomlyDeformedQuadrilaterals(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const unsigned int &numQuadrilateralsBaseTangent, const unsigned int &numQuadrilateralsHeightTangent, const double &maxDeformingPercentageBase, const double &maxDeformingPercentageHeight, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:1571
void ChangePolygonMeshMarkers(const Eigen::MatrixXd &polygonVertices, const std::vector< unsigned int > &cell0DMarkers, const std::vector< unsigned int > &cell1DMarkers, Gedim::IMeshDAO &mesh) const
Change Polygon Mesh Markers from { 1, 2, 3, 4, ..., numVertices } for cell0Ds and { 5,...
Definition MeshUtilities2D.cpp:2016
~MeshUtilities()
Definition MeshUtilities.hpp:416
void FillMesh2D(const Eigen::MatrixXd &cell0Ds, const Eigen::MatrixXi &cell1Ds, const std::vector< Eigen::MatrixXi > &cell2Ds, Gedim::IMeshDAO &mesh) const
Fill a Mesh 2D with vertices, edges and polygons.
Definition MeshUtilities2D.cpp:23
Gedim::GeometryUtilities::Polyhedron MeshCell3DToPolyhedron(const Gedim::IMeshDAO &mesh, const unsigned int &cell3DIndex) const
Convert a mesh cell3D to a geometric polydheron.
Definition MeshUtilities3D.cpp:2411
Gedim::MeshUtilities::FilterMeshData FilterMesh2D(const std::vector< unsigned int > &cell2DsFilter, const Gedim::IMeshDAO &mesh) const
Extract mesh2D cells from a mesh.
Definition MeshUtilities2D.cpp:76
MeshGeometricData1D FillMesh1DGeometricData(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &convexMesh) const
Fill Mesh1D Geometric Data given a mesh with convex mesh cells.
Definition MeshUtilities1D.cpp:145
void SetMeshMarkersOnPolygon(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &polygon_plane_normal, const Eigen::Vector3d &polygon_plane_origin, const Eigen::MatrixXd &polygon_vertices_2D, const Eigen::Vector3d &polygon_translation, const Eigen::Matrix3d &polygon_rotation_matrix, const unsigned int &marker, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:743
void ComputeCell0DCell2DNeighbours(Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:1124
Gedim::MeshUtilities::AgglomerateMeshFromTriangularMeshResult AgglomerateMeshFromTriangularMesh(const std::vector< std::vector< unsigned int > > &trianglesIndicesToAgglomerate, Gedim::IMeshDAO &triangularMesh) const
Definition MeshUtilities2D.cpp:1468
void ExportMeshToCsv(const Gedim::IMeshDAO &mesh, const char &separator, const std::string &exportFolderPath) const
Export mesh to csv file.
Definition MeshUtilities.cpp:1114
void CreateTetrahedralMesh(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const double &maxTetrahedronVolume, Gedim::IMeshDAO &mesh, const std::string &options="Qpqfezna") const
Create tetrahedral mesh on 3D polyhedron.
MeshUtilities()
Definition MeshUtilities.hpp:415
Gedim::MeshUtilities::FilterMeshData FilterMesh3D(const std::vector< unsigned int > &cell3DsFilter, const Gedim::IMeshDAO &mesh) const
Extract mesh3D cells from a mesh.
Definition MeshUtilities3D.cpp:2840
MeshGeometricData2D ImportMeshGeometricData2DFromTxt(const std::string &file_path)
Definition MeshUtilities2D.cpp:1035
void ChangePolyhedronMeshMarkers(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::MatrixXd &polyhedron_vertices, const Eigen::MatrixXi &polyhedron_edges, const std::vector< Eigen::MatrixXi > &polyhedron_faces, const Eigen::MatrixXd &polyhedron_edges_tangent, const Eigen::VectorXd &polyhedron_edges_length, const std::vector< Eigen::Vector3d > &polyhedron_faces_normal, const std::vector< Eigen::MatrixXd > &polyhedron_faces_vertices, const std::vector< Eigen::MatrixXd > &polyhedron_faces_vertices_2D, const std::vector< Eigen::Vector3d > &polyhedron_faces_translation, const std::vector< Eigen::Matrix3d > &polyhedron_faces_rotation_matrix, const std::vector< unsigned int > &polyhedron_vertices_marker, const std::vector< unsigned int > &polyhedron_edges_marker, const std::vector< unsigned int > &polyhedron_faces_marker, const std::vector< Eigen::Vector3d > &cell1Ds_centroid, const std::vector< Eigen::Vector3d > &cell2Ds_centroid, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:3126
Gedim::MeshUtilities::FindPointMeshPositionResult FindPointMeshPosition(const MeshUtilities::FindPointCell2DResult &find_cell2D_result, const Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:2431
void CreateQuadrilateralMeshFromTriangularMesh(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &triangular_mesh, Gedim::IMeshDAO &mesh) const
Create a quadrilateral mesh starting from a triangular mesh: the mesh is created by dividing triangle...
Definition MeshUtilities_MeshGenerators.cpp:2198
std::vector< unsigned int > FindCell2DsCommonVertices(const std::vector< unsigned int > &cell2DsIndex, const Gedim::IMeshDAO &mesh) const
Given a set of Cell2Ds find the common Cell0Ds.
Definition MeshUtilities2D.cpp:1318
MeshUtilities::VTPPolyhedron MeshCell3DToVTPPolyhedron(const Gedim::IMeshDAO &mesh, const unsigned int &cell3DIndex) const
Convert a mesh cell3D to a VTP polydheron.
Definition MeshUtilities3D.cpp:2452
void ExportCell2DToVTU(const Gedim::IMeshDAO &mesh, const unsigned int &cell2DIndex, const Eigen::MatrixXd &cell2DVertices, const std::vector< Eigen::Matrix3d > &cell2DTriangulations, const double &cell2DArea, const Eigen::Vector3d &cell2DCentroid, const std::string &exportFolder) const
Export Cell2D To VTU.
Definition MeshUtilities.cpp:772
void CheckMeshGeometricData2D(const Gedim::MeshUtilities::CheckMeshGeometricData2DConfiguration &configuration, const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &mesh, const MeshGeometricData2D &geometricData) const
Definition MeshUtilities2D.cpp:415
void SetMeshMarkersOnSegment(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &segment_origin, const Eigen::Vector3d &segment_tangent, const double &segment_tangent_squared_length, const unsigned int &marker, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:589
void CheckMesh2D(const Gedim::MeshUtilities::CheckMesh2DConfiguration &configuration, const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &convexMesh) const
Check Mesh2D correctness.
Definition MeshUtilities2D.cpp:269
void SetMeshMarkersOnPlane(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin, const unsigned int &marker, Gedim::IMeshDAO &mesh) const
Set the marker on all the mesh 3D elements laying on the plane.
Definition MeshUtilities3D.cpp:649
Gedim::MeshUtilities::ExtractMeshData ExtractMesh3D(const std::vector< unsigned int > &cell0DsFilter, const std::vector< unsigned int > &cell1DsFilter, const std::vector< unsigned int > &cell2DsFilter, const std::vector< unsigned int > &cell3DsFilter, const Gedim::IMeshDAO &originalMesh, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:2888
Gedim::MeshUtilities::AgglomerateCell1DInformation AgglomerateCell1Ds(const std::unordered_set< unsigned int > &cell1DsIndex, const Gedim::IMeshDAO &mesh) const
Definition MeshUtilities1D.cpp:293
Gedim::MeshUtilities::ComputeMesh2DCell1DsResult ComputeMesh2DCell1Ds(const Eigen::MatrixXd &cell0Ds, const std::vector< Eigen::VectorXi > &cell2Ds) const
Compute edges in a Mesh 2D with vertices and polygons.
Definition MeshUtilities2D.cpp:195
std::vector< unsigned int > SplitCell3D(const unsigned int &cell3DIndex, const std::vector< std::vector< unsigned int > > &subCell3DsVertices, const std::vector< std::vector< unsigned int > > &subCell3DsEdges, const std::vector< std::vector< unsigned int > > &subCell3DsFaces, Gedim::IMeshDAO &mesh) const
Split cell3D into subcells.
Definition MeshUtilities3D.cpp:2481
Gedim::MeshUtilities::Intersect_mesh_polyhedron_result Intersect_mesh_polyhedron(const Gedim::GeometryUtilities &geometry_utilities, const Eigen::MatrixXd &polyhedron_vertices, const Eigen::MatrixXi &polyhedron_edges, const std::vector< Eigen::MatrixXd > &polyhedron_edges_vertices, const Eigen::MatrixXd &polyhedron_edges_tangent, const std::vector< Eigen::MatrixXd > &polyhedron_edges_boudingBox, const std::vector< Eigen::MatrixXi > &polyhedron_faces, const std::vector< Eigen::MatrixXd > &polyhedron_faces_vertices, const std::vector< Eigen::MatrixXd > &polyhedron_faces_rotated_vertices, const std::vector< Eigen::Vector3d > &polyhedron_faces_normals, const std::vector< bool > &polyhedron_faces_normal_direction, const std::vector< Eigen::Vector3d > &polyhedron_faces_translation, const std::vector< Eigen::Matrix3d > &polyhedron_faces_rotation_matrix, const std::vector< Eigen::MatrixXd > &polyhedron_faces_boudingBox, const Eigen::MatrixXd &polyhedron_boudingBox, const Gedim::IMeshDAO &mesh, const std::vector< Eigen::MatrixXd > &mesh_cell1Ds_boudingBox, const std::vector< Eigen::MatrixXd > &mesh_cell1Ds_vertices, const std::vector< Eigen::Vector3d > &mesh_cell1Ds_tangent, const std::vector< Eigen::MatrixXd > &mesh_cell2Ds_vertices, const std::vector< Eigen::Vector3d > &mesh_cell2Ds_normal, const std::vector< Eigen::MatrixXd > &mesh_cell2Ds_2D_vertices, const std::vector< Eigen::Vector3d > &mesh_cell2Ds_translation, const std::vector< Eigen::Matrix3d > &mesh_cell2Ds_rotation_matrix, const std::vector< Eigen::MatrixXd > &mesh_cell2Ds_boudingBox, const std::vector< Eigen::MatrixXd > &mesh_cell3Ds_boudingBox, const std::vector< std::vector< Eigen::MatrixXi > > &mesh_cell3Ds_faces, const std::vector< std::vector< Eigen::MatrixXd > > &mesh_cell3Ds_faces_vertices, const std::vector< std::vector< Eigen::MatrixXd > > &mesh_cell3Ds_faces_2D_vertices, const std::vector< std::vector< Eigen::Vector3d > > &mesh_cell3Ds_faces_normal, const std::vector< std::vector< bool > > &mesh_cell3Ds_faces_normal_directions, const std::vector< std::vector< Eigen::Vector3d > > &mesh_cell3Ds_faces_translation, const std::vector< std::vector< Eigen::Matrix3d > > &mesh_cell3Ds_faces_rotation_matrix) const
Definition MeshUtilities_Intersect_mesh_polyhedron.cpp:19
void ImportWavefrontOBJ(const std::string &offFilePath, Gedim::IMeshDAO &mesh) const
Import 2D mesh from OBJ file.
Definition MeshUtilities.cpp:231
void SetMeshMarkersByFaceNormal(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &normal, const std::vector< Eigen::Vector3d > &cell2Ds_normal, const unsigned int &marker, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:699
Gedim::MeshUtilities::AgglomerateCell3DInformation AgglomerateCell3Ds(const std::unordered_set< unsigned int > &cell3DsIndex, const Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:2557
void FillMesh3D(const Eigen::MatrixXd &cell0Ds, const Eigen::MatrixXi &cell1Ds, const std::vector< Eigen::MatrixXi > &cell2Ds, const std::vector< Mesh3DPolyhedron > &cell3Ds, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:24
void ComputeCell0DCell3DNeighbours(Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:1154
void ImportRegnFaceMesh(const Gedim::GeometryUtilities &geometry_utilities, const std::string &node_file_path, const std::string &ele_file_path, IMeshDAO &mesh) const
Import regn_face 3D mesh (non standard polyhedral format)
Definition MeshUtilities_ImportRegnFaceMesh.cpp:18
void ExportCell3DToVTU(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &mesh, const unsigned int &cell3DIndex, const Eigen::MatrixXd &cell3DVertices, const std::vector< Eigen::MatrixXd > &cell3DTetrahedrons, const std::vector< std::vector< Eigen::Matrix3d > > &cell3DFaces3DTriangulations, const double &cell3DVolume, const Eigen::Vector3d &cell3DCentroid, const std::vector< Eigen::Vector3d > &cell3DFacesTranslation, const std::vector< Eigen::Matrix3d > &cell3DFacesRotationMatrix, const std::vector< double > &cell3DFacesArea, const std::vector< Eigen::MatrixXd > &cell3DFaces2DVertices, const std::vector< Eigen::MatrixXd > &cell3DFaces3DVertices, const std::vector< Eigen::VectorXd > &cell3DFacesEdgeLengths, const std::vector< std::vector< bool > > &cell3DFacesEdgeDirections, const std::vector< Eigen::MatrixXd > &cell3DFacesEdges2DTangent, const std::vector< Eigen::MatrixXd > &cell3DFacesEdges2DNormal, const std::vector< Eigen::Vector3d > &cell3DFacesNormals, const std::vector< bool > &cell3DFacesNormalDirections, const std::vector< Eigen::Vector3d > &cell3DFaces2DCentroids, const std::string &exportFolder) const
Definition MeshUtilities.cpp:819
void ImportObjectFileFormat(const std::string &offFilePath, Gedim::IMeshDAO &mesh) const
Import 2D mesh from OFF file.
Definition MeshUtilities.cpp:219
std::vector< unsigned int > FindCell2DsCommonEdges(const std::vector< unsigned int > &cell2DsIndex, const Gedim::IMeshDAO &mesh) const
Given a set of Cell2Ds find the common Cell1Ds.
Definition MeshUtilities2D.cpp:1371
std::vector< unsigned int > MeshCell2DRoots(const Gedim::IMeshDAO &mesh) const
Extract the mesh Cell2D Roots.
Definition MeshUtilities2D.cpp:639
void CreateTriangularMesh(const Eigen::MatrixXd &polygonVertices, const double &maxTriangleArea, Gedim::IMeshDAO &mesh, const std::string &options="-QDzpqnea") const
Create triangular mesh on 2D polygon.
Definition MeshUtilities_MeshGenerators.cpp:2176
void CreateRectangleMesh(const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const std::vector< double > &baseMeshCurvilinearCoordinates, const std::vector< double > &heightMeshCurvilinearCoordinates, Gedim::IMeshDAO &mesh) const
Crete rectange Mesh on rectangle base x height.
Definition MeshUtilities_MeshGenerators.cpp:27
void CreateStructuredTriangularMesh(const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const std::vector< double > &baseMeshCurvilinearCoordinates, const std::vector< double > &heightMeshCurvilinearCoordinates, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:142
void ExportMeshGeometricData1DToTxt(const MeshGeometricData1D &mesh_geometric_data, const std::string &file_path)
Definition MeshUtilities1D.cpp:199
void CreateRectanglePlusHangingNodesMesh(const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const std::vector< double > &baseMeshCurvilinearCoordinates, const std::vector< double > &heightMeshCurvilinearCoordinates, const std::vector< unsigned int > &numberOfAddedVerticesForEachRectangle, const Gedim::GeometryUtilities &geometryUtilities, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:1040
void CreatePolygonalMesh(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::MatrixXd &polygonVertices, const unsigned int numPoints, const unsigned int numIterations, Gedim::IMeshDAO &mesh, const unsigned int random_seed=0) const
Definition MeshUtilities_MeshGenerators.cpp:2186
bool CollapseCell1D(const unsigned int cell1D_index, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities1D.cpp:482
void ComputeCell2DCell3DNeighbours(Gedim::IMeshDAO &mesh) const
Compute Cell2D Cell3DNeighbours with given mesh data.
Definition MeshUtilities3D.cpp:2381
void CreatePolygonIntersectionMesh(const Gedim::GeometryUtilities &geometry_utilities, const Eigen::MatrixXd &interface_vertices, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_Intersect_mesh_polygon.cpp:18
Gedim::MeshUtilities::FindPointCell2DResult FindPointCell2D(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &point, const Gedim::IMeshDAO &mesh, const std::vector< Eigen::MatrixXd > &cell2DsVertices, const std::vector< Eigen::MatrixXd > &cell2DsBoundingBox, const bool find_only_first_cell2D=true, const unsigned int starting_cell2D_index=0) const
Definition MeshUtilities2D.cpp:2388
Gedim::MeshUtilities::ExtractMeshData ExtractMesh2D(const std::vector< unsigned int > &cell0DsFilter, const std::vector< unsigned int > &cell1DsFilter, const std::vector< unsigned int > &cell2DsFilter, const Gedim::IMeshDAO &originalMesh, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:112
void SetMeshMarkersOnLine(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &lineTangent, const double &lineTangentSquaredLength, const unsigned int &marker, Gedim::IMeshDAO &mesh) const
Set the marker on all the mesh 2D elements laying on the line.
Definition MeshUtilities2D.cpp:559
MeshGeometricData1D ImportMeshGeometricData1DFromTxt(const std::string &file_path)
Definition MeshUtilities1D.cpp:177
Gedim::MeshUtilities::FilterMeshData FilterActiveMesh(const Gedim::IMeshDAO &mesh) const
Definition MeshUtilities.cpp:149
void Mesh2DFromPolygon(const Eigen::MatrixXd &polygonVertices, const std::vector< unsigned int > vertexMarkers, const std::vector< unsigned int > edgeMarkers, Gedim::IMeshDAO &mesh) const
Create a Mesh 2D with a polygon.
Definition MeshUtilities2D.cpp:500
void CreatePolyhedralMesh(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const unsigned int numPoints, const unsigned int numIterations, Gedim::IMeshDAO &mesh, const unsigned int random_seed=0) const
Definition MeshUtilities_MeshGenerators.cpp:2357
Gedim::MeshUtilities::ExtractMeshData ExtractMesh1D(const std::vector< unsigned int > &cell0DsFilter, const std::vector< unsigned int > &cell1DsFilter, const Gedim::IMeshDAO &originalMesh, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities1D.cpp:83
void CreateDelaunayMesh3D(const Eigen::MatrixXd &points, const std::vector< unsigned int > &points_marker, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:2348
void ExportMeshToObjectFileFormat(const Gedim::IMeshDAO &mesh, const std::string &offFilePath) const
Export 2D mesh to OFF file.
Definition MeshUtilities.cpp:225
void ExportMeshToVTU(const Gedim::IMeshDAO &mesh, const std::string &exportFolder, const std::string &fileName, const bool &separateFile=false) const
Export Mesh To VTU.
Definition MeshUtilities.cpp:243
void SetPolygonMeshMarkers(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::MatrixXd &polygonVertices, const std::vector< unsigned int > &cell0DMarkers, const std::vector< unsigned int > &cell1DMarkers, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:2048
void SetMesh3DMarker(const unsigned int marker, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_ImportRegnFaceMesh.cpp:342
void FixCell2DsOrientation(const Gedim::GeometryUtilities &geometryUtilities, IMeshDAO &mesh) const
Definition MeshUtilities_ImportRegnFaceMesh.cpp:284
Gedim::MeshUtilities::FindConcaveCell3DFacesConvexCell2DResult FindConcaveCell3DFacesConvexCell2D(const Gedim::GeometryUtilities &geometryUtilities, const unsigned int &concaveCell3DIndex, const Gedim::IMeshDAO &mesh, const Gedim::IMeshDAO &convexMesh, const std::vector< unsigned int > &convexCell3DIndices, const std::vector< Eigen::MatrixXd > &concaveCell3DFaces3DVertices, const std::vector< Eigen::MatrixXd > &concaveCell3DFaces2DVertices, const std::vector< Eigen::Vector3d > &concaveCell3DFacesTranslation, const std::vector< Eigen::Matrix3d > &concaveCell3DFacesRotationMatrix, const std::vector< Eigen::Vector3d > &concaveCell3DFacesNormal, const std::vector< std::vector< Eigen::MatrixXd > > &convexCell3DsFaces3DVertices, const std::vector< std::vector< std::vector< unsigned int > > > &convexCell3DsFacesUnalignedVertices) const
Definition MeshUtilities3D.cpp:1977
void FillMesh1D(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentTangent, const std::vector< double > &coordinates, Gedim::IMeshDAO &mesh) const
Fill Mesh 1D From segment Coordinates.
Definition MeshUtilities1D.cpp:22
void ImportOpenVolumeMesh(const std::string &ovmFilePath, Gedim::IMeshDAO &mesh, std::vector< std::vector< bool > > &meshCell3DsFacesOrientation) const
Import 3D mesh from OVM file.
Definition MeshUtilities.cpp:186
void MakeMeshTriangularFaces(const std::vector< std::vector< unsigned int > > &faces_triangulation, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities3D.cpp:3005
void CheckMeshGeometricData3D(const Gedim::MeshUtilities::CheckMeshGeometricData3DConfiguration &configuration, const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &mesh, const Gedim::MeshUtilities::MeshGeometricData3D &geometricData) const
Check MeshGeometricData3D correctness.
Definition MeshUtilities3D.cpp:350
std::vector< unsigned int > MarkCells(const std::function< Eigen::VectorXi(const Eigen::MatrixXd &)> &marking_function, const std::vector< Eigen::MatrixXd > &cells_points, const unsigned int default_mark) const
Definition MeshUtilities.cpp:1125
Gedim::MeshUtilities::AgglomerateCell2DInformation AgglomerateCell2Ds(const Gedim::GeometryUtilities &geometryUtilities, const std::unordered_set< unsigned int > &cell2DsIndex, const Gedim::IMeshDAO &mesh) const
Definition MeshUtilities2D.cpp:2117
void CheckMesh3D(const Gedim::MeshUtilities::CheckMesh3DConfiguration &configuration, const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &mesh) const
Check Mesh3D correctness.
Definition MeshUtilities3D_CheckMesh.cpp:22
std::vector< unsigned int > SplitCell1D(const unsigned int &cell1DIndex, const Eigen::MatrixXi subCell1Ds, Gedim::IMeshDAO &mesh) const
Split cell2D into subcells.
Definition MeshUtilities1D.cpp:220
Gedim::MeshUtilities::AgglomerateTrianglesResult AgglomerateTriangles(const std::vector< unsigned int > &trianglesIndexToAgglomerate, Gedim::IMeshDAO &triangularMesh) const
Agglomerate Triangles with one vertex in common.
Definition MeshUtilities2D.cpp:1401
void ExportMeshToOpenVolume(const Gedim::IMeshDAO &mesh, const std::vector< std::vector< bool > > &meshCell3DsFacesOrientation, const std::string &ovmFilePath) const
Export 3D mesh to OVM file.
Definition MeshUtilities.cpp:194
MeshGeometricData2D FillMesh2DGeometricData(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &convexMesh) const
Fill Mesh2D Geometric Data given a mesh with convex mesh cells.
Definition MeshUtilities2D.cpp:655
void ExportConcaveMesh2DToCsv(const Gedim::IMeshDAO &mesh, const std::vector< std::vector< unsigned int > > &convexCell2DsIndex, const char &separator, const std::string &exportFolderPath) const
Export 2D concave mesh to csv file.
Definition MeshUtilities2D.cpp:1969
std::vector< unsigned int > SplitCell2D(const unsigned int &cell2DIndex, const std::vector< Eigen::MatrixXi > &subCell2Ds, Gedim::IMeshDAO &mesh) const
Split cell2D into subcells.
Definition MeshUtilities2D.cpp:1249
void ExportMeshGeometricData2DToTxt(const MeshGeometricData2D &mesh_geometric_data, const std::string &file_path)
Definition MeshUtilities2D.cpp:1065
Gedim::MeshUtilities::FindPointCell3DResult FindPointCell3D(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::Vector3d &point, const Gedim::IMeshDAO &mesh, const std::vector< std::vector< Eigen::MatrixXi > > &cell3DsFaces, const std::vector< std::vector< Eigen::MatrixXd > > &cell3DsFaceVertices, const std::vector< std::vector< Eigen::MatrixXd > > &cell3DsFaceRotatedVertices, const std::vector< std::vector< Eigen::Vector3d > > &cell3DsFaceNormals, const std::vector< std::vector< bool > > &cell3DsFaceNormalDirections, const std::vector< std::vector< Eigen::Vector3d > > &cell3DsFaceTranslations, const std::vector< std::vector< Eigen::Matrix3d > > &cell3DsFaceRotationMatrices, const std::vector< Eigen::MatrixXd > &cell3DsBoundingBox, const bool find_only_first_cell3D=true, const unsigned int starting_cell3D_index=0) const
Definition MeshUtilities3D.cpp:2233
void ImportTriangularMesh(const Gedim::GeometryUtilities &geometry_utilities, const std::string &cell0Ds_file_path, const std::string &cell2Ds_file_path, const std::string &marker_file_path, const char separator, Gedim::IMeshDAO &mesh) const
Import triangular 2D mesh (non standard simple format)
Definition MeshUtilities_ImportTriangularMesh.cpp:18
void CreateTrianglePlusHangingNodesMesh(const Eigen::Vector3d &rectangleOrigin, const Eigen::Vector3d &rectangleBaseTangent, const Eigen::Vector3d &rectangleHeightTangent, const std::vector< double > &baseMeshCurvilinearCoordinates, const std::vector< double > &heightMeshCurvilinearCoordinates, const std::vector< unsigned int > &numberOfAddedVerticesForEachRectangle, const Gedim::GeometryUtilities &geometryUtilities, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_MeshGenerators.cpp:286
Gedim::MeshUtilities::FilterMeshData FilterMesh1D(const std::vector< unsigned int > &cell1DsFilter, const Gedim::IMeshDAO &mesh) const
Extract mesh1D cells from a mesh.
Definition MeshUtilities1D.cpp:53
Gedim::MeshUtilities::AgglomerationInformation ImportAgglomerationInformationFromCsv(const Gedim::GeometryUtilities &geometryUtilities, const Gedim::IMeshDAO &originalMesh, const Gedim::IMeshDAO &agglomeratedMesh, const std::string &fileName, const char &separator) const
Import Agglomeration mesh Information From file Csv.
Definition MeshUtilities2D.cpp:1526
Gedim::MeshUtilities::ComputeMesh3DAlignedCell1DsResult ComputeMesh3DAlignedCell1Ds(const std::vector< std::vector< std::vector< unsigned int > > > &cell3DsAlignedEdgesVertices, const std::vector< std::vector< std::vector< unsigned int > > > &cell3DsAlignedEdgesEdges, const Gedim::IMeshDAO &mesh) const
Compute edges in a Mesh 2D with vertices and polygons.
Definition MeshUtilities3D.cpp:220
MeshGeometricData3D ImportMeshGeometricData3DFromTxt(const std::string &file_path)
Definition MeshUtilities3D.cpp:1880
void ImportVtkMesh3D(const std::string &vtkFilePath, Gedim::IMeshDAO &mesh) const
Import 3D mesh from VTK file.
Definition MeshUtilities.cpp:202
void Mesh3DFromPolyhedron(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< unsigned int > vertexMarkers, const std::vector< unsigned int > edgeMarkers, const std::vector< unsigned int > faceMarkers, Gedim::IMeshDAO &mesh) const
Create a Mesh 3D with a polyhedron.
Definition MeshUtilities3D.cpp:565
void ExportMeshGeometricData3DToTxt(const MeshGeometricData3D &mesh_geometric_data, const std::string &file_path)
Definition MeshUtilities3D.cpp:1929
void Mesh1DFromSegment(const Gedim::GeometryUtilities &geometryUtilities, const Eigen::MatrixXd &segmentVertices, const std::vector< unsigned int > vertexMarkers, Gedim::IMeshDAO &mesh) const
Create a Mesh 1D with a segment.
Definition MeshUtilities1D.cpp:134
void ComputeCell1DCell3DNeighbours(Gedim::IMeshDAO &mesh) const
Compute Cell1D Cell3DNeighbours with given mesh data.
Definition MeshUtilities3D.cpp:2351
void ExportMeshToUCD(const Gedim::IMeshDAO &mesh, const std::string &exportFolder, const std::string &fileName, const bool &separateFile=false) const
Export Mesh To UCD.
Definition MeshUtilities.cpp:424
void Mesh3DFromPolyhedra(const Gedim::GeometryUtilities &geometry_utilities, const std::vector< Gedim::GeometryUtilities::Polyhedron > &polyhedra, Gedim::IMeshDAO &mesh) const
Definition MeshUtilities_Mesh3DFromPolyhedra.cpp:17
void ExportMeshToMEDIT(const Gedim::IMeshDAO &mesh, const std::string &exportFolder, const std::string &fileName, const bool &separateFile=false, const unsigned int &order=1) const
Export Mesh To MEDIT.
Definition MeshUtilities.cpp:620
Definition Eigen_Array.cpp:22
Definition GeometryUtilities.hpp:596
Definition GeometryUtilities.hpp:677
std::vector< unsigned int > SubCell1DsRemovedVertices
Definition MeshUtilities.hpp:292
std::vector< unsigned int > AgglomerateCell1DVertices
Definition MeshUtilities.hpp:291
std::vector< unsigned int > SubCell2DsRemovedEdges
Definition MeshUtilities.hpp:300
std::vector< unsigned int > AgglomerateCell2DEdges
Definition MeshUtilities.hpp:298
std::vector< unsigned int > SubCell2DsRemovedVertices
Definition MeshUtilities.hpp:299
std::vector< unsigned int > AgglomerateCell2DVertices
Definition MeshUtilities.hpp:297
std::vector< unsigned int > SubCell3DsRemovedEdges
Definition MeshUtilities.hpp:309
std::vector< unsigned int > AgglomerateCell3DFaces
Definition MeshUtilities.hpp:307
std::vector< unsigned int > AgglomerateCell3DVertices
Definition MeshUtilities.hpp:305
std::vector< unsigned int > AgglomerateCell3DEdges
Definition MeshUtilities.hpp:306
std::vector< unsigned int > SubCell3DsRemovedFaces
Definition MeshUtilities.hpp:310
std::vector< unsigned int > SubCell3DsRemovedVertices
Definition MeshUtilities.hpp:308
std::vector< unsigned int > ConvexCell2DsIndex
Definition MeshUtilities.hpp:271
std::vector< Gedim::MeshUtilities::AgglomerateMeshFromTriangularMeshResult::ConcaveCell2D > ConcaveCell2Ds
Definition MeshUtilities.hpp:274
std::vector< unsigned int > RemovedCell2Ds
Definition MeshUtilities.hpp:276
std::vector< unsigned int > RemovedCell1Ds
Definition MeshUtilities.hpp:275
Definition MeshUtilities.hpp:260
std::vector< unsigned int > RemovedEdges
Definition MeshUtilities.hpp:261
std::vector< unsigned int > EdgesIndex
Definition MeshUtilities.hpp:263
std::vector< unsigned int > VerticesIndex
Definition MeshUtilities.hpp:262
Definition MeshUtilities.hpp:280
std::vector< unsigned int > OriginalCell1DToAgglomeratedCell1Ds
Definition MeshUtilities.hpp:282
std::vector< unsigned int > AgglomeratedCell0DToOriginalCell0Ds
Definition MeshUtilities.hpp:284
std::vector< unsigned int > OriginalCell2DToAgglomeratedCell2Ds
Definition MeshUtilities.hpp:283
std::vector< unsigned int > OriginalCell0DToAgglomeratedCell0Ds
Definition MeshUtilities.hpp:281
std::vector< std::vector< unsigned int > > AgglomeratedCell2DToOriginalCell2Ds
Definition MeshUtilities.hpp:286
std::vector< std::vector< unsigned int > > AgglomeratedCell1DToOriginalCell1Ds
Definition MeshUtilities.hpp:285
Definition MeshUtilities.hpp:26
bool Cell0D_CheckDuplications
Definition MeshUtilities.hpp:28
bool Cell2D_CheckConvexity
Definition MeshUtilities.hpp:34
bool Cell1D_CheckNeighbours
Definition MeshUtilities.hpp:30
bool Cell1D_CheckMeasure
Definition MeshUtilities.hpp:31
bool Cell0D_CheckCoordinates2D
Definition MeshUtilities.hpp:27
bool Cell1D_CheckDuplications
Definition MeshUtilities.hpp:29
bool Cell2D_CheckDuplications
Definition MeshUtilities.hpp:33
bool Cell2D_CheckEdges
Definition MeshUtilities.hpp:32
bool Cell2D_CheckMeasure
Definition MeshUtilities.hpp:35
Definition MeshUtilities.hpp:39
bool Cell3D_CheckMeasure
Definition MeshUtilities.hpp:51
bool Cell3D_CheckEdgesAreActive
Definition MeshUtilities.hpp:49
bool Cell2D_CheckDuplications
Definition MeshUtilities.hpp:44
bool Cell1D_CheckDuplications
Definition MeshUtilities.hpp:41
bool Cell1D_CheckMeasure
Definition MeshUtilities.hpp:42
bool Cell3D_CheckFaces
Definition MeshUtilities.hpp:52
bool Cell2D_CheckEdges
Definition MeshUtilities.hpp:43
bool Cell2D_CheckMeasure
Definition MeshUtilities.hpp:46
bool Cell3D_CheckConvexity
Definition MeshUtilities.hpp:50
bool Cell3D_CheckEdges
Definition MeshUtilities.hpp:48
bool Cell2D_CheckConvexity
Definition MeshUtilities.hpp:45
bool Cell0D_CheckDuplications
Definition MeshUtilities.hpp:40
bool Cell3D_CheckDuplications
Definition MeshUtilities.hpp:47
bool Cell1D_CheckMeasure
Definition MeshUtilities.hpp:57
bool Cell2D_CheckTriangles
Definition MeshUtilities.hpp:60
unsigned int Cell1D_QuadratureOrder
Definition MeshUtilities.hpp:61
bool Cell1D_CheckNormals
Definition MeshUtilities.hpp:58
unsigned int Cell2D_QuadratureOrder
Definition MeshUtilities.hpp:62
bool Cell2D_CheckMeasure
Definition MeshUtilities.hpp:59
bool Cell3D_CheckMeasure
Definition MeshUtilities.hpp:72
bool Cell2D_CheckMeasure
Definition MeshUtilities.hpp:69
bool Cell2D_CheckTriangles
Definition MeshUtilities.hpp:70
bool Cell3D_CheckTetrahedra
Definition MeshUtilities.hpp:73
unsigned int Cell1D_QuadratureOrder
Definition MeshUtilities.hpp:74
bool Cell1D_CheckMeasure
Definition MeshUtilities.hpp:67
bool Cell1D_CheckNormals
Definition MeshUtilities.hpp:68
unsigned int Cell2D_QuadratureOrder
Definition MeshUtilities.hpp:75
unsigned int Cell3D_QuadratureOrder
Definition MeshUtilities.hpp:76
bool Cell2D_CheckNormals
Definition MeshUtilities.hpp:71
Definition MeshUtilities.hpp:120
std::vector< Eigen::MatrixXi > Cell2Ds
Cell1Ds vertices, size 2 x Cell1DTotalNumber()
Definition MeshUtilities.hpp:122
Eigen::MatrixXi Cell1Ds
Definition MeshUtilities.hpp:121
std::vector< Eigen::MatrixXi > Cell0DsAlignedCell1DsIndex
Definition MeshUtilities.hpp:130
Eigen::MatrixXi AlignedCell1Ds
Definition MeshUtilities.hpp:129
std::vector< std::vector< unsigned int > > AlignedCell1Ds_SubCell1Ds
Definition MeshUtilities.hpp:134
std::vector< std::vector< unsigned int > > AlignedCell1Ds_Cell3Ds
Definition MeshUtilities.hpp:135
std::vector< Eigen::MatrixXi > Cell1DsAlignedCell1DsIndex
Definition MeshUtilities.hpp:131
std::vector< Eigen::MatrixXi > Cell3DsAlignedCell1DsIndex
Definition MeshUtilities.hpp:132
std::vector< std::vector< unsigned int > > AlignedCell1Ds_SubCell0Ds
Definition MeshUtilities.hpp:133
Definition MeshUtilities.hpp:80
std::unordered_map< unsigned int, unsigned int > NewCell1DToOldCell1D
Cell1D index}.
Definition MeshUtilities.hpp:91
std::unordered_map< unsigned int, unsigned int > NewCell2DToOldCell2D
Cell2D index}.
Definition MeshUtilities.hpp:93
std::unordered_map< unsigned int, unsigned int > OldCell1DToNewCell1D
Cell1D index}.
Definition MeshUtilities.hpp:83
std::unordered_map< unsigned int, unsigned int > OldCell0DToNewCell0D
Cell0D index}.
Definition MeshUtilities.hpp:81
std::unordered_map< unsigned int, unsigned int > NewCell0DToOldCell0D
Cell0D index}.
Definition MeshUtilities.hpp:89
std::unordered_map< unsigned int, unsigned int > OldCell3DToNewCell3D
Cell3D index}.
Definition MeshUtilities.hpp:87
std::unordered_map< unsigned int, unsigned int > OldCell2DToNewCell2D
Cell2D index}.
Definition MeshUtilities.hpp:85
std::unordered_map< unsigned int, unsigned int > NewCell3DToOldCell3D
Cell3D index}.
Definition MeshUtilities.hpp:95
Definition MeshUtilities.hpp:108
std::vector< unsigned int > NewCell1DToOldCell1D
each element is [new Cell1D index] = old Cell1D index
Definition MeshUtilities.hpp:114
std::vector< unsigned int > NewCell3DToOldCell3D
each element is [new Cell3D index] = old Cell3D index
Definition MeshUtilities.hpp:116
std::vector< unsigned int > NewCell0DToOldCell0D
each element is [new Cell0D index] = old Cell0D index
Definition MeshUtilities.hpp:113
std::vector< unsigned int > OldCell1DToNewCell1D
each element is [old Cell1D index] = new Cell1D index
Definition MeshUtilities.hpp:110
std::vector< unsigned int > NewCell2DToOldCell2D
each element is [new Cell2D index] = old Cell2D index
Definition MeshUtilities.hpp:115
std::vector< unsigned int > OldCell3DToNewCell3D
each element is [old Cell3D index] = new Cell3D index
Definition MeshUtilities.hpp:112
std::vector< unsigned int > OldCell0DToNewCell0D
each element is [old Cell0D index] = new Cell0D index
Definition MeshUtilities.hpp:109
std::vector< unsigned int > OldCell2DToNewCell2D
each element is [old Cell2D index] = new Cell2D index
Definition MeshUtilities.hpp:111
Definition MeshUtilities.hpp:100
std::vector< unsigned int > Cell3Ds
Definition MeshUtilities.hpp:104
std::vector< unsigned int > Cell0Ds
Definition MeshUtilities.hpp:101
std::vector< unsigned int > Cell1Ds
Definition MeshUtilities.hpp:102
std::vector< unsigned int > Cell2Ds
Definition MeshUtilities.hpp:103
unsigned int ConvexCell3DFaceIndex
Definition MeshUtilities.hpp:318
std::vector< Gedim::MeshUtilities::FindConcaveCell3DFacesConvexCell2DResult::ConvexCell2D > ConcaveCell3DFacesConvexCell2D
Definition MeshUtilities.hpp:321
Gedim::GeometryUtilities::PointPolygonPositionResult Cell2D_Position
Definition MeshUtilities.hpp:357
unsigned int Cell2D_index
Definition MeshUtilities.hpp:356
Definition MeshUtilities.hpp:353
std::vector< Gedim::MeshUtilities::FindPointCell2DResult::PointCell2DFound > Cell2Ds_found
Definition MeshUtilities.hpp:360
Gedim::GeometryUtilities::PointPolyhedronPositionResult Cell3D_Position
Definition MeshUtilities.hpp:368
unsigned int Cell3D_index
Definition MeshUtilities.hpp:367
Definition MeshUtilities.hpp:364
std::vector< Gedim::MeshUtilities::FindPointCell3DResult::PointCell3DFound > Cell3Ds_found
Definition MeshUtilities.hpp:371
Gedim::MeshUtilities::FindPointMeshPositionResult::PointMeshPosition::Types Type
Definition MeshUtilities.hpp:345
unsigned int Cell_index
Definition MeshUtilities.hpp:346
std::vector< Gedim::MeshUtilities::FindPointMeshPositionResult::PointMeshPosition > MeshPositions
Definition MeshUtilities.hpp:349
std::map< unsigned int, std::vector< unsigned int > > Cell2Ds_intersections
Definition MeshUtilities.hpp:404
std::map< unsigned int, std::vector< unsigned int > > Cell3Ds_intersections
Definition MeshUtilities.hpp:405
std::map< unsigned int, unsigned int > Cell0Ds_intersections
Definition MeshUtilities.hpp:402
std::map< unsigned int, std::vector< unsigned int > > Cell1Ds_intersections
Definition MeshUtilities.hpp:403
std::vector< unsigned int > Cell3Ds_index
Definition MeshUtilities.hpp:397
std::vector< unsigned int > Cell1Ds_index
Definition MeshUtilities.hpp:395
std::vector< unsigned int > Cell0Ds_index
Definition MeshUtilities.hpp:394
std::vector< unsigned int > Cell2Ds_index
Definition MeshUtilities.hpp:396
Gedim::MeshUtilities::Intersect_mesh_polyhedron_result::Polyhedron_Intersection::Types Type
Definition MeshUtilities.hpp:392
Eigen::MatrixXd Intersections_Coordinates
Definition MeshUtilities.hpp:409
std::vector< Gedim::MeshUtilities::Intersect_mesh_polyhedron_result::Polyhedron_Intersection > Polyhedron_intersections
Definition MeshUtilities.hpp:410
Gedim::MeshUtilities::Intersect_mesh_polyhedron_result::Types Type
Definition MeshUtilities.hpp:408
Gedim::MeshUtilities::Intersect_mesh_polyhedron_result::Mesh_Intersections Mesh_intersections
Definition MeshUtilities.hpp:411
Definition MeshUtilities.hpp:325
std::vector< unsigned int > VerticesIndex
Definition MeshUtilities.hpp:326
std::vector< unsigned int > EdgesIndex
Definition MeshUtilities.hpp:327
std::vector< unsigned int > FacesIndex
Definition MeshUtilities.hpp:328
Definition MeshUtilities.hpp:139
std::vector< Eigen::MatrixXd > Cell1DsBoundingBox
Definition MeshUtilities.hpp:140
std::vector< Eigen::MatrixXd > Cell1DsVertices
cell1D vertices coordinates
Definition MeshUtilities.hpp:141
std::vector< Eigen::Vector3d > Cell1DsTangents
cell1D tangents
Definition MeshUtilities.hpp:142
std::vector< double > Cell1DsSquaredLengths
cell1D squared lengths
Definition MeshUtilities.hpp:144
std::vector< double > Cell1DsLengths
cell1D lengths
Definition MeshUtilities.hpp:143
std::vector< Eigen::Vector3d > Cell1DsCentroids
cell1D centroids
Definition MeshUtilities.hpp:145
Definition MeshUtilities.hpp:167
bool Cell2DsAreas
cell2D areas
Definition MeshUtilities.hpp:170
bool Cell2DsTriangulations
cell2D triangulations
Definition MeshUtilities.hpp:169
bool Cell2DsChebyshevCenter
Definition MeshUtilities.hpp:178
bool Cell2DsDiameters
cell2D diameters
Definition MeshUtilities.hpp:172
bool Cell2DsEdgeNormals
cell2D edge normals
Definition MeshUtilities.hpp:177
bool Cell2DsTriangulationsByChebyshevCenter
cell2D triangulations
Definition MeshUtilities.hpp:179
bool Cell2DsInRadius
cell2D triangulations
Definition MeshUtilities.hpp:180
bool Cell2DsEdgesCentroid
cell2D edge centroid
Definition MeshUtilities.hpp:174
bool Cell2DsEdgeTangents
cell2D edge tangents
Definition MeshUtilities.hpp:176
bool Cell2DsCentroids
cell2D centroids
Definition MeshUtilities.hpp:171
bool Cell2DsBoundingBox
Definition MeshUtilities.hpp:168
MeshGeometricData2DConfig()
Definition MeshUtilities.hpp:182
bool Cell2DsEdgeDirections
cell2D edge directions
Definition MeshUtilities.hpp:173
bool Cell2DsEdgeLengths
cell2D edge lengths
Definition MeshUtilities.hpp:175
Definition MeshUtilities.hpp:149
std::vector< Eigen::MatrixXd > Cell2DsEdgeNormals
cell2D edge normals
Definition MeshUtilities.hpp:160
std::vector< std::vector< Eigen::Matrix3d > > Cell2DsTriangulationsByChebyshevCenter
cell2D triangulations
Definition MeshUtilities.hpp:162
std::vector< double > Cell2DsDiameters
cell2D diameters
Definition MeshUtilities.hpp:155
std::vector< std::vector< Eigen::Matrix3d > > Cell2DsTriangulations
cell2D triangulations
Definition MeshUtilities.hpp:152
std::vector< Eigen::MatrixXd > Cell2DsBoundingBox
Definition MeshUtilities.hpp:150
std::vector< Eigen::Vector3d > Cell2DsChebyshevCenter
cell2D chebycev node
Definition MeshUtilities.hpp:161
std::vector< Eigen::Vector3d > Cell2DsCentroids
cell2D centroids
Definition MeshUtilities.hpp:154
std::vector< Eigen::VectorXd > Cell2DsEdgeLengths
cell2D edge lengths
Definition MeshUtilities.hpp:158
std::vector< Eigen::MatrixXd > Cell2DsEdgesCentroid
cell2D edge centroid
Definition MeshUtilities.hpp:157
std::vector< Eigen::MatrixXd > Cell2DsVertices
cell2D vertices coordinates
Definition MeshUtilities.hpp:151
std::vector< double > Cell2DsAreas
cell2D areas
Definition MeshUtilities.hpp:153
std::vector< Eigen::MatrixXd > Cell2DsEdgeTangents
cell2D edge tangents
Definition MeshUtilities.hpp:159
std::vector< double > Cell2DsInRadius
cell2D triangulations
Definition MeshUtilities.hpp:163
std::vector< std::vector< bool > > Cell2DsEdgeDirections
cell2D edge directions
Definition MeshUtilities.hpp:156
Definition MeshUtilities.hpp:215
std::vector< std::vector< std::vector< Eigen::Matrix3d > > > Cell3DsFaces3DTriangulations
2D
Definition MeshUtilities.hpp:238
std::vector< std::vector< double > > Cell3DsFacesAreas
faces areas
Definition MeshUtilities.hpp:242
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFaces2DVertices
faces vertices 2D coordinates
Definition MeshUtilities.hpp:237
std::vector< Eigen::MatrixXd > Cell3DsEdgesCentroid
Definition MeshUtilities.hpp:223
std::vector< Eigen::MatrixXd > Cell3DsVertices
Definition MeshUtilities.hpp:216
std::vector< double > Cell3DsVolumes
Definition MeshUtilities.hpp:220
std::vector< Eigen::Vector3d > Cell3DsCentroids
Definition MeshUtilities.hpp:222
std::vector< Eigen::MatrixXi > Cell3DsEdges
Definition MeshUtilities.hpp:217
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFacesEdges3DCentroid
Definition MeshUtilities.hpp:247
std::vector< std::vector< std::array< bool, 2 > > > Cell3DsFacesTangentsGlobalDirection
Definition MeshUtilities.hpp:234
std::vector< std::vector< Eigen::Matrix3d > > Cell3DsFacesRotationMatrices
Definition MeshUtilities.hpp:229
std::vector< std::vector< bool > > Cell3DsFacesNormalDirections
Definition MeshUtilities.hpp:232
std::vector< Eigen::MatrixXd > Cell3DsBoundingBox
Definition MeshUtilities.hpp:219
std::vector< std::vector< std::array< Eigen::Vector3d, 2 > > > Cell3DsFacesTangents
Definition MeshUtilities.hpp:231
std::vector< std::vector< Eigen::VectorXd > > Cell3DsFacesEdgeLengths
faces edge lengths
Definition MeshUtilities.hpp:245
std::vector< std::vector< std::vector< Eigen::Matrix3d > > > Cell3DsFaces2DTriangulations
2D
Definition MeshUtilities.hpp:240
std::vector< std::vector< Eigen::MatrixXi > > Cell3DsFaces
Definition MeshUtilities.hpp:218
std::vector< Eigen::VectorXd > Cell3DsEdgeLengths
Definition MeshUtilities.hpp:224
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsTetrahedronPoints
Definition MeshUtilities.hpp:227
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFacesEdge2DTangents
faces edge 2D tangents
Definition MeshUtilities.hpp:248
std::vector< std::vector< bool > > Cell3DsFacesNormalGlobalDirection
Definition MeshUtilities.hpp:233
std::vector< std::vector< std::vector< bool > > > Cell3DsFacesEdgeDirections
Definition MeshUtilities.hpp:235
std::vector< double > Cell3DsDiameters
Definition MeshUtilities.hpp:221
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFacesEdges2DCentroid
Definition MeshUtilities.hpp:249
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFaces3DVertices
faces vertices 3D coordinates
Definition MeshUtilities.hpp:236
std::vector< std::vector< Eigen::Vector3d > > Cell3DsFaces2DCentroids
faces centroids
Definition MeshUtilities.hpp:243
std::vector< std::vector< Eigen::Vector3d > > Cell3DsFacesTranslations
Definition MeshUtilities.hpp:228
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFacesEdge3DTangents
faces edge 3D tangents
Definition MeshUtilities.hpp:246
std::vector< std::vector< Eigen::MatrixXd > > Cell3DsFacesEdge2DNormals
faces edge normals
Definition MeshUtilities.hpp:250
std::vector< std::vector< Eigen::Vector3d > > Cell3DsFacesNormals
Definition MeshUtilities.hpp:230
std::vector< Eigen::MatrixXd > Cell3DsEdgeTangents
Definition MeshUtilities.hpp:225
std::vector< std::vector< double > > Cell3DsFacesDiameters
faces diameters
Definition MeshUtilities.hpp:244
std::vector< std::vector< bool > > Cell3DsEdgeDirections
Definition MeshUtilities.hpp:226
Definition MeshUtilities.hpp:254
Eigen::MatrixXd Vertices
Definition MeshUtilities.hpp:255
std::vector< std::vector< unsigned int > > PolyhedronFaces
size 3xnumVertices
Definition MeshUtilities.hpp:256