PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
IMeshDAO.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 __IMeshWrapper_H
13#define __IMeshWrapper_H
14
15#include "Eigen/Eigen"
16#include "Gedim_Macro.hpp"
17#include "IOUtilities.hpp"
18#include "MeshMatrices.hpp"
19
20namespace Gedim
21{
24{
25 public:
26 virtual ~IMeshDAO()
27 {
28 }
29
31 virtual void InitializeDimension(const unsigned int &dimension) = 0;
33 virtual unsigned int Dimension() const = 0;
34
38 virtual void Cell0DsInitialize(const unsigned int &numberCell0Ds) = 0;
42 virtual unsigned int Cell0DAppend(const unsigned int &numberCell0Ds) = 0;
43
47 virtual void Cell0DRemove(const unsigned int &cell0DIndex) = 0;
51 virtual void Cell0DInsertCoordinates(const unsigned int &cell0DIndex, const Eigen::Vector3d &coordinates) = 0;
54 virtual void Cell0DsInsertCoordinates(const Eigen::MatrixXd &coordinates) = 0;
58 virtual void Cell0DSetMarker(const unsigned int &cell0DIndex, const unsigned int &marker) = 0;
62 virtual void Cell0DSetState(const unsigned int &cell0DIndex, const bool &state) = 0;
64 virtual unsigned int Cell0DTotalNumber() const = 0;
67 virtual double Cell0DCoordinateX(const unsigned int &cell0DIndex) const = 0;
70 virtual double Cell0DCoordinateY(const unsigned int &cell0DIndex) const = 0;
73 virtual double Cell0DCoordinateZ(const unsigned int &cell0DIndex) const = 0;
76 virtual Eigen::Vector3d Cell0DCoordinates(const unsigned int &cell0DIndex) const = 0;
78 virtual Eigen::MatrixXd Cell0DsCoordinates() const = 0;
79 virtual Eigen::MatrixXd Cell0DsCoordinates(const std::vector<unsigned int> &cell0Ds) const = 0;
82 virtual bool Cell0DIsActive(const unsigned int &cell0DIndex) const = 0;
84 virtual std::vector<bool> Cell0DsState() const = 0;
87 virtual unsigned int Cell0DMarker(const unsigned int &cell0DIndex) const = 0;
88 virtual std::vector<unsigned int> Cell0DsMarker() const = 0;
91 virtual bool Cell0DHasUpdatedCell0Ds(const unsigned int &cell0DIndex) const = 0;
94 virtual unsigned int Cell0DNumberUpdatedCell0Ds(const unsigned int &cell0DIndex) const = 0;
98 virtual bool Cell0DHasUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex) const = 0;
102 virtual void Cell0DInsertUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex) = 0;
107 virtual bool Cell0DUpdatedCell0Ds(const unsigned int &cell0DIndex, std::list<unsigned int> &updatedCell0DIds) const = 0;
108
109 virtual std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell1Ds() const = 0;
112 virtual void Cell0DsInitializeNeighbourCell1Ds(const std::vector<unsigned int> &numbersNeighbourCell1Ds) = 0;
116 virtual void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell1Ds) = 0;
117 virtual void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex,
118 const std::vector<unsigned int> &neighbourCell1Ds) = 0;
124 virtual void Cell0DInsertNeighbourCell1D(const unsigned int &cell0DIndex,
125 const unsigned int &neighbourIndex,
126 const unsigned int &neigbourCell1DIndex) = 0;
129 virtual unsigned int Cell0DNumberNeighbourCell1D(const unsigned int &cell0DIndex) const = 0;
133 virtual unsigned int Cell0DNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
134
135 virtual std::vector<unsigned int> Cell0DNeighbourCell1Ds(const unsigned int &cell0DIndex) const = 0;
136
140 virtual bool Cell0DHasNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
141
146 virtual void Cell0DResetNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) = 0;
147
148 virtual std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell2Ds() const = 0;
151 virtual void Cell0DsInitializeNeighbourCell2Ds(const std::vector<unsigned int> &numbersNeighbourCell2Ds) = 0;
155 virtual void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell2Ds) = 0;
156 virtual void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex,
157 const std::vector<unsigned int> &neighbourCell2Ds) = 0;
163 virtual void Cell0DInsertNeighbourCell2D(const unsigned int &cell0DIndex,
164 const unsigned int &neighbourIndex,
165 const unsigned int &neigbourCell2DIndex) = 0;
168 virtual unsigned int Cell0DNumberNeighbourCell2D(const unsigned int &cell0DIndex) const = 0;
172 virtual unsigned int Cell0DNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
173
174 virtual std::vector<unsigned int> Cell0DNeighbourCell2Ds(const unsigned int &cell0DIndex) const = 0;
175
179 virtual bool Cell0DHasNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
184 virtual void Cell0DResetNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) = 0;
185
186 virtual std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell3Ds() const = 0;
189 virtual void Cell0DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numbersNeighbourCell3Ds) = 0;
193 virtual void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell3Ds) = 0;
194 virtual void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex,
195 const std::vector<unsigned int> &neighbourCell3Ds) = 0;
201 virtual void Cell0DInsertNeighbourCell3D(const unsigned int &cell0DIndex,
202 const unsigned int &neighbourIndex,
203 const unsigned int &neigbourCell3DIndex) = 0;
206 virtual unsigned int Cell0DNumberNeighbourCell3D(const unsigned int &cell0DIndex) const = 0;
210 virtual unsigned int Cell0DNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
211 virtual std::vector<unsigned int> Cell0DNeighbourCell3Ds(const unsigned int &cell0DIndex) const = 0;
215 virtual bool Cell0DHasNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const = 0;
220 virtual void Cell0DResetNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) = 0;
221
225 virtual void Cell0DInitializeDoubleProperties(const unsigned int &numberDoubleProperties) = 0;
229 virtual unsigned int Cell0DAddDoubleProperty(const std::string &propertyId) = 0;
233 virtual void Cell0DsInitializeDoublePropertyValues(const unsigned int &propertyIndex,
234 const std::vector<unsigned int> &porpertySizes) = 0;
239 virtual void Cell0DInitializeDoublePropertyValues(const unsigned int &cell0DIndex,
240 const unsigned int &propertyIndex,
241 const unsigned int &porpertySize) = 0;
246 virtual void Cell0DInsertDoublePropertyValue(const unsigned int &cell0DIndex,
247 const unsigned int &propertyIndex,
248 const unsigned int &propertyValueIndex,
249 const double &propertyValue) = 0;
250
252 virtual unsigned int Cell0DNumberDoubleProperties() const = 0;
255 virtual std::string Cell0DDoublePropertyId(const unsigned int &propertyIndex) const = 0;
258 virtual bool Cell0DDoublePropertyExists(const std::string &propertyId) const = 0;
261 virtual unsigned int Cell0DDoublePropertyIndex(const std::string &propertyId) const = 0;
265 virtual unsigned int Cell0DDoublePropertySize(const unsigned int &cell0DIndex, const unsigned int &propertyIndex) const = 0;
270 virtual double Cell0DDoublePropertyValue(const unsigned int &cell0DIndex,
271 const unsigned int &propertyIndex,
272 const unsigned int &propertyValueIndex) const = 0;
273
277 virtual void Cell1DsInitialize(const unsigned int &numberCell1Ds) = 0;
281 virtual unsigned int Cell1DAppend(const unsigned int &numberCell1Ds) = 0;
285 virtual void Cell1DRemove(const unsigned int &cell1DIndex) = 0;
290 virtual void Cell1DInsertExtremes(const unsigned int &cell1DIndex,
291 const unsigned int &originCell0DIndex,
292 const unsigned int &endCell0DIndex) = 0;
293
296 virtual void Cell1DsInsertExtremes(const Eigen::MatrixXi &cell1DExtremes) = 0;
297
299 virtual Eigen::MatrixXi Cell1DsExtremes() const = 0;
302 virtual Eigen::VectorXi Cell1DExtremes(const unsigned int &cell1DIndex) const = 0;
303 virtual Eigen::MatrixXi Cell1DsExtremes(const std::vector<unsigned int> &cell1Ds) const = 0;
307 virtual unsigned int Cell1DByExtremes(const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const = 0;
311 virtual void Cell1DSetMarker(const unsigned int &cell1DIndex, const unsigned int &marker) = 0;
315 virtual void Cell1DSetState(const unsigned int &cell1DIndex, const bool &state) = 0;
317 virtual unsigned int Cell1DTotalNumber() const = 0;
321 virtual unsigned int Cell1DVertex(const unsigned int &cell1DIndex, const unsigned int &vertexIndex) const = 0;
324 virtual Eigen::MatrixXd Cell1DCoordinates(const unsigned int &cell1DIndex) const = 0;
327 virtual Eigen::Vector3d Cell1DOriginCoordinates(const unsigned int &cell1DIndex) const = 0;
330 virtual Eigen::Vector3d Cell1DEndCoordinates(const unsigned int &cell1DIndex) const = 0;
333 virtual unsigned int Cell1DOrigin(const unsigned int &cell1DIndex) const = 0;
336 virtual unsigned int Cell1DEnd(const unsigned int &cell1DIndex) const = 0;
340 virtual unsigned int Cell1DFindExtreme(const unsigned int &cell1DIndex, const unsigned int &cell0DIndex) const = 0;
343 virtual unsigned int Cell1DMarker(const unsigned int &cell1DIndex) const = 0;
344 virtual std::vector<unsigned int> Cell1DsMarker() const = 0;
347 virtual bool Cell1DIsActive(const unsigned int &cell1DIndex) const = 0;
349 virtual std::vector<bool> Cell1DsState() const = 0;
350
353 virtual bool Cell1DHasOriginalCell1D(const unsigned int &updatedCell1DIndex) const = 0;
356 virtual unsigned int Cell1DOriginalCell1D(const unsigned int &updatedCell1DIndex) const = 0;
359 virtual bool Cell1DHasUpdatedCell1Ds(const unsigned int &cell1DIndex) const = 0;
362 virtual unsigned int Cell1DNumberUpdatedCell1Ds(const unsigned int &cell1DIndex) const = 0;
366 virtual bool Cell1DHasUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex) const = 0;
370 virtual void Cell1DInsertUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex) = 0;
375 virtual bool Cell1DUpdatedCell1Ds(const unsigned int &cell1DIndex, std::list<unsigned int> &updatedCell1DIds) const = 0;
376
377 virtual std::vector<std::vector<unsigned int>> Cell1DsNeighbourCell2Ds() const = 0;
380 virtual void Cell1DsInitializeNeighbourCell2Ds(const std::vector<unsigned int> &numbersNeighbourCell2Ds) = 0;
383 virtual void Cell1DsInitializeNeighbourCell2Ds(const unsigned int &numberNeighbourCell2Ds) = 0;
384
388 virtual void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell2Ds) = 0;
389 virtual void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex,
390 const std::vector<unsigned int> &neighbourCell2Ds) = 0;
396 virtual void Cell1DInsertNeighbourCell2D(const unsigned int &cell1DIndex,
397 const unsigned int &neighbourIndex,
398 const unsigned int &neigbourCell2DIndex) = 0;
401 virtual unsigned int Cell1DNumberNeighbourCell2D(const unsigned int &cell1DIndex) const = 0;
405 virtual unsigned int Cell1DNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const = 0;
406
407 virtual inline std::vector<unsigned int> Cell1DNeighbourCell2Ds(const unsigned int &cell1DIndex) const = 0;
408
412 virtual bool Cell1DHasNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const = 0;
417 virtual void Cell1DResetNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) = 0;
418
419 virtual std::vector<std::vector<unsigned int>> Cell1DsNeighbourCell3Ds() const = 0;
422 virtual void Cell1DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numbersNeighbourCell3Ds) = 0;
426 virtual void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell3Ds) = 0;
427 virtual void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex,
428 const std::vector<unsigned int> &neighbourCell3Ds) = 0;
434 virtual void Cell1DInsertNeighbourCell3D(const unsigned int &cell1DIndex,
435 const unsigned int &neighbourIndex,
436 const unsigned int &neigbourCell3DIndex) = 0;
439 virtual unsigned int Cell1DNumberNeighbourCell3D(const unsigned int &cell1DIndex) const = 0;
443 virtual unsigned int Cell1DNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const = 0;
444 virtual std::vector<unsigned int> Cell1DNeighbourCell3Ds(const unsigned int &cell1DIndex) const = 0;
448 virtual bool Cell1DHasNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const = 0;
453 virtual void Cell1DResetNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) = 0;
454
458 virtual void Cell1DInitializeDoubleProperties(const unsigned int &numberDoubleProperties) = 0;
462 virtual unsigned int Cell1DAddDoubleProperty(const std::string &propertyId) = 0;
466 virtual void Cell1DsInitializeDoublePropertyValues(const unsigned int &propertyIndex,
467 const std::vector<unsigned int> &porpertySizes) = 0;
472 virtual void Cell1DInitializeDoublePropertyValues(const unsigned int &cell1DIndex,
473 const unsigned int &propertyIndex,
474 const unsigned int &porpertySize) = 0;
479 virtual void Cell1DInsertDoublePropertyValue(const unsigned int &cell1DIndex,
480 const unsigned int &propertyIndex,
481 const unsigned int &propertyValueIndex,
482 const double &propertyValue) = 0;
483
485 virtual unsigned int Cell1DNumberDoubleProperties() const = 0;
488 virtual std::string Cell1DDoublePropertyId(const unsigned int &propertyIndex) const = 0;
491 virtual bool Cell1DDoublePropertyExists(const std::string &propertyId) const = 0;
494 virtual unsigned int Cell1DDoublePropertyIndex(const std::string &propertyId) const = 0;
498 virtual unsigned int Cell1DDoublePropertySize(const unsigned int &cell1DIndex, const unsigned int &propertyIndex) const = 0;
503 virtual double Cell1DDoublePropertyValue(const unsigned int &cell1DIndex,
504 const unsigned int &propertyIndex,
505 const unsigned int &propertyValueIndex) const = 0;
506
510 virtual void Cell2DsInitialize(const unsigned int &numberCell2Ds) = 0;
514 virtual unsigned int Cell2DAppend(const unsigned int &numberCell2Ds) = 0;
518 virtual void Cell2DRemove(const unsigned int &cell2DIndex) = 0;
521 virtual void Cell2DsInitializeVertices(const unsigned int &numberCell2DVertices) = 0;
524 virtual void Cell2DsInitializeVertices(const std::vector<unsigned int> &numberCell2DsVertices) = 0;
528 virtual void Cell2DInitializeVertices(const unsigned int &cell2DIndex, const unsigned int &numberCell2DVertices) = 0;
531 virtual void Cell2DsInitializeEdges(const unsigned int &numberCell2DEdges) = 0;
534 virtual void Cell2DsInitializeEdges(const std::vector<unsigned int> &numberCell2DsEdges) = 0;
538 virtual void Cell2DInitializeEdges(const unsigned int &cell2DIndex, const unsigned int &numberCell2DEdges) = 0;
543 virtual void Cell2DInsertVertices(const unsigned int &cell2DIndex, const std::vector<unsigned int> &verticesCell0DIndices) = 0;
549 virtual void Cell2DInsertVertex(const unsigned int &cell2DIndex,
550 const unsigned int &vertexIndex,
551 const unsigned int &vertexCell0DIndex) = 0;
556 virtual void Cell2DAddVertices(const unsigned int &cell2DIndex, const std::vector<unsigned int> &verticesCell0DIndices) = 0;
561 virtual void Cell2DInsertEdges(const unsigned int &cell2DIndex, const std::vector<unsigned int> &edgesCell1DIndices) = 0;
567 virtual void Cell2DInsertEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex) = 0;
572 virtual void Cell2DAddEdges(const unsigned int &cell2DIndex, const std::vector<unsigned int> &edgesCell1DIndices) = 0;
573
578 virtual void Cell2DAddVerticesAndEdges(const unsigned int &cell2DIndex, const Eigen::MatrixXi &verticesAndEdgesIndices) = 0;
579
583 virtual void Cell2DSetMarker(const unsigned int &cell2DIndex, const unsigned int &marker) = 0;
587 virtual void Cell2DSetState(const unsigned int &cell2DIndex, const bool &state) = 0;
589 virtual unsigned int Cell2DTotalNumber() const = 0;
592 virtual unsigned int Cell2DNumberVertices(const unsigned int &cell2DIndex) const = 0;
595 virtual unsigned int Cell2DNumberEdges(const unsigned int &cell2DIndex) const = 0;
598 virtual std::vector<std::vector<unsigned int>> Cell2DsVertices() const = 0;
601 virtual std::vector<Eigen::MatrixXi> Cell2DsExtremes() const = 0;
605 virtual std::vector<unsigned int> Cell2DVertices(const unsigned int &cell2DIndex) const = 0;
609 virtual unsigned int Cell2DVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const = 0;
613 virtual Eigen::Vector3d Cell2DVertexCoordinates(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const = 0;
616 virtual Eigen::MatrixXd Cell2DVerticesCoordinates(const unsigned int &cell2DIndex) const = 0;
621 virtual unsigned int Cell2DFindVertex(const unsigned int &cell2DIndex, const unsigned int &cell0DIndex) const = 0;
625 virtual std::vector<unsigned int> Cell2DEdges(const unsigned int &cell2DIndex) const = 0;
629 virtual unsigned int Cell2DEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex) const = 0;
634 virtual unsigned int Cell2DFindEdge(const unsigned int &cell2DIndex, const unsigned int &cell1DIndex) const = 0;
640 virtual unsigned int Cell2DFindEdgeByExtremes(const unsigned int &cell2DIndex,
641 const unsigned int &originCell0DIndex,
642 const unsigned int &endCell0DIndex) const = 0;
645 virtual unsigned int Cell2DMarker(const unsigned int &cell2DIndex) const = 0;
646 virtual std::vector<unsigned int> Cell2DsMarker() const = 0;
649 virtual bool Cell2DIsActive(const unsigned int &cell2DIndex) const = 0;
651 virtual std::vector<bool> Cell2DsState() const = 0;
652
655 virtual bool Cell2DHasUpdatedCell2Ds(const unsigned int &cell2DIndex) const = 0;
658 virtual unsigned int Cell2DNumberUpdatedCell2Ds(const unsigned int &cell2DIndex) const = 0;
662 virtual bool Cell2DHasUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIndex) const = 0;
666 virtual void Cell2DInsertUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIdex) = 0;
667
670 virtual bool Cell2DHasOriginalCell2D(const unsigned int &updatedCell2DIndex) const = 0;
673 virtual unsigned int Cell2DOriginalCell2D(const unsigned int &updatedCell2DIndex) const = 0;
678 virtual bool Cell2DUpdatedCell2Ds(const unsigned int &cell2DIndex, std::list<unsigned int> &updatedCell2DIds) const = 0;
679
680 virtual std::vector<std::vector<unsigned int>> Cell2DsNeighbourCell3Ds() const = 0;
683 virtual void Cell2DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numbersNeighbourCell3Ds) = 0;
687 virtual void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const unsigned int &numberNeighbourCell3Ds) = 0;
688 virtual void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex,
689 const std::vector<unsigned int> &neighbourCell3Ds) = 0;
695 virtual void Cell2DInsertNeighbourCell3D(const unsigned int &cell2DIndex,
696 const unsigned int &neighbourIndex,
697 const unsigned int &neigbourCell3DIndex) = 0;
700 virtual unsigned int Cell2DNumberNeighbourCell3D(const unsigned int &cell2DIndex) const = 0;
704 virtual unsigned int Cell2DNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const = 0;
705 virtual std::vector<unsigned int> Cell2DNeighbourCell3Ds(const unsigned int &cell2DIndex) const = 0;
709 virtual bool Cell2DHasNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const = 0;
714 virtual void Cell2DResetNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) = 0;
715
719 virtual void Cell2DInitializeDoubleProperties(const unsigned int &numberDoubleProperties) = 0;
723 virtual unsigned int Cell2DAddDoubleProperty(const std::string &propertyId) = 0;
727 virtual void Cell2DsInitializeDoublePropertyValues(const unsigned int &propertyIndex,
728 const std::vector<unsigned int> &porpertySizes) = 0;
733 virtual void Cell2DInitializeDoublePropertyValues(const unsigned int &cell2DIndex,
734 const unsigned int &propertyIndex,
735 const unsigned int &porpertySize) = 0;
740 virtual void Cell2DInsertDoublePropertyValue(const unsigned int &cell2DIndex,
741 const unsigned int &propertyIndex,
742 const unsigned int &propertyValueIndex,
743 const double &propertyValue) = 0;
744
746 virtual unsigned int Cell2DNumberDoubleProperties() const = 0;
749 virtual std::string Cell2DDoublePropertyId(const unsigned int &propertyIndex) const = 0;
752 virtual bool Cell2DDoublePropertyExists(const std::string &propertyId) const = 0;
755 virtual unsigned int Cell2DDoublePropertyIndex(const std::string &propertyId) const = 0;
759 virtual unsigned int Cell2DDoublePropertySize(const unsigned int &cell2DIndex, const unsigned int &propertyIndex) const = 0;
764 virtual double Cell2DDoublePropertyValue(const unsigned int &cell2DIndex,
765 const unsigned int &propertyIndex,
766 const unsigned int &propertyValueIndex) const = 0;
767
771 virtual void Cell2DsInitializeSubDivision(const std::vector<unsigned int> &numberSubDivisions) = 0;
776 virtual void Cell2DInitializeSubDivision(const unsigned int &cell2DIndex, const unsigned int &numberSubDivision) = 0;
782 virtual void Cell2DInsertSubDivision(const unsigned int &cell2DIndex,
783 const unsigned int &subDivisionIndex,
784 const unsigned int &cell2DVertexIndex) = 0;
785
789 virtual unsigned int Cell2DNumberSubDivision(const unsigned int &cell2DIndex) const = 0;
790
795 virtual unsigned int Cell2DSubDivisionCell0D(const unsigned int &cell2DIndex, const unsigned int &subDivisionIndex) const = 0;
796
800 virtual void Cell3DsInitialize(const unsigned int &numberCell3Ds) = 0;
804 virtual unsigned int Cell3DAppend(const unsigned int &numberCell3Ds) = 0;
808 virtual void Cell3DRemove(const unsigned int &cell3DIndex) = 0;
811 virtual void Cell3DsInitializeVertices(const std::vector<unsigned int> &numberCell3DsVertices) = 0;
815 virtual void Cell3DInitializeVertices(const unsigned int &cell3DIndex, const unsigned int &numberCell3DVertices) = 0;
818 virtual void Cell3DsInitializeEdges(const std::vector<unsigned int> &numberCell3DsEdges) = 0;
822 virtual void Cell3DInitializeEdges(const unsigned int &cell3DIndex, const unsigned int &numberCell3DEdges) = 0;
825 virtual void Cell3DsInitializeFaces(const std::vector<unsigned int> &numberCell3DsFaces) = 0;
829 virtual void Cell3DInitializeFaces(const unsigned int &cell3DIndex, const unsigned int &numberCell3DFaces) = 0;
835 virtual void Cell3DInsertVertex(const unsigned int &cell3DIndex,
836 const unsigned int &vertexIndex,
837 const unsigned int &vertexCell0DIndex) = 0;
842 virtual void Cell3DInsertVertices(const unsigned int &cell3DIndex, const std::vector<unsigned int> &verticesCell0DIndices) = 0;
847 virtual void Cell3DAddVertices(const unsigned int &cell3DIndex, const std::vector<unsigned int> &verticesCell0DIndices) = 0;
853 virtual void Cell3DInsertEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex) = 0;
858 virtual void Cell3DInsertEdges(const unsigned int &cell3DIndex, const std::vector<unsigned int> &edgesCell1DIndices) = 0;
863 virtual void Cell3DAddEdges(const unsigned int &cell3DIndex, const std::vector<unsigned int> &edgesCell0DIndices) = 0;
868 virtual unsigned int Cell3DFindVertex(const unsigned int &cell3DIndex, const unsigned int &cell0DIndex) const = 0;
873 virtual unsigned int Cell3DFindEdge(const unsigned int &cell3DIndex, const unsigned int &cell1DIndex) const = 0;
878 virtual unsigned int Cell3DFindFace(const unsigned int &cell3DIndex, const unsigned int &cell2DIndex) const = 0;
879
885 virtual unsigned int Cell3DFindEdgeByExtremes(const unsigned int &cell3DIndex,
886 const unsigned int &originCell0DIndex,
887 const unsigned int &endCell0DIndex) const = 0;
893 virtual void Cell3DInsertFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex, const unsigned int &faceCell2DIndex) = 0;
898 virtual void Cell3DInsertFaces(const unsigned int &cell3DIndex, const std::vector<unsigned int> &facesCell2DIndices) = 0;
903 virtual void Cell3DAddFaces(const unsigned int &cell3DIndex, const std::vector<unsigned int> &facesCell0DIndices) = 0;
907 virtual void Cell3DSetMarker(const unsigned int &cell3DIndex, const unsigned int &marker) = 0;
911 virtual void Cell3DSetState(const unsigned int &cell3DIndex, const bool &state) = 0;
913 virtual unsigned int Cell3DTotalNumber() const = 0;
916 virtual unsigned int Cell3DNumberVertices(const unsigned int &cell3DIndex) const = 0;
919 virtual unsigned int Cell3DNumberEdges(const unsigned int &cell3DIndex) const = 0;
922 virtual unsigned int Cell3DNumberFaces(const unsigned int &cell3DIndex) const = 0;
926 virtual std::vector<unsigned int> Cell3DVertices(const unsigned int &cell3DIndex) const = 0;
930 virtual unsigned int Cell3DVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const = 0;
934 virtual Eigen::Vector3d Cell3DVertexCoordinates(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const = 0;
937 virtual Eigen::MatrixXd Cell3DVerticesCoordinates(const unsigned int &cell3DIndex) const = 0;
938
942 virtual std::vector<unsigned int> Cell3DEdges(const unsigned int &cell3DIndex) const = 0;
943
947 virtual unsigned int Cell3DEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex) const = 0;
948
952 virtual std::vector<unsigned int> Cell3DFaces(const unsigned int &cell3DIndex) const = 0;
953
956 virtual std::vector<std::vector<std::vector<unsigned int>>> Cell3DsFacesVertices() const = 0;
959 virtual std::vector<std::vector<unsigned int>> Cell3DsVertices() const = 0;
961 virtual std::vector<std::vector<unsigned int>> Cell3DsEdges() const = 0;
963 virtual std::vector<std::vector<unsigned int>> Cell3DsFaces() const = 0;
964
968 virtual unsigned int Cell3DFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex) const = 0;
971 virtual unsigned int Cell3DMarker(const unsigned int &cell3DIndex) const = 0;
972 virtual std::vector<unsigned int> Cell3DsMarker() const = 0;
975 virtual bool Cell3DIsActive(const unsigned int &cell3DIndex) const = 0;
977 virtual std::vector<bool> Cell3DsState() const = 0;
978
981 virtual bool Cell3DHasOriginalCell3D(const unsigned int &updatedCell3DIndex) const = 0;
984 virtual unsigned int Cell3DOriginalCell3D(const unsigned int &updatedCell3DIndex) const = 0;
987 virtual bool Cell3DHasUpdatedCell3Ds(const unsigned int &cell3DIndex) const = 0;
990 virtual unsigned int Cell3DNumberUpdatedCell3Ds(const unsigned int &cell3DIndex) const = 0;
994 virtual bool Cell3DHasUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex) const = 0;
998 virtual void Cell3DInsertUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex) = 0;
1003 virtual bool Cell3DUpdatedCell3Ds(const unsigned int &cell3DIndex, std::list<unsigned int> &updatedCell3DIds) const = 0;
1004
1008 virtual void Cell3DInitializeDoubleProperties(const unsigned int &numberDoubleProperties) = 0;
1012 virtual unsigned int Cell3DAddDoubleProperty(const std::string &propertyId) = 0;
1017 const std::vector<unsigned int> &porpertySizes) = 0;
1022 virtual void Cell3DInitializeDoublePropertyValues(const unsigned int &cell3DIndex,
1023 const unsigned int &propertyIndex,
1024 const unsigned int &porpertySize) = 0;
1029 virtual void Cell3DInsertDoublePropertyValue(const unsigned int &cell3DIndex,
1030 const unsigned int &propertyIndex,
1031 const unsigned int &propertyValueIndex,
1032 const double &propertyValue) = 0;
1033
1035 virtual unsigned int Cell3DNumberDoubleProperties() const = 0;
1038 virtual std::string Cell3DDoublePropertyId(const unsigned int &propertyIndex) const = 0;
1041 virtual bool Cell3DDoublePropertyExists(const std::string &propertyId) const = 0;
1044 virtual unsigned int Cell3DDoublePropertyIndex(const std::string &propertyId) const = 0;
1048 virtual unsigned int Cell3DDoublePropertySize(const unsigned int &cell3DIndex, const unsigned int &propertyIndex) const = 0;
1053 virtual double Cell3DDoublePropertyValue(const unsigned int &cell3DIndex,
1054 const unsigned int &propertyIndex,
1055 const unsigned int &propertyValueIndex) const = 0;
1056
1058 virtual void Compress() = 0;
1059
1061 virtual std::string ToString() = 0;
1062};
1063} // namespace Gedim
1064
1065namespace Gedim
1066{
1068{
1069 private:
1070 Gedim::MeshMatrices &_mesh;
1071
1077 template <typename T> void AlignSparseMatrixHigherElements(Eigen::SparseMatrix<T> &matrix, const T &minElement);
1078
1084 template <class Container, class T>
1085 void AlignMapContainerHigherElements(std::unordered_map<unsigned int, Container> &elements,
1086 const T &minElement,
1088
1094 template <class Container, class T>
1095 void AlignContainerHigherElements(Container &elements, const T &minElement, const T &newElementInitialization);
1096
1101 template <class Container, class T>
1102 void AlignContainerElements(Container &elements, const T &element, const T &newElementInitialization);
1103
1104 template <typename T>
1105 void InitializeNuberVectorWithConstantElements(std::vector<unsigned int> &numberElementVector,
1106 std::vector<T> &elementVector,
1107 const unsigned int numberElementSize,
1108 const unsigned int numberElements,
1109 const T &elementInitialization = T());
1110 template <typename T>
1111 void InitializeNumberVector(std::vector<unsigned int> &numberElementVector,
1112 std::vector<T> &elementVector,
1113 const std::vector<unsigned int> &numberElements,
1114 const T &elementInitialization = T());
1115
1116 template <typename T>
1117 void ResizeNumberVectorWithNewNumberElements(std::vector<unsigned int> &numberElementVector,
1118 std::vector<T> &elementVector,
1119 const unsigned int &numberElements,
1120 const unsigned int &vectorIndex,
1121 const unsigned int &newNumberElements,
1122 const T &newElementInitialization = T());
1123
1124 public:
1127
1129 {
1130 return _mesh;
1131 }
1132 inline const Gedim::MeshMatrices &MeshData() const
1133 {
1134 return _mesh;
1135 }
1136
1137 inline void InitializeDimension(const unsigned int &dimension)
1138 {
1139 _mesh.Dimension = dimension;
1140 }
1141 inline unsigned int Dimension() const
1142 {
1143 return _mesh.Dimension;
1144 }
1145
1146 void Cell0DsInitialize(const unsigned int &numberCell0Ds);
1147 unsigned int Cell0DAppend(const unsigned int &numberCell0Ds);
1148 void Cell0DRemove(const unsigned int &cell0DIndex);
1149
1150 void Cell0DInsertCoordinates(const unsigned int &cell0DIndex, const Eigen::Vector3d &coordinates);
1151 void Cell0DsInsertCoordinates(const Eigen::MatrixXd &coordinates);
1152 inline void Cell0DSetMarker(const unsigned int &cell0DIndex, const unsigned int &marker)
1153 {
1155 _mesh.Cell0DMarkers[cell0DIndex] = marker;
1156 }
1157 inline void Cell0DSetState(const unsigned int &cell0DIndex, const bool &state)
1158 {
1161 }
1162
1163 inline unsigned int Cell0DTotalNumber() const
1164 {
1165 return _mesh.NumberCell0D;
1166 }
1167 inline double Cell0DCoordinateX(const unsigned int &cell0DIndex) const
1168 {
1170 return _mesh.Cell0DCoordinates[3 * cell0DIndex];
1171 }
1172 inline double Cell0DCoordinateY(const unsigned int &cell0DIndex) const
1173 {
1175 return _mesh.Cell0DCoordinates[3 * cell0DIndex + 1];
1176 }
1177 inline double Cell0DCoordinateZ(const unsigned int &cell0DIndex) const
1178 {
1180 return _mesh.Cell0DCoordinates[3 * cell0DIndex + 2];
1181 }
1182 inline Eigen::Vector3d Cell0DCoordinates(const unsigned int &cell0DIndex) const
1183 {
1186 }
1187 Eigen::MatrixXd Cell0DsCoordinates() const;
1188 Eigen::MatrixXd Cell0DsCoordinates(const std::vector<unsigned int> &cell0Ds) const;
1189 inline unsigned int Cell0DMarker(const unsigned int &cell0DIndex) const
1190 {
1192 return _mesh.Cell0DMarkers[cell0DIndex];
1193 }
1194 inline std::vector<unsigned int> Cell0DsMarker() const
1195 {
1196 return _mesh.Cell0DMarkers;
1197 }
1198 inline bool Cell0DIsActive(const unsigned int &cell0DIndex) const
1199 {
1201 return _mesh.ActiveCell0D[cell0DIndex];
1202 }
1203 inline std::vector<bool> Cell0DsState() const
1204 {
1205 return _mesh.ActiveCell0D;
1206 }
1207
1208 inline bool Cell0DHasUpdatedCell0Ds(const unsigned int &cell0DIndex) const
1209 {
1211 return _mesh.UpdatedCell0Ds.find(cell0DIndex) != _mesh.UpdatedCell0Ds.end();
1212 }
1213 inline unsigned int Cell0DNumberUpdatedCell0Ds(const unsigned int &cell0DIndex) const
1214 {
1216 return _mesh.UpdatedCell0Ds.at(cell0DIndex).size();
1217 }
1218 inline bool Cell0DHasUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex) const
1219 {
1222 return _mesh.UpdatedCell0Ds.at(cell0DIndex).find(updatedCell0DIdex) != _mesh.UpdatedCell0Ds.at(cell0DIndex).end();
1223 }
1224 void Cell0DInsertUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex);
1225 bool Cell0DUpdatedCell0Ds(const unsigned int &cell0DIndex, std::list<unsigned int> &updatedCell0DIds) const;
1226
1227 std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell1Ds() const;
1228 inline void Cell0DsInitializeNeighbourCell1Ds(const std::vector<unsigned int> &numberNeighbourCell1Ds);
1229 inline void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell1Ds);
1230 void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const std::vector<unsigned int> &neighbourCell1Ds);
1239 inline unsigned int Cell0DNumberNeighbourCell1D(const unsigned int &cell0DIndex) const
1240 {
1243 }
1250 inline std::vector<unsigned int> Cell0DNeighbourCell1Ds(const unsigned int &cell0DIndex) const
1251 {
1253
1254 std::list<unsigned int> neighbours;
1255 for (unsigned int n = 0; n < Cell0DNumberNeighbourCell1D(cell0DIndex); n++)
1256 {
1258 continue;
1259
1261 }
1262
1263 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1264 }
1271 inline void Cell0DResetNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
1272 {
1274 std::numeric_limits<unsigned int>::max();
1275 }
1276
1277 std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell2Ds() const;
1278 inline void Cell0DsInitializeNeighbourCell2Ds(const std::vector<unsigned int> &numberNeighbourCell2Ds);
1279 inline void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell2Ds);
1280 void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const std::vector<unsigned int> &neighbourCell2Ds);
1289 inline unsigned int Cell0DNumberNeighbourCell2D(const unsigned int &cell0DIndex) const
1290 {
1293 }
1300 inline std::vector<unsigned int> Cell0DNeighbourCell2Ds(const unsigned int &cell0DIndex) const
1301 {
1303
1304 std::list<unsigned int> neighbours;
1305 for (unsigned int n = 0; n < Cell0DNumberNeighbourCell2D(cell0DIndex); n++)
1306 {
1308 continue;
1309
1311 }
1312
1313 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1314 }
1321 inline void Cell0DResetNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
1322 {
1324 std::numeric_limits<unsigned int>::max();
1325 }
1326 std::vector<std::vector<unsigned int>> Cell0DsNeighbourCell3Ds() const;
1327 void Cell0DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numberNeighbourCell3Ds);
1328 void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell3Ds);
1329 void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const std::vector<unsigned int> &neighbourCell3Ds);
1338 inline unsigned int Cell0DNumberNeighbourCell3D(const unsigned int &cell0DIndex) const
1339 {
1342 }
1349 inline std::vector<unsigned int> Cell0DNeighbourCell3Ds(const unsigned int &cell0DIndex) const
1350 {
1352
1353 std::list<unsigned int> neighbours;
1354 for (unsigned int n = 0; n < Cell0DNumberNeighbourCell3D(cell0DIndex); n++)
1355 {
1357 continue;
1358
1360 }
1361
1362 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1363 }
1370 inline void Cell0DResetNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
1371 {
1373 std::numeric_limits<unsigned int>::max();
1374 }
1375
1377 unsigned int Cell0DAddDoubleProperty(const std::string &propertyId);
1378 inline void Cell0DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector<unsigned int> &propertySizes);
1379 void Cell0DInitializeDoublePropertyValues(const unsigned int &cell0DIndex,
1380 const unsigned int &propertyIndex,
1381 const unsigned int &propertySize);
1393 inline unsigned int Cell0DNumberDoubleProperties() const
1394 {
1395 return _mesh.Cell0DDoublePropertyIds.size();
1396 }
1397 inline std::string Cell0DDoublePropertyId(const unsigned int &propertyIndex) const
1398 {
1400 }
1401 inline bool Cell0DDoublePropertyExists(const std::string &propertyId) const
1402 {
1403 return _mesh.Cell0DDoublePropertyIndices.find(propertyId) != _mesh.Cell0DDoublePropertyIndices.end();
1404 }
1405 inline unsigned int Cell0DDoublePropertyIndex(const std::string &propertyId) const
1406 {
1408 return _mesh.Cell0DDoublePropertyIndices.at(propertyId);
1409 }
1427
1428 void Cell1DsInitialize(const unsigned int &numberCell1Ds);
1429 unsigned int Cell1DAppend(const unsigned int &numberCell1Ds);
1430 void Cell1DRemove(const unsigned int &cell1DIndex);
1431 void Cell1DInsertExtremes(const unsigned int &cell1DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex);
1432
1433 void Cell1DsInsertExtremes(const Eigen::MatrixXi &cell1DExtremes);
1434
1435 Eigen::MatrixXi Cell1DsExtremes() const;
1436 Eigen::MatrixXi Cell1DsExtremes(const std::vector<unsigned int> &cell1Ds) const;
1439 inline Eigen::VectorXi Cell1DExtremes(const unsigned int &cell1DIndex) const
1440 {
1441 return (Eigen::VectorXi(2) << Cell1DOrigin(cell1DIndex), Cell1DEnd(cell1DIndex)).finished();
1442 }
1443
1444 unsigned int Cell1DByExtremes(const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const;
1445
1446 inline void Cell1DSetMarker(const unsigned int &cell1DIndex, const unsigned int &marker)
1447 {
1449 _mesh.Cell1DMarkers[cell1DIndex] = marker;
1450 }
1451 inline void Cell1DSetState(const unsigned int &cell1DIndex, const bool &state)
1452 {
1455 }
1456 std::vector<std::vector<unsigned int>> Cell1DsNeighbourCell2Ds() const;
1457 inline void Cell1DsInitializeNeighbourCell2Ds(const std::vector<unsigned int> &numberNeighbourCell2Ds);
1458 inline void Cell1DsInitializeNeighbourCell2Ds(const unsigned int &numberNeighbourCell2Ds);
1459 void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell2Ds);
1460 void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const std::vector<unsigned int> &neighbourCell2Ds);
1469 inline unsigned int Cell1DTotalNumber() const
1470 {
1471 return _mesh.NumberCell1D;
1472 }
1473 inline unsigned int Cell1DVertex(const unsigned int &cell1DIndex, const unsigned int &vertexIndex) const
1474 {
1477 return _mesh.Cell1DVertices[2 * cell1DIndex + vertexIndex];
1478 }
1479 inline unsigned int Cell1DOrigin(const unsigned int &cell1DIndex) const
1480 {
1482 return _mesh.Cell1DVertices[2 * cell1DIndex];
1483 }
1484 inline unsigned int Cell1DEnd(const unsigned int &cell1DIndex) const
1485 {
1487 return _mesh.Cell1DVertices[2 * cell1DIndex + 1];
1488 }
1489 inline unsigned int Cell1DFindExtreme(const unsigned int &cell1DIndex, const unsigned int &cell0DIndex) const
1490 {
1493 if (_mesh.Cell1DVertices[2 * cell1DIndex] == cell0DIndex)
1494 return 0;
1495 else if (_mesh.Cell1DVertices[2 * cell1DIndex + 1] == cell0DIndex)
1496 return 1;
1497 else
1498 return 2;
1499 }
1500 inline Eigen::MatrixXd Cell1DCoordinates(const unsigned int &cell1DIndex) const
1501 {
1502 return (Eigen::MatrixXd(3, 2) << Cell1DOriginCoordinates(cell1DIndex), Cell1DEndCoordinates(cell1DIndex)).finished();
1503 }
1504 inline Eigen::Vector3d Cell1DOriginCoordinates(const unsigned int &cell1DIndex) const
1505 {
1507 }
1508 inline Eigen::Vector3d Cell1DEndCoordinates(const unsigned int &cell1DIndex) const
1509 {
1511 }
1512 inline unsigned int Cell1DNumberNeighbourCell2D(const unsigned int &cell1DIndex) const
1513 {
1516 }
1523 inline std::vector<unsigned int> Cell1DNeighbourCell2Ds(const unsigned int &cell1DIndex) const
1524 {
1526
1527 std::list<unsigned int> neighbours;
1528 for (unsigned int n = 0; n < Cell1DNumberNeighbourCell2D(cell1DIndex); n++)
1529 {
1531 continue;
1532
1534 }
1535
1536 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1537 }
1544 inline void Cell1DResetNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)
1545 {
1547 std::numeric_limits<unsigned int>::max();
1548 }
1549
1550 inline unsigned int Cell1DMarker(const unsigned int &cell1DIndex) const
1551 {
1553 return _mesh.Cell1DMarkers[cell1DIndex];
1554 }
1555 inline std::vector<unsigned int> Cell1DsMarker() const
1556 {
1557 return _mesh.Cell1DMarkers;
1558 }
1559 inline bool Cell1DIsActive(const unsigned int &cell1DIndex) const
1560 {
1562 return _mesh.ActiveCell1D[cell1DIndex];
1563 }
1564 inline std::vector<bool> Cell1DsState() const
1565 {
1566 return _mesh.ActiveCell1D;
1567 }
1568 inline bool Cell1DHasOriginalCell1D(const unsigned int &updatedCell1DIndex) const
1569 {
1571 return _mesh.Cell1DOriginalCell1Ds.at(updatedCell1DIndex) < _mesh.NumberCell1D;
1572 }
1573 inline unsigned int Cell1DOriginalCell1D(const unsigned int &updatedCell1DIndex) const
1574 {
1577 }
1578 inline bool Cell1DHasUpdatedCell1Ds(const unsigned int &cell1DIndex) const
1579 {
1581 return _mesh.UpdatedCell1Ds.find(cell1DIndex) != _mesh.UpdatedCell1Ds.end();
1582 }
1583 inline unsigned int Cell1DNumberUpdatedCell1Ds(const unsigned int &cell1DIndex) const
1584 {
1586 return _mesh.UpdatedCell1Ds.at(cell1DIndex).size();
1587 }
1588 inline bool Cell1DHasUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex) const
1589 {
1592 return _mesh.UpdatedCell1Ds.at(cell1DIndex).find(updatedCell1DIdex) != _mesh.UpdatedCell1Ds.at(cell1DIndex).end();
1593 }
1594 void Cell1DInsertUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex);
1595 bool Cell1DUpdatedCell1Ds(const unsigned int &cell1DIndex, std::list<unsigned int> &updatedCell1DIds) const;
1597
1598 std::vector<std::vector<unsigned int>> Cell1DsNeighbourCell3Ds() const;
1599 void Cell1DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numberNeighbourCell3Ds);
1600 void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell3Ds);
1601 void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const std::vector<unsigned int> &neighbourCell3Ds);
1610 inline unsigned int Cell1DNumberNeighbourCell3D(const unsigned int &cell1DIndex) const
1611 {
1614 }
1621 inline std::vector<unsigned int> Cell1DNeighbourCell3Ds(const unsigned int &cell1DIndex) const
1622 {
1624
1625 std::list<unsigned int> neighbours;
1626 for (unsigned int n = 0; n < Cell1DNumberNeighbourCell3D(cell1DIndex); n++)
1627 {
1629 continue;
1630
1632 }
1633
1634 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1635 }
1642 inline void Cell1DResetNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)
1643 {
1645 std::numeric_limits<unsigned int>::max();
1646 }
1647
1648 unsigned int Cell1DAddDoubleProperty(const std::string &propertyId);
1649 inline void Cell1DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector<unsigned int> &propertySizes);
1650 void Cell1DInitializeDoublePropertyValues(const unsigned int &cell1DIndex,
1651 const unsigned int &propertyIndex,
1652 const unsigned int &propertySize);
1664 inline unsigned int Cell1DNumberDoubleProperties() const
1665 {
1666 return _mesh.Cell1DDoublePropertyIds.size();
1667 }
1668 inline std::string Cell1DDoublePropertyId(const unsigned int &propertyIndex) const
1669 {
1671 }
1672 inline bool Cell1DDoublePropertyExists(const std::string &propertyId) const
1673 {
1674 return _mesh.Cell1DDoublePropertyIndices.find(propertyId) != _mesh.Cell1DDoublePropertyIndices.end();
1675 }
1676 inline unsigned int Cell1DDoublePropertyIndex(const std::string &propertyId) const
1677 {
1679 return _mesh.Cell1DDoublePropertyIndices.at(propertyId);
1680 }
1698
1699 void Cell2DsInitialize(const unsigned int &numberCell2Ds);
1700 unsigned int Cell2DAppend(const unsigned int &numberCell2Ds);
1701 void Cell2DRemove(const unsigned int &cell2DIndex);
1702 inline void Cell2DSetMarker(const unsigned int &cell2DIndex, const unsigned int &marker)
1703 {
1705 _mesh.Cell2DMarkers[cell2DIndex] = marker;
1706 }
1707 inline void Cell2DSetState(const unsigned int &cell2DIndex, const bool &state)
1708 {
1711 }
1712 inline void Cell2DsInitializeVertices(const unsigned int &numberCell2DVertices);
1713 inline void Cell2DsInitializeVertices(const std::vector<unsigned int> &numberCell2DsVertices);
1714 void Cell2DInitializeVertices(const unsigned int &cell2DIndex, const unsigned int &numberCell2DVertices);
1715 inline void Cell2DsInitializeEdges(const unsigned int &numberCell2DEdges);
1716 inline void Cell2DsInitializeEdges(const std::vector<unsigned int> &numberCell2DsEdges);
1717 void Cell2DInitializeEdges(const unsigned int &cell2DIndex, const unsigned int &numberCell2DEdges);
1718 inline void Cell2DInsertVertices(const unsigned int &cell2DIndex, const std::vector<unsigned int> &verticesCell0DIndices)
1719 {
1720 for (unsigned int v = 0; v < verticesCell0DIndices.size(); v++)
1722 }
1730 inline void Cell2DInsertEdges(const unsigned int &cell2DIndex, const std::vector<unsigned int> &edgesCell1DIndices)
1731 {
1732 for (unsigned int e = 0; e < edgesCell1DIndices.size(); e++)
1734 }
1742 void Cell2DAddVertices(const unsigned int &cell2DIndex, const std::vector<unsigned int> &verticesCell0DIndices);
1743 void Cell2DAddEdges(const unsigned int &cell2DIndex, const std::vector<unsigned int> &edgesCell1DIndices);
1744 void Cell2DAddVerticesAndEdges(const unsigned int &cell2DIndex, const Eigen::MatrixXi &verticesAndEdgesIndices);
1745
1746 inline unsigned int Cell2DTotalNumber() const
1747 {
1748 return _mesh.NumberCell2D;
1749 }
1750 inline unsigned int Cell2DNumberVertices(const unsigned int &cell2DIndex) const
1751 {
1754 }
1755 inline unsigned int Cell2DNumberEdges(const unsigned int &cell2DIndex) const
1756 {
1759 }
1760
1761 inline std::vector<unsigned int> Cell2DVertices(const unsigned int &cell2DIndex) const
1762 {
1763 return std::vector<unsigned int>(_mesh.Cell2DVertices.begin() + _mesh.NumberCell2DVertices[cell2DIndex],
1764 _mesh.Cell2DVertices.begin() + _mesh.NumberCell2DVertices[cell2DIndex] +
1766 }
1767 std::vector<std::vector<unsigned int>> Cell2DsVertices() const;
1768 std::vector<Eigen::MatrixXi> Cell2DsExtremes() const;
1769
1770 inline unsigned int Cell2DVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const
1771 {
1775 }
1782 Eigen::MatrixXd Cell2DVerticesCoordinates(const unsigned int &cell2DIndex) const;
1783 unsigned int Cell2DFindVertex(const unsigned int &cell2DIndex, const unsigned int &cell0DIndex) const;
1784
1785 inline std::vector<unsigned int> Cell2DEdges(const unsigned int &cell2DIndex) const
1786 {
1787 return std::vector<unsigned int>(_mesh.Cell2DEdges.begin() + _mesh.NumberCell2DEdges[cell2DIndex],
1788 _mesh.Cell2DEdges.begin() + _mesh.NumberCell2DEdges[cell2DIndex] +
1790 }
1791
1792 inline unsigned int Cell2DEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex) const
1793 {
1796 return _mesh.Cell2DEdges[_mesh.NumberCell2DEdges[cell2DIndex] + edgeIndex];
1797 }
1798 unsigned int Cell2DFindEdge(const unsigned int &cell2DIndex, const unsigned int &cell1DIndex) const;
1799 unsigned int Cell2DFindEdgeByExtremes(const unsigned int &cell2DIndex,
1800 const unsigned int &originCell0DIndex,
1801 const unsigned int &endCell0DIndex) const;
1802 inline unsigned int Cell2DMarker(const unsigned int &cell2DIndex) const
1803 {
1805 return _mesh.Cell2DMarkers[cell2DIndex];
1806 }
1807 inline std::vector<unsigned int> Cell2DsMarker() const
1808 {
1809 return _mesh.Cell2DMarkers;
1810 }
1811 inline bool Cell2DIsActive(const unsigned int &cell2DIndex) const
1812 {
1814 return _mesh.ActiveCell2D[cell2DIndex];
1815 }
1816 inline std::vector<bool> Cell2DsState() const
1817 {
1818 return _mesh.ActiveCell2D;
1819 }
1820
1821 inline bool Cell2DHasUpdatedCell2Ds(const unsigned int &cell2DIndex) const
1822 {
1824 return _mesh.UpdatedCell2Ds.find(cell2DIndex) != _mesh.UpdatedCell2Ds.end();
1825 }
1826 inline unsigned int Cell2DNumberUpdatedCell2Ds(const unsigned int &cell2DIndex) const
1827 {
1829 return _mesh.UpdatedCell2Ds.at(cell2DIndex).size();
1830 }
1831 inline bool Cell2DHasUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIndex) const
1832 {
1835 return _mesh.UpdatedCell2Ds.at(cell2DIndex).find(updatedCell2DIndex) != _mesh.UpdatedCell2Ds.at(cell2DIndex).end();
1836 }
1837 void Cell2DInsertUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIdex);
1838 inline bool Cell2DHasOriginalCell2D(const unsigned int &updatedCell2DIndex) const
1839 {
1841 return _mesh.Cell2DOriginalCell2Ds.at(updatedCell2DIndex) < _mesh.NumberCell2D;
1842 }
1843 inline unsigned int Cell2DOriginalCell2D(const unsigned int &updatedCell2DIndex) const
1844 {
1847 }
1848 bool Cell2DUpdatedCell2Ds(const unsigned int &cell2DIndex, std::list<unsigned int> &updatedCell2DIds) const;
1849
1850 std::vector<std::vector<unsigned int>> Cell2DsNeighbourCell3Ds() const;
1851 inline void Cell2DsInitializeNeighbourCell3Ds(const std::vector<unsigned int> &numberNeighbourCell3Ds);
1852 void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const unsigned int &numberNeighbourCell3Ds);
1853 void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const std::vector<unsigned int> &neighbourCell3Ds);
1862 inline unsigned int Cell2DNumberNeighbourCell3D(const unsigned int &cell2DIndex) const
1863 {
1866 }
1873 inline std::vector<unsigned int> Cell2DNeighbourCell3Ds(const unsigned int &cell2DIndex) const
1874 {
1876
1877 std::list<unsigned int> neighbours;
1878 for (unsigned int n = 0; n < Cell2DNumberNeighbourCell3D(cell2DIndex); n++)
1879 {
1881 continue;
1882
1884 }
1885
1886 return std::vector<unsigned int>(neighbours.begin(), neighbours.end());
1887 }
1894 inline void Cell2DResetNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex)
1895 {
1897 std::numeric_limits<unsigned int>::max();
1898 }
1900 unsigned int Cell2DAddDoubleProperty(const std::string &propertyId);
1901 inline void Cell2DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector<unsigned int> &propertySizes);
1902 void Cell2DInitializeDoublePropertyValues(const unsigned int &cell2DIndex,
1903 const unsigned int &propertyIndex,
1904 const unsigned int &propertySize);
1916 inline unsigned int Cell2DNumberDoubleProperties() const
1917 {
1918 return _mesh.Cell2DDoublePropertyIds.size();
1919 }
1920 inline std::string Cell2DDoublePropertyId(const unsigned int &propertyIndex) const
1921 {
1923 }
1924 inline bool Cell2DDoublePropertyExists(const std::string &propertyId) const
1925 {
1926 return _mesh.Cell2DDoublePropertyIndices.find(propertyId) != _mesh.Cell2DDoublePropertyIndices.end();
1927 }
1928 inline unsigned int Cell2DDoublePropertyIndex(const std::string &propertyId) const
1929 {
1931 return _mesh.Cell2DDoublePropertyIndices.at(propertyId);
1932 }
1950
1951 inline void Cell2DsInitializeSubDivision(const std::vector<unsigned int> &numberSubDivisions);
1952
1953 void Cell2DInitializeSubDivision(const unsigned int &cell2DIndex, const unsigned int &numberSubDivision);
1961 inline unsigned int Cell2DNumberSubDivision(const unsigned int &cell2DIndex) const
1962 {
1965 }
1972
1973 void Cell3DsInitialize(const unsigned int &numberCell3Ds);
1974 unsigned int Cell3DAppend(const unsigned int &numberCell3Ds);
1975 void Cell3DRemove(const unsigned int &cell3DIndex);
1976 inline void Cell3DSetMarker(const unsigned int &cell3DIndex, const unsigned int &marker)
1977 {
1979 _mesh.Cell3DMarkers[cell3DIndex] = marker;
1980 }
1981 inline void Cell3DSetState(const unsigned int &cell3DIndex, const bool &state)
1982 {
1985 }
1986 inline void Cell3DsInitializeVertices(const std::vector<unsigned int> &numberCell3DsVertices);
1987 inline void Cell3DsInitializeEdges(const std::vector<unsigned int> &numberCell3DsEdges);
1988 inline void Cell3DsInitializeFaces(const std::vector<unsigned int> &numberCell3DsFaces);
1989 void Cell3DInitializeVertices(const unsigned int &cell3DIndex, const unsigned int &numberCell3DVertices);
1990 void Cell3DInitializeEdges(const unsigned int &cell3DIndex, const unsigned int &numberCell3DEdges);
1991 void Cell3DInitializeFaces(const unsigned int &cell3DIndex, const unsigned int &numberCell3DFaces);
2000 inline void Cell3DInsertVertices(const unsigned int &cell3DIndex, const std::vector<unsigned int> &verticesCell0DIndices)
2001 {
2002 for (unsigned int v = 0; v < verticesCell0DIndices.size(); v++)
2004 }
2013 inline void Cell3DInsertEdges(const unsigned int &cell3DIndex, const std::vector<unsigned int> &edgesCell1DIndices)
2014 {
2015 for (unsigned int e = 0; e < edgesCell1DIndices.size(); e++)
2017 }
2026 inline void Cell3DInsertFaces(const unsigned int &cell3DIndex, const std::vector<unsigned int> &facesCell2DIndices)
2027 {
2028 for (unsigned int f = 0; f < facesCell2DIndices.size(); f++)
2030 }
2031 void Cell3DAddVertices(const unsigned int &cell3DIndex, const std::vector<unsigned int> &verticesCell0DIndices);
2032 void Cell3DAddEdges(const unsigned int &cell3DIndex, const std::vector<unsigned int> &edgesCell1DIndices);
2033 void Cell3DAddFaces(const unsigned int &cell3DIndex, const std::vector<unsigned int> &facesCell2DIndices);
2034
2035 unsigned int Cell3DFindVertex(const unsigned int &cell3DIndex, const unsigned int &cell0DIndex) const;
2036 unsigned int Cell3DFindEdge(const unsigned int &cell3DIndex, const unsigned int &cell1DIndex) const;
2037 unsigned int Cell3DFindFace(const unsigned int &cell3DIndex, const unsigned int &cell2DIndex) const;
2038
2039 unsigned int Cell3DFindEdgeByExtremes(const unsigned int &cell3DIndex,
2040 const unsigned int &originCell0DIndex,
2041 const unsigned int &endCell0DIndex) const;
2042
2043 inline unsigned int Cell3DTotalNumber() const
2044 {
2045 return _mesh.NumberCell3D;
2046 }
2047 inline unsigned int Cell3DNumberVertices(const unsigned int &cell3DIndex) const
2048 {
2051 }
2052 inline unsigned int Cell3DNumberEdges(const unsigned int &cell3DIndex) const
2053 {
2056 }
2057 inline unsigned int Cell3DNumberFaces(const unsigned int &cell3DIndex) const
2058 {
2061 }
2062 std::vector<unsigned int> Cell3DVertices(const unsigned int &cell3DIndex) const;
2063 inline unsigned int Cell3DVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const
2064 {
2067
2069 }
2076 Eigen::MatrixXd Cell3DVerticesCoordinates(const unsigned int &cell3DIndex) const;
2077 std::vector<unsigned int> Cell3DEdges(const unsigned int &cell3DIndex) const;
2078 inline unsigned int Cell3DEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex) const
2079 {
2082
2083 return _mesh.Cell3DEdges[_mesh.NumberCell3DEdges[cell3DIndex] + edgeIndex];
2084 }
2085 std::vector<unsigned int> Cell3DFaces(const unsigned int &cell3DIndex) const;
2086 inline unsigned int Cell3DFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex) const
2087 {
2090
2091 return _mesh.Cell3DFaces[_mesh.NumberCell3DFaces[cell3DIndex] + faceIndex];
2092 }
2093 std::vector<std::vector<std::vector<unsigned int>>> Cell3DsFacesVertices() const;
2094 std::vector<std::vector<unsigned int>> Cell3DsVertices() const;
2095 std::vector<std::vector<unsigned int>> Cell3DsEdges() const;
2096 std::vector<std::vector<unsigned int>> Cell3DsFaces() const;
2097 inline unsigned int Cell3DMarker(const unsigned int &cell3DIndex) const
2098 {
2100 return _mesh.Cell3DMarkers[cell3DIndex];
2101 }
2102 inline std::vector<unsigned int> Cell3DsMarker() const
2103 {
2104 return _mesh.Cell3DMarkers;
2105 }
2106 inline bool Cell3DIsActive(const unsigned int &cell3DIndex) const
2107 {
2109 return _mesh.ActiveCell3D[cell3DIndex];
2110 }
2111 inline std::vector<bool> Cell3DsState() const
2112 {
2113 return _mesh.ActiveCell3D;
2114 }
2115
2116 inline bool Cell3DHasUpdatedCell3Ds(const unsigned int &cell3DIndex) const
2117 {
2119 return _mesh.UpdatedCell3Ds.find(cell3DIndex) != _mesh.UpdatedCell3Ds.end();
2120 }
2121 inline unsigned int Cell3DNumberUpdatedCell3Ds(const unsigned int &cell3DIndex) const
2122 {
2124 return _mesh.UpdatedCell3Ds.at(cell3DIndex).size();
2125 }
2126 inline bool Cell3DHasUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex) const
2127 {
2130 return _mesh.UpdatedCell3Ds.at(cell3DIndex).find(updatedCell3DIdex) != _mesh.UpdatedCell3Ds.at(cell3DIndex).end();
2131 }
2132 void Cell3DInsertUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex);
2133 bool Cell3DUpdatedCell3Ds(const unsigned int &cell3DIndex, std::list<unsigned int> &updatedCell3DIds) const;
2134 inline bool Cell3DHasOriginalCell3D(const unsigned int &updatedCell3DIndex) const
2135 {
2137 return _mesh.Cell3DOriginalCell3Ds.at(updatedCell3DIndex) < _mesh.NumberCell3D;
2138 }
2139 inline unsigned int Cell3DOriginalCell3D(const unsigned int &updatedCell3DIndex) const
2140 {
2143 }
2144
2146 unsigned int Cell3DAddDoubleProperty(const std::string &propertyId);
2147 inline void Cell3DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector<unsigned int> &propertySizes);
2148 void Cell3DInitializeDoublePropertyValues(const unsigned int &cell3DIndex,
2149 const unsigned int &propertyIndex,
2150 const unsigned int &propertySize);
2162 inline unsigned int Cell3DNumberDoubleProperties() const
2163 {
2164 return _mesh.Cell3DDoublePropertyIds.size();
2165 }
2166 inline std::string Cell3DDoublePropertyId(const unsigned int &propertyIndex) const
2167 {
2169 }
2170 inline bool Cell3DDoublePropertyExists(const std::string &propertyId) const
2171 {
2172 return _mesh.Cell3DDoublePropertyIndices.find(propertyId) != _mesh.Cell3DDoublePropertyIndices.end();
2173 }
2174 inline unsigned int Cell3DDoublePropertyIndex(const std::string &propertyId) const
2175 {
2177 return _mesh.Cell3DDoublePropertyIndices.at(propertyId);
2178 }
2196
2197 void Compress();
2198
2199 std::string ToString();
2200};
2201} // namespace Gedim
2202
2203#endif
Eigen column vector.
Definition Eigen_Array.hpp:23
The IMeshDAO (mesh data access object) class to read and write mesh data.
Definition IMeshDAO.hpp:24
virtual void Cell2DInitializeSubDivision(const unsigned int &cell2DIndex, const unsigned int &numberSubDivision)=0
Initialize the Cell2D subdivision number.
virtual bool Cell0DIsActive(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell3DTotalNumber() const =0
virtual void Cell2DsInitializeSubDivision(const std::vector< unsigned int > &numberSubDivisions)=0
Initialize the Cell2D subdivision number for each Cell2D.
virtual std::vector< bool > Cell0DsState() const =0
virtual unsigned int Cell1DVertex(const unsigned int &cell1DIndex, const unsigned int &vertexIndex) const =0
virtual Eigen::Vector3d Cell3DVertexCoordinates(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const =0
virtual unsigned int Cell2DNumberSubDivision(const unsigned int &cell2DIndex) const =0
virtual void Cell1DInsertDoublePropertyValue(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)=0
Insert the Cell1Ds double property value at position.
virtual void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell1Ds)=0
Initialize the Cell0D Cell1D neighbours number.
virtual unsigned int Cell2DAddDoubleProperty(const std::string &propertyId)=0
Add the Cell2Ds double property identified by id.
virtual Eigen::MatrixXi Cell1DsExtremes(const std::vector< unsigned int > &cell1Ds) const =0
virtual std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell1Ds() const =0
virtual void Cell0DInsertCoordinates(const unsigned int &cell0DIndex, const Eigen::Vector3d &coordinates)=0
Add the Cell0D Coordinates.
virtual Eigen::Vector3d Cell0DCoordinates(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell1DNumberDoubleProperties() const =0
virtual void Cell3DsInitialize(const unsigned int &numberCell3Ds)=0
Initialize the Cell3Ds container.
virtual void Cell1DInsertUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex)=0
Add the new Cell1D to an existing Cell1D.
virtual std::vector< bool > Cell1DsState() const =0
virtual void Cell0DInsertNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell2DIndex)=0
Insert the Cell0D Cell2D neighbour.
virtual unsigned int Cell2DNumberUpdatedCell2Ds(const unsigned int &cell2DIndex) const =0
virtual void Cell2DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &porpertySizes)=0
Initialize the Cell2Ds double property sizes.
virtual void Cell0DResetNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell0D Cell1D neighbour to empty value (Cell0DHasNeighbourCell1D is false)
virtual void Cell1DSetMarker(const unsigned int &cell1DIndex, const unsigned int &marker)=0
Set the Cell1D Marker.
virtual unsigned int Cell0DNumberNeighbourCell1D(const unsigned int &cell0DIndex) const =0
virtual void Cell3DsInitializeVertices(const std::vector< unsigned int > &numberCell3DsVertices)=0
Initialize the Cell3Ds vertices number.
virtual unsigned int Cell0DNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual unsigned int Cell0DTotalNumber() const =0
virtual bool Cell1DUpdatedCell1Ds(const unsigned int &cell1DIndex, std::list< unsigned int > &updatedCell1DIds) const =0
return the updated Cell1D Ids for cell1DIndex
virtual void Cell2DInsertUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIdex)=0
Add the new Cell2D to an existing Cell2D.
virtual std::vector< std::vector< unsigned int > > Cell1DsNeighbourCell2Ds() const =0
virtual void Cell2DInsertVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex, const unsigned int &vertexCell0DIndex)=0
Insert the Cell2D vertex.
virtual std::vector< unsigned int > Cell1DNeighbourCell2Ds(const unsigned int &cell1DIndex) const =0
virtual std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell3Ds() const =0
virtual std::vector< unsigned int > Cell0DNeighbourCell1Ds(const unsigned int &cell0DIndex) const =0
virtual void Cell0DInsertUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex)=0
Add the new Cell0D to an existing Cell0D.
virtual unsigned int Cell0DNumberNeighbourCell2D(const unsigned int &cell0DIndex) const =0
virtual void Cell3DInitializeDoublePropertyValues(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &porpertySize)=0
Initialize the Cell3Ds double property size.
virtual std::string ToString()=0
virtual bool Cell0DDoublePropertyExists(const std::string &propertyId) const =0
virtual void Cell1DsInitialize(const unsigned int &numberCell1Ds)=0
Initialize the Cell1Ds container.
virtual bool Cell2DHasUpdatedCell2Ds(const unsigned int &cell2DIndex) const =0
virtual void Compress()=0
Compact the mesh to save memory.
virtual unsigned int Cell1DFindExtreme(const unsigned int &cell1DIndex, const unsigned int &cell0DIndex) const =0
virtual void Cell2DInsertVertices(const unsigned int &cell2DIndex, const std::vector< unsigned int > &verticesCell0DIndices)=0
Insert the Cell2D vertex.
virtual bool Cell0DHasNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual void Cell3DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)=0
Initialize the Cell3Ds double properties.
virtual void Cell3DSetMarker(const unsigned int &cell3DIndex, const unsigned int &marker)=0
Set the Cell1D Marker.
virtual unsigned int Cell1DNumberNeighbourCell2D(const unsigned int &cell1DIndex) const =0
virtual bool Cell0DHasNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual void Cell3DInitializeEdges(const unsigned int &cell3DIndex, const unsigned int &numberCell3DEdges)=0
Initialize the Cell3D edges number.
virtual std::vector< std::vector< unsigned int > > Cell1DsNeighbourCell3Ds() const =0
virtual void Cell1DResetNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell1D Cell3D neighbour to empty value (Cell1DHasNeighbourCell3D is false)
virtual void Cell3DInsertVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex, const unsigned int &vertexCell0DIndex)=0
Insert the Cell3D vertex.
virtual bool Cell3DHasOriginalCell3D(const unsigned int &updatedCell3DIndex) const =0
virtual unsigned int Cell3DOriginalCell3D(const unsigned int &updatedCell3DIndex) const =0
virtual void Cell1DsInitializeNeighbourCell2Ds(const std::vector< unsigned int > &numbersNeighbourCell2Ds)=0
Initialize the Cell1Ds Cell2D neighbours number.
virtual std::vector< std::vector< unsigned int > > Cell3DsVertices() const =0
virtual void Cell1DRemove(const unsigned int &cell1DIndex)=0
Remove the Cell1D from the mesh.
virtual void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell3Ds)=0
Initialize the Cell0D Cell3D neighbours number.
virtual void Cell2DsInitializeVertices(const std::vector< unsigned int > &numberCell2DsVertices)=0
Initialize the Cell2Ds vertices number.
virtual unsigned int Cell1DAppend(const unsigned int &numberCell1Ds)=0
Append Cell1Ds to the Cell1Ds container.
virtual void Cell3DInsertEdges(const unsigned int &cell3DIndex, const std::vector< unsigned int > &edgesCell1DIndices)=0
Insert the Cell3D edges.
virtual bool Cell2DHasNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const =0
virtual unsigned int Cell3DNumberUpdatedCell3Ds(const unsigned int &cell3DIndex) const =0
virtual void Cell1DSetState(const unsigned int &cell1DIndex, const bool &state)=0
Set the Cell1D state.
virtual void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell3Ds)=0
Initialize the Cell1D Cell3D neighbours number.
virtual std::vector< unsigned int > Cell2DsMarker() const =0
virtual unsigned int Cell2DVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const =0
virtual std::vector< std::vector< std::vector< unsigned int > > > Cell3DsFacesVertices() const =0
virtual void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const std::vector< unsigned int > &neighbourCell3Ds)=0
virtual std::vector< std::vector< unsigned int > > Cell3DsFaces() const =0
virtual void Cell0DInsertNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell1DIndex)=0
Insert the Cell0D Cell1D neighbour.
virtual unsigned int Cell3DNumberFaces(const unsigned int &cell3DIndex) const =0
virtual double Cell0DCoordinateX(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell0DNumberNeighbourCell3D(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell1DAddDoubleProperty(const std::string &propertyId)=0
Add the Cell1Ds double property identified by id.
virtual std::vector< unsigned int > Cell3DVertices(const unsigned int &cell3DIndex) const =0
virtual void Cell2DsInitializeVertices(const unsigned int &numberCell2DVertices)=0
Initialize the Cell2Ds vertices number.
virtual void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const std::vector< unsigned int > &neighbourCell1Ds)=0
virtual unsigned int Cell2DNumberVertices(const unsigned int &cell2DIndex) const =0
virtual Eigen::MatrixXi Cell1DsExtremes() const =0
virtual void Cell2DAddEdges(const unsigned int &cell2DIndex, const std::vector< unsigned int > &edgesCell1DIndices)=0
Add the Cell2D edges.
virtual bool Cell2DHasUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIndex) const =0
virtual void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const std::vector< unsigned int > &neighbourCell2Ds)=0
virtual std::vector< std::vector< unsigned int > > Cell3DsEdges() const =0
virtual unsigned int Cell2DNumberNeighbourCell3D(const unsigned int &cell2DIndex) const =0
virtual void Cell2DInsertDoublePropertyValue(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)=0
Insert the Cell2Ds double property value at position.
virtual unsigned int Cell3DEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex) const =0
virtual double Cell0DCoordinateZ(const unsigned int &cell0DIndex) const =0
virtual double Cell1DDoublePropertyValue(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const =0
virtual unsigned int Cell2DDoublePropertyIndex(const std::string &propertyId) const =0
virtual unsigned int Cell1DDoublePropertySize(const unsigned int &cell1DIndex, const unsigned int &propertyIndex) const =0
virtual unsigned int Cell2DFindVertex(const unsigned int &cell2DIndex, const unsigned int &cell0DIndex) const =0
virtual bool Cell2DUpdatedCell2Ds(const unsigned int &cell2DIndex, std::list< unsigned int > &updatedCell2DIds) const =0
return the updated Cell2D Ids for cell2DIndex
virtual Eigen::MatrixXd Cell3DVerticesCoordinates(const unsigned int &cell3DIndex) const =0
virtual unsigned int Cell1DEnd(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell3DNumberDoubleProperties() const =0
virtual unsigned int Cell3DAppend(const unsigned int &numberCell3Ds)=0
Append Cell3Ds to the Cell3Ds container.
virtual void Cell2DSetMarker(const unsigned int &cell2DIndex, const unsigned int &marker)=0
Set the Cell2D Marker.
virtual bool Cell1DHasUpdatedCell1Ds(const unsigned int &cell1DIndex) const =0
virtual void Cell1DInsertNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell2DIndex)=0
Insert the Cell1D Cell2D neighbour.
virtual unsigned int Cell1DNumberNeighbourCell3D(const unsigned int &cell1DIndex) const =0
virtual std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell2Ds() const =0
virtual void Cell3DSetState(const unsigned int &cell3DIndex, const bool &state)=0
Set the Cell3D state.
virtual unsigned int Cell2DNumberEdges(const unsigned int &cell2DIndex) const =0
virtual void Cell2DsInitialize(const unsigned int &numberCell2Ds)=0
Initialize the Cell2Ds container.
virtual void Cell3DInsertUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex)=0
Add the new Cell3D to an existing Cell3D.
virtual void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const std::vector< unsigned int > &neighbourCell3Ds)=0
virtual void Cell0DResetNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell0D Cell3D neighbour to empty value (Cell0DHasNeighbourCell3D is false)
virtual unsigned int Cell2DFindEdge(const unsigned int &cell2DIndex, const unsigned int &cell1DIndex) const =0
virtual void Cell0DSetState(const unsigned int &cell0DIndex, const bool &state)=0
Set the Cell0D state.
virtual void Cell0DsInitializeNeighbourCell2Ds(const std::vector< unsigned int > &numbersNeighbourCell2Ds)=0
Initialize the Cell0Ds Cell2D neighbours number.
virtual void Cell0DRemove(const unsigned int &cell0DIndex)=0
Remove the Cell0D from the mesh.
virtual void Cell2DInsertEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex)=0
Insert the Cell2D edge.
virtual void Cell2DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)=0
Initialize the Cell2Ds double properties.
virtual void Cell3DInitializeFaces(const unsigned int &cell3DIndex, const unsigned int &numberCell3DFaces)=0
Initialize the Cell3D faces number.
virtual void Cell3DInsertEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex)=0
Insert the Cell3D edge.
virtual void Cell0DInsertDoublePropertyValue(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)=0
Insert the Cell0Ds double property value at position.
virtual unsigned int Cell1DMarker(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell3DFindEdge(const unsigned int &cell3DIndex, const unsigned int &cell1DIndex) const =0
virtual void Cell2DsInitializeEdges(const unsigned int &numberCell2DEdges)=0
Initialize the Cell2Ds edges number.
virtual unsigned int Cell3DFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex) const =0
virtual Eigen::MatrixXd Cell2DVerticesCoordinates(const unsigned int &cell2DIndex) const =0
virtual void Cell2DInitializeEdges(const unsigned int &cell2DIndex, const unsigned int &numberCell2DEdges)=0
Initialize the Cell2D edges number.
virtual std::string Cell1DDoublePropertyId(const unsigned int &propertyIndex) const =0
virtual unsigned int Cell3DDoublePropertySize(const unsigned int &cell3DIndex, const unsigned int &propertyIndex) const =0
virtual void Cell2DAddVertices(const unsigned int &cell2DIndex, const std::vector< unsigned int > &verticesCell0DIndices)=0
Add the Cell2D vertices.
virtual void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const std::vector< unsigned int > &neighbourCell3Ds)=0
virtual std::vector< bool > Cell3DsState() const =0
virtual std::vector< unsigned int > Cell2DNeighbourCell3Ds(const unsigned int &cell2DIndex) const =0
virtual unsigned int Cell1DNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const =0
virtual bool Cell1DHasUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex) const =0
virtual std::vector< bool > Cell2DsState() const =0
virtual bool Cell3DHasUpdatedCell3Ds(const unsigned int &cell3DIndex) const =0
virtual Eigen::Vector3d Cell1DEndCoordinates(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell2DSubDivisionCell0D(const unsigned int &cell2DIndex, const unsigned int &subDivisionIndex) const =0
virtual void Cell3DInsertFaces(const unsigned int &cell3DIndex, const std::vector< unsigned int > &facesCell2DIndices)=0
Insert the Cell3D faces.
virtual std::vector< unsigned int > Cell0DNeighbourCell3Ds(const unsigned int &cell0DIndex) const =0
virtual void InitializeDimension(const unsigned int &dimension)=0
Initialize the mesh dimension.
virtual unsigned int Cell1DTotalNumber() const =0
virtual void Cell2DInsertNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)=0
Insert the Cell2D Cell3D neighbour.
virtual void Cell0DsInitialize(const unsigned int &numberCell0Ds)=0
Initialize the Cell0Ds container.
virtual void Cell2DInsertSubDivision(const unsigned int &cell2DIndex, const unsigned int &subDivisionIndex, const unsigned int &cell2DVertexIndex)=0
Insert the subDivision vertex index.
virtual void Cell1DInsertNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)=0
Insert the Cell1D Cell3D neighbour.
virtual unsigned int Cell3DNumberVertices(const unsigned int &cell3DIndex) const =0
virtual void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const unsigned int &numberNeighbourCell3Ds)=0
Initialize the Cell2D Cell3D neighbours number.
virtual void Cell0DSetMarker(const unsigned int &cell0DIndex, const unsigned int &marker)=0
Set the Cell0D Marker.
virtual unsigned int Cell0DDoublePropertySize(const unsigned int &cell0DIndex, const unsigned int &propertyIndex) const =0
virtual bool Cell1DIsActive(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell3DFindEdgeByExtremes(const unsigned int &cell3DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const =0
virtual std::vector< unsigned int > Cell2DVertices(const unsigned int &cell2DIndex) const =0
virtual bool Cell3DHasUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex) const =0
virtual void Cell1DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numbersNeighbourCell3Ds)=0
Initialize the Cell1Ds Cell3D neighbours number.
virtual unsigned int Cell0DNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual std::vector< unsigned int > Cell1DNeighbourCell3Ds(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell3DVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const =0
virtual void Cell1DsInsertExtremes(const Eigen::MatrixXi &cell1DExtremes)=0
Set the Cell1D Extremes for the whole mesh edges.
virtual void Cell2DRemove(const unsigned int &cell2DIndex)=0
Remove the Cell2D from the mesh.
virtual ~IMeshDAO()
Definition IMeshDAO.hpp:26
virtual unsigned int Cell1DOrigin(const unsigned int &cell1DIndex) const =0
virtual void Cell1DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)=0
Initialize the Cell1Ds double properties.
virtual void Cell2DResetNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell2D Cell3D neighbour to empty value (Cell2DHasNeighbourCell3D is false)
virtual unsigned int Cell3DFindVertex(const unsigned int &cell3DIndex, const unsigned int &cell0DIndex) const =0
virtual bool Cell3DUpdatedCell3Ds(const unsigned int &cell3DIndex, std::list< unsigned int > &updatedCell3DIds) const =0
return the updated Cell3D Ids for cell3DIndex
virtual void Cell2DsInitializeEdges(const std::vector< unsigned int > &numberCell2DsEdges)=0
Initialize the Cell2Ds edges number.
virtual void Cell0DInsertNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)=0
Insert the Cell0D Cell3D neighbour.
virtual unsigned int Cell0DMarker(const unsigned int &cell0DIndex) const =0
virtual void Cell3DAddVertices(const unsigned int &cell3DIndex, const std::vector< unsigned int > &verticesCell0DIndices)=0
Add the Cell3D vertices.
virtual Eigen::MatrixXd Cell0DsCoordinates(const std::vector< unsigned int > &cell0Ds) const =0
virtual double Cell0DDoublePropertyValue(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const =0
virtual unsigned int Cell2DFindEdgeByExtremes(const unsigned int &cell2DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const =0
virtual void Cell1DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &porpertySizes)=0
Initialize the Cell1Ds double property sizes.
virtual std::vector< unsigned int > Cell1DsMarker() const =0
virtual void Cell0DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numbersNeighbourCell3Ds)=0
Initialize the Cell0Ds Cell3D neighbours number.
virtual void Cell0DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &porpertySizes)=0
Initialize the Cell0Ds double property sizes.
virtual Eigen::Vector3d Cell1DOriginCoordinates(const unsigned int &cell1DIndex) const =0
virtual unsigned int Cell0DNumberUpdatedCell0Ds(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell0DAppend(const unsigned int &numberCell0Ds)=0
Append Cell0Ds to the Cell0Ds container.
virtual unsigned int Cell1DDoublePropertyIndex(const std::string &propertyId) const =0
virtual void Cell0DInitializeDoublePropertyValues(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &porpertySize)=0
Initialize the Cell0Ds double property size.
virtual bool Cell2DIsActive(const unsigned int &cell2DIndex) const =0
virtual unsigned int Cell3DAddDoubleProperty(const std::string &propertyId)=0
Add the Cell3Ds double property identified by id.
virtual std::vector< std::vector< unsigned int > > Cell2DsVertices() const =0
virtual void Cell2DAddVerticesAndEdges(const unsigned int &cell2DIndex, const Eigen::MatrixXi &verticesAndEdgesIndices)=0
Cell2D Add Vertices And Edges.
virtual unsigned int Dimension() const =0
virtual unsigned int Cell1DOriginalCell1D(const unsigned int &updatedCell1DIndex) const =0
virtual Eigen::Vector3d Cell2DVertexCoordinates(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const =0
virtual unsigned int Cell2DTotalNumber() const =0
virtual bool Cell3DDoublePropertyExists(const std::string &propertyId) const =0
virtual unsigned int Cell2DNumberDoubleProperties() const =0
virtual bool Cell1DHasNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const =0
virtual Eigen::VectorXi Cell1DExtremes(const unsigned int &cell1DIndex) const =0
virtual void Cell0DsInsertCoordinates(const Eigen::MatrixXd &coordinates)=0
Add the Cell0Ds Coordinates.
virtual bool Cell0DHasNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual bool Cell1DHasNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const =0
virtual bool Cell2DDoublePropertyExists(const std::string &propertyId) const =0
virtual std::string Cell2DDoublePropertyId(const unsigned int &propertyIndex) const =0
virtual unsigned int Cell2DEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex) const =0
virtual std::vector< unsigned int > Cell3DsMarker() const =0
virtual Eigen::MatrixXd Cell0DsCoordinates() const =0
virtual void Cell2DInsertEdges(const unsigned int &cell2DIndex, const std::vector< unsigned int > &edgesCell1DIndices)=0
Insert the Cell2D edge.
virtual unsigned int Cell3DNumberEdges(const unsigned int &cell3DIndex) const =0
virtual bool Cell0DHasUpdatedCell0Ds(const unsigned int &cell0DIndex) const =0
virtual void Cell3DRemove(const unsigned int &cell3DIndex)=0
Remove the Cell3D from the mesh.
virtual bool Cell1DHasOriginalCell1D(const unsigned int &updatedCell1DIndex) const =0
virtual unsigned int Cell0DNumberDoubleProperties() const =0
virtual void Cell1DResetNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell1D Cell2D neighbour to empty value (Cell1DHasNeighbourCell2D is false)
virtual Eigen::MatrixXd Cell1DCoordinates(const unsigned int &cell1DIndex) const =0
virtual void Cell2DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numbersNeighbourCell3Ds)=0
Initialize the Cell2Ds Cell3D neighbours number.
virtual bool Cell2DHasOriginalCell2D(const unsigned int &updatedCell2DIndex) const =0
virtual double Cell2DDoublePropertyValue(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const =0
virtual void Cell3DAddFaces(const unsigned int &cell3DIndex, const std::vector< unsigned int > &facesCell0DIndices)=0
Add the Cell3D faces.
virtual std::vector< unsigned int > Cell3DEdges(const unsigned int &cell3DIndex) const =0
virtual unsigned int Cell0DNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const =0
virtual void Cell3DInsertDoublePropertyValue(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)=0
Insert the Cell3Ds double property value at position.
virtual void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const std::vector< unsigned int > &neighbourCell2Ds)=0
virtual bool Cell0DHasUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex) const =0
virtual unsigned int Cell1DNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const =0
virtual unsigned int Cell2DMarker(const unsigned int &cell2DIndex) const =0
virtual bool Cell0DUpdatedCell0Ds(const unsigned int &cell0DIndex, std::list< unsigned int > &updatedCell0DIds) const =0
return the updated Cell0D Ids for cell0DIndex
virtual void Cell0DResetNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)=0
Reset the Cell0D Cell2D neighbour to empty value (Cell0DHasNeighbourCell2D is false)
virtual void Cell3DInitializeVertices(const unsigned int &cell3DIndex, const unsigned int &numberCell3DVertices)=0
Initialize the Cell3D vertices number.
virtual void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell2Ds)=0
Initialize the Cell0D Cell2D neighbours number.
virtual unsigned int Cell1DNumberUpdatedCell1Ds(const unsigned int &cell1DIndex) const =0
virtual double Cell3DDoublePropertyValue(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const =0
virtual void Cell3DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &porpertySizes)=0
Initialize the Cell3Ds double property sizes.
virtual std::vector< unsigned int > Cell2DEdges(const unsigned int &cell2DIndex) const =0
virtual void Cell0DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)=0
Initialize the Cell0Ds double properties.
virtual void Cell1DInsertExtremes(const unsigned int &cell1DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex)=0
Set the Cell1D Origin and End.
virtual unsigned int Cell2DAppend(const unsigned int &numberCell2Ds)=0
Append Cell2Ds to the Cell2Ds container.
virtual unsigned int Cell3DDoublePropertyIndex(const std::string &propertyId) const =0
virtual void Cell3DAddEdges(const unsigned int &cell3DIndex, const std::vector< unsigned int > &edgesCell0DIndices)=0
Add the Cell3D edges.
virtual unsigned int Cell2DDoublePropertySize(const unsigned int &cell2DIndex, const unsigned int &propertyIndex) const =0
virtual bool Cell1DDoublePropertyExists(const std::string &propertyId) const =0
virtual unsigned int Cell3DMarker(const unsigned int &cell3DIndex) const =0
virtual void Cell1DInitializeDoublePropertyValues(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &porpertySize)=0
Initialize the Cell1Ds double property size.
virtual unsigned int Cell0DDoublePropertyIndex(const std::string &propertyId) const =0
virtual unsigned int Cell3DFindFace(const unsigned int &cell3DIndex, const unsigned int &cell2DIndex) const =0
virtual std::vector< Eigen::MatrixXi > Cell2DsExtremes() const =0
virtual std::vector< unsigned int > Cell0DNeighbourCell2Ds(const unsigned int &cell0DIndex) const =0
virtual unsigned int Cell2DOriginalCell2D(const unsigned int &updatedCell2DIndex) const =0
virtual unsigned int Cell2DNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const =0
virtual void Cell0DsInitializeNeighbourCell1Ds(const std::vector< unsigned int > &numbersNeighbourCell1Ds)=0
Initialize the Cell0Ds Cell1D neighbours number.
virtual unsigned int Cell1DByExtremes(const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const =0
virtual std::string Cell3DDoublePropertyId(const unsigned int &propertyIndex) const =0
virtual void Cell2DInitializeDoublePropertyValues(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &porpertySize)=0
Initialize the Cell2Ds double property size.
virtual void Cell1DsInitializeNeighbourCell2Ds(const unsigned int &numberNeighbourCell2Ds)=0
Initialize the Cell1Ds Cell2D neighbours number.
virtual std::vector< unsigned int > Cell0DsMarker() const =0
virtual void Cell3DInsertFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex, const unsigned int &faceCell2DIndex)=0
Insert the Cell3D face.
virtual void Cell2DSetState(const unsigned int &cell2DIndex, const bool &state)=0
Set the Cell1D state.
virtual void Cell3DsInitializeFaces(const std::vector< unsigned int > &numberCell3DsFaces)=0
Initialize the Cell3Ds faces number.
virtual void Cell2DInitializeVertices(const unsigned int &cell2DIndex, const unsigned int &numberCell2DVertices)=0
Initialize the Cell2D vertices number.
virtual void Cell3DInsertVertices(const unsigned int &cell3DIndex, const std::vector< unsigned int > &verticesCell0DIndices)=0
Insert the Cell3D vertex.
virtual std::string Cell0DDoublePropertyId(const unsigned int &propertyIndex) const =0
virtual std::vector< std::vector< unsigned int > > Cell2DsNeighbourCell3Ds() const =0
virtual std::vector< unsigned int > Cell3DFaces(const unsigned int &cell3DIndex) const =0
virtual bool Cell3DIsActive(const unsigned int &cell3DIndex) const =0
virtual unsigned int Cell0DAddDoubleProperty(const std::string &propertyId)=0
Add the Cell0Ds double property identified by id.
virtual double Cell0DCoordinateY(const unsigned int &cell0DIndex) const =0
virtual void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell2Ds)=0
Initialize the Cell1D Cell2D neighbours number.
virtual void Cell3DsInitializeEdges(const std::vector< unsigned int > &numberCell3DsEdges)=0
Initialize the Cell3Ds edges number.
Definition IMeshDAO.hpp:1068
bool Cell1DDoublePropertyExists(const std::string &propertyId) const
Definition IMeshDAO.hpp:1672
std::vector< std::vector< unsigned int > > Cell2DsVertices() const
Definition MeshMatricesDAO.cpp:981
void Cell2DInitializeVertices(const unsigned int &cell2DIndex, const unsigned int &numberCell2DVertices)
Initialize the Cell2D vertices number.
Definition MeshMatricesDAO.cpp:928
std::vector< unsigned int > Cell1DsMarker() const
Definition IMeshDAO.hpp:1555
unsigned int Cell2DEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex) const
Definition IMeshDAO.hpp:1792
unsigned int Cell0DNumberNeighbourCell1D(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1239
void Cell0DInsertCoordinates(const unsigned int &cell0DIndex, const Eigen::Vector3d &coordinates)
Add the Cell0D Coordinates.
Definition MeshMatricesDAO.cpp:255
void Cell0DsInitializeNeighbourCell1Ds(const std::vector< unsigned int > &numberNeighbourCell1Ds)
Initialize the Cell0Ds Cell1D neighbours number.
Definition MeshMatricesDAO.cpp:333
unsigned int Cell0DDoublePropertySize(const unsigned int &cell0DIndex, const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1410
void Cell2DInsertVertices(const unsigned int &cell2DIndex, const std::vector< unsigned int > &verticesCell0DIndices)
Insert the Cell2D vertex.
Definition IMeshDAO.hpp:1718
void Cell3DInitializeEdges(const unsigned int &cell3DIndex, const unsigned int &numberCell3DEdges)
Initialize the Cell3D edges number.
Definition MeshMatricesDAO.cpp:1293
std::vector< unsigned int > Cell3DFaces(const unsigned int &cell3DIndex) const
Definition MeshMatricesDAO.cpp:1474
unsigned int Cell1DDoublePropertyIndex(const std::string &propertyId) const
Definition IMeshDAO.hpp:1676
bool Cell2DIsActive(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1811
unsigned int Cell0DTotalNumber() const
Definition IMeshDAO.hpp:1163
unsigned int Cell0DNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1294
Eigen::MatrixXd Cell2DVerticesCoordinates(const unsigned int &cell2DIndex) const
Definition MeshMatricesDAO.cpp:1005
unsigned int Cell3DFindEdgeByExtremes(const unsigned int &cell3DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const
Definition MeshMatricesDAO.cpp:1356
unsigned int Cell1DDoublePropertySize(const unsigned int &cell1DIndex, const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1681
bool Cell3DHasOriginalCell3D(const unsigned int &updatedCell3DIndex) const
Definition IMeshDAO.hpp:2134
unsigned int Cell3DNumberFaces(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2057
std::vector< unsigned int > Cell3DsMarker() const
Definition IMeshDAO.hpp:2102
void Cell3DInsertUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex)
Add the new Cell3D to an existing Cell3D.
Definition MeshMatricesDAO.cpp:1390
void InitializeDimension(const unsigned int &dimension)
Initialize the mesh dimension.
Definition IMeshDAO.hpp:1137
void Cell1DsInitialize(const unsigned int &numberCell1Ds)
Initialize the Cell1Ds container.
Definition MeshMatricesDAO.cpp:501
std::vector< unsigned int > Cell0DNeighbourCell2Ds(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1300
void Cell1DInitializeNeighbourCell3Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell3Ds)
Initialize the Cell1D Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:761
bool Cell0DIsActive(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1198
Eigen::MatrixXd Cell3DVerticesCoordinates(const unsigned int &cell3DIndex) const
Definition MeshMatricesDAO.cpp:1382
std::vector< unsigned int > Cell1DNeighbourCell3Ds(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1621
void Cell2DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &propertySizes)
Initialize the Cell2Ds double property sizes.
Definition MeshMatricesDAO.cpp:1144
void Cell2DsInitialize(const unsigned int &numberCell2Ds)
Initialize the Cell2Ds container.
Definition MeshMatricesDAO.cpp:819
Eigen::MatrixXd Cell1DCoordinates(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1500
std::vector< unsigned int > Cell0DsMarker() const
Definition IMeshDAO.hpp:1194
unsigned int Cell2DNumberNeighbourCell3D(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1862
void Cell1DInitializeNeighbourCell2Ds(const unsigned int &cell1DIndex, const unsigned int &numberNeighbourCell2Ds)
Initialize the Cell1D Cell2D neighbours number.
Definition MeshMatricesDAO.cpp:677
void Cell2DInsertEdges(const unsigned int &cell2DIndex, const std::vector< unsigned int > &edgesCell1DIndices)
Insert the Cell2D edge.
Definition IMeshDAO.hpp:1730
std::vector< unsigned int > Cell3DEdges(const unsigned int &cell3DIndex) const
Definition MeshMatricesDAO.cpp:1463
void Cell1DInsertDoublePropertyValue(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)
Insert the Cell1Ds double property value at position.
Definition IMeshDAO.hpp:1653
unsigned int Cell2DAppend(const unsigned int &numberCell2Ds)
Append Cell2Ds to the Cell2Ds container.
Definition MeshMatricesDAO.cpp:833
double Cell0DCoordinateY(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1172
void Cell0DInsertNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)
Insert the Cell0D Cell3D neighbour.
Definition IMeshDAO.hpp:1330
unsigned int Cell1DTotalNumber() const
Definition IMeshDAO.hpp:1469
void Cell3DsInitializeFaces(const std::vector< unsigned int > &numberCell3DsFaces)
Initialize the Cell3Ds faces number.
Definition MeshMatricesDAO.cpp:1281
double Cell0DDoublePropertyValue(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const
Definition IMeshDAO.hpp:1417
void Cell0DsInitialize(const unsigned int &numberCell0Ds)
Initialize the Cell0Ds container.
Definition MeshMatricesDAO.cpp:167
void Cell0DInsertNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell2DIndex)
Insert the Cell0D Cell2D neighbour.
Definition IMeshDAO.hpp:1281
unsigned int Cell2DNumberDoubleProperties() const
Definition IMeshDAO.hpp:1916
unsigned int Cell2DFindEdge(const unsigned int &cell2DIndex, const unsigned int &cell1DIndex) const
Definition MeshMatricesDAO.cpp:1023
void Cell3DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &propertySizes)
Initialize the Cell3Ds double property sizes.
Definition MeshMatricesDAO.cpp:1439
unsigned int Cell1DEnd(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1484
Eigen::VectorXi Cell1DExtremes(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1439
unsigned int Dimension() const
Definition IMeshDAO.hpp:1141
unsigned int Cell2DAddDoubleProperty(const std::string &propertyId)
Add the Cell2Ds double property identified by id.
Definition MeshMatricesDAO.cpp:1132
std::vector< bool > Cell2DsState() const
Definition IMeshDAO.hpp:1816
bool Cell0DHasUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex) const
Definition IMeshDAO.hpp:1218
std::vector< std::vector< unsigned int > > Cell1DsNeighbourCell3Ds() const
Definition MeshMatricesDAO.cpp:736
void Cell2DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)
Initialize the Cell2Ds double properties.
Definition MeshMatricesDAO.cpp:1125
bool Cell1DHasNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1538
void Cell1DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numberNeighbourCell3Ds)
Initialize the Cell1Ds Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:752
unsigned int Cell2DSubDivisionCell0D(const unsigned int &cell2DIndex, const unsigned int &subDivisionIndex) const
Definition IMeshDAO.hpp:1966
void Cell0DRemove(const unsigned int &cell0DIndex)
Remove the Cell0D from the mesh.
Definition MeshMatricesDAO.cpp:217
unsigned int Cell2DOriginalCell2D(const unsigned int &updatedCell2DIndex) const
Definition IMeshDAO.hpp:1843
void Cell3DInsertFaces(const unsigned int &cell3DIndex, const std::vector< unsigned int > &facesCell2DIndices)
Insert the Cell3D faces.
Definition IMeshDAO.hpp:2026
unsigned int Cell2DNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1867
unsigned int Cell0DAppend(const unsigned int &numberCell0Ds)
Append Cell0Ds to the Cell0Ds container.
Definition MeshMatricesDAO.cpp:180
void Compress()
Compact the mesh to save memory.
Definition MeshMatricesDAO.cpp:1531
void Cell1DInsertNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell2DIndex)
Insert the Cell1D Cell2D neighbour.
Definition IMeshDAO.hpp:1461
std::vector< std::vector< unsigned int > > Cell3DsFaces() const
Definition MeshMatricesDAO.cpp:1521
void Cell1DSetMarker(const unsigned int &cell1DIndex, const unsigned int &marker)
Set the Cell1D Marker.
Definition IMeshDAO.hpp:1446
unsigned int Cell3DOriginalCell3D(const unsigned int &updatedCell3DIndex) const
Definition IMeshDAO.hpp:2139
bool Cell1DHasOriginalCell1D(const unsigned int &updatedCell1DIndex) const
Definition IMeshDAO.hpp:1568
void Cell3DInsertVertices(const unsigned int &cell3DIndex, const std::vector< unsigned int > &verticesCell0DIndices)
Insert the Cell3D vertex.
Definition IMeshDAO.hpp:2000
unsigned int Cell2DFindVertex(const unsigned int &cell2DIndex, const unsigned int &cell0DIndex) const
Definition MeshMatricesDAO.cpp:1013
void Cell3DInsertVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex, const unsigned int &vertexCell0DIndex)
Insert the Cell3D vertex.
Definition IMeshDAO.hpp:1992
void Cell2DInsertSubDivision(const unsigned int &cell2DIndex, const unsigned int &subDivisionIndex, const unsigned int &cell0DIndex)
Insert the subDivision vertex index.
Definition IMeshDAO.hpp:1954
std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell1Ds() const
Definition MeshMatricesDAO.cpp:317
void Cell0DResetNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
Reset the Cell0D Cell2D neighbour to empty value (Cell0DHasNeighbourCell2D is false)
Definition IMeshDAO.hpp:1321
unsigned int Cell1DAppend(const unsigned int &numberCell1Ds)
Append Cell1Ds to the Cell1Ds container.
Definition MeshMatricesDAO.cpp:514
void Cell0DResetNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
Reset the Cell0D Cell3D neighbour to empty value (Cell0DHasNeighbourCell3D is false)
Definition IMeshDAO.hpp:1370
bool Cell2DHasNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1888
bool Cell0DHasNeighbourCell2D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1315
void Cell3DsInitializeVertices(const std::vector< unsigned int > &numberCell3DsVertices)
Initialize the Cell3Ds vertices number.
Definition MeshMatricesDAO.cpp:1266
std::string Cell1DDoublePropertyId(const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1668
unsigned int Cell1DNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1615
unsigned int Cell2DVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const
Definition IMeshDAO.hpp:1770
std::string ToString()
Definition MeshMatricesDAO.cpp:1602
std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell2Ds() const
Definition MeshMatricesDAO.cpp:364
void Cell1DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)
Initialize the Cell1Ds double properties.
Definition MeshMatricesDAO.cpp:729
unsigned int Cell3DNumberUpdatedCell3Ds(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2121
unsigned int Cell0DNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1343
unsigned int Cell3DDoublePropertyIndex(const std::string &propertyId) const
Definition IMeshDAO.hpp:2174
std::vector< std::vector< unsigned int > > Cell1DsNeighbourCell2Ds() const
Definition MeshMatricesDAO.cpp:643
void Cell0DsInsertCoordinates(const Eigen::MatrixXd &coordinates)
Add the Cell0Ds Coordinates.
Definition MeshMatricesDAO.cpp:264
bool Cell2DDoublePropertyExists(const std::string &propertyId) const
Definition IMeshDAO.hpp:1924
unsigned int Cell2DDoublePropertyIndex(const std::string &propertyId) const
Definition IMeshDAO.hpp:1928
Eigen::Vector3d Cell1DOriginCoordinates(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1504
void Cell0DResetNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex)
Reset the Cell0D Cell1D neighbour to empty value (Cell0DHasNeighbourCell1D is false)
Definition IMeshDAO.hpp:1271
unsigned int Cell1DMarker(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1550
void Cell0DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &propertySizes)
Initialize the Cell0Ds double property sizes.
Definition MeshMatricesDAO.cpp:477
std::vector< unsigned int > Cell2DsMarker() const
Definition IMeshDAO.hpp:1807
void Cell1DsInitializeNeighbourCell2Ds(const std::vector< unsigned int > &numberNeighbourCell2Ds)
Initialize the Cell1Ds Cell2D neighbours number.
Definition MeshMatricesDAO.cpp:668
double Cell0DCoordinateZ(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1177
bool Cell2DUpdatedCell2Ds(const unsigned int &cell2DIndex, std::list< unsigned int > &updatedCell2DIds) const
return the updated Cell2D Ids for cell2DIndex
Definition MeshMatricesDAO.cpp:1059
void Cell1DSetState(const unsigned int &cell1DIndex, const bool &state)
Set the Cell1D state.
Definition IMeshDAO.hpp:1451
unsigned int Cell3DNumberEdges(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2052
std::vector< unsigned int > Cell2DEdges(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1785
unsigned int Cell2DTotalNumber() const
Definition IMeshDAO.hpp:1746
unsigned int Cell3DAppend(const unsigned int &numberCell3Ds)
Append Cell3Ds to the Cell3Ds container.
Definition MeshMatricesDAO.cpp:1195
unsigned int Cell1DAddDoubleProperty(const std::string &propertyId)
Add the Cell1Ds double property identified by id.
Definition MeshMatricesDAO.cpp:783
std::vector< std::vector< unsigned int > > Cell3DsVertices() const
Definition MeshMatricesDAO.cpp:1501
unsigned int Cell0DMarker(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1189
unsigned int Cell1DNumberUpdatedCell1Ds(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1583
void Cell1DRemove(const unsigned int &cell1DIndex)
Remove the Cell1D from the mesh.
Definition MeshMatricesDAO.cpp:547
void Cell2DResetNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex)
Reset the Cell2D Cell3D neighbour to empty value (Cell2DHasNeighbourCell3D is false)
Definition IMeshDAO.hpp:1894
void Cell0DInsertUpdatedCell0D(const unsigned int &cell0DIndex, const unsigned int &updatedCell0DIdex)
Add the new Cell0D to an existing Cell0D.
Definition MeshMatricesDAO.cpp:288
std::vector< std::vector< unsigned int > > Cell0DsNeighbourCell3Ds() const
Definition MeshMatricesDAO.cpp:411
bool Cell3DIsActive(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2106
unsigned int Cell3DFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex) const
Definition IMeshDAO.hpp:2086
void Cell2DsInitializeEdges(const unsigned int &numberCell2DEdges)
Initialize the Cell2Ds edges number.
Definition MeshMatricesDAO.cpp:934
bool Cell2DHasUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIndex) const
Definition IMeshDAO.hpp:1831
Eigen::Vector3d Cell1DEndCoordinates(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1508
void Cell2DsInitializeSubDivision(const std::vector< unsigned int > &numberSubDivisions)
Initialize the Cell2D subdivision number for each Cell2D.
Definition MeshMatricesDAO.cpp:1168
std::vector< unsigned int > Cell1DNeighbourCell2Ds(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1523
bool Cell1DUpdatedCell1Ds(const unsigned int &cell1DIndex, std::list< unsigned int > &updatedCell1DIds) const
return the updated Cell1D Ids for cell1DIndex
Definition MeshMatricesDAO.cpp:710
unsigned int Cell2DDoublePropertySize(const unsigned int &cell2DIndex, const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1933
void Cell2DSetState(const unsigned int &cell2DIndex, const bool &state)
Set the Cell1D state.
Definition IMeshDAO.hpp:1707
unsigned int Cell1DNumberNeighbourCell2D(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1512
unsigned int Cell0DNumberNeighbourCell2D(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1289
bool Cell2DHasOriginalCell2D(const unsigned int &updatedCell2DIndex) const
Definition IMeshDAO.hpp:1838
void Cell1DInitializeDoublePropertyValues(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &propertySize)
Initialize the Cell1Ds double property size.
Definition MeshMatricesDAO.cpp:804
std::vector< std::vector< unsigned int > > Cell3DsEdges() const
Definition MeshMatricesDAO.cpp:1511
unsigned int Cell0DAddDoubleProperty(const std::string &propertyId)
Add the Cell0Ds double property identified by id.
Definition MeshMatricesDAO.cpp:465
unsigned int Cell3DFindEdge(const unsigned int &cell3DIndex, const unsigned int &cell1DIndex) const
Definition MeshMatricesDAO.cpp:1336
unsigned int Cell2DFindEdgeByExtremes(const unsigned int &cell2DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const
Definition MeshMatricesDAO.cpp:1033
void Cell2DAddVertices(const unsigned int &cell2DIndex, const std::vector< unsigned int > &verticesCell0DIndices)
Add the Cell2D vertices.
Definition MeshMatricesDAO.cpp:955
std::vector< bool > Cell0DsState() const
Definition IMeshDAO.hpp:1203
void Cell2DsInitializeVertices(const unsigned int &numberCell2DVertices)
Initialize the Cell2Ds vertices number.
Definition MeshMatricesDAO.cpp:910
void Cell0DInitializeNeighbourCell3Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell3Ds)
Initialize the Cell0D Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:436
void Cell2DInsertNeighbourCell3D(const unsigned int &cell2DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)
Insert the Cell2D Cell3D neighbour.
Definition IMeshDAO.hpp:1854
void Cell2DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numberNeighbourCell3Ds)
Initialize the Cell2Ds Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:1094
unsigned int Cell0DNumberUpdatedCell0Ds(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1213
Eigen::Vector3d Cell3DVertexCoordinates(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const
Definition IMeshDAO.hpp:2070
bool Cell1DHasUpdatedCell1Ds(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1578
unsigned int Cell2DNumberVertices(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1750
void Cell3DAddFaces(const unsigned int &cell3DIndex, const std::vector< unsigned int > &facesCell2DIndices)
Add the Cell3D faces.
Definition MeshMatricesDAO.cpp:1319
void Cell2DInsertUpdatedCell2D(const unsigned int &cell2DIndex, const unsigned int &updatedCell2DIdex)
Add the new Cell2D to an existing Cell2D.
Definition MeshMatricesDAO.cpp:1048
unsigned int Cell1DNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1517
unsigned int Cell1DByExtremes(const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex) const
Definition MeshMatricesDAO.cpp:629
void Cell3DSetState(const unsigned int &cell3DIndex, const bool &state)
Set the Cell3D state.
Definition IMeshDAO.hpp:1981
void Cell3DAddVertices(const unsigned int &cell3DIndex, const std::vector< unsigned int > &verticesCell0DIndices)
Add the Cell3D vertices.
Definition MeshMatricesDAO.cpp:1305
void Cell2DInitializeEdges(const unsigned int &cell2DIndex, const unsigned int &numberCell2DEdges)
Initialize the Cell2D edges number.
Definition MeshMatricesDAO.cpp:949
unsigned int Cell1DOrigin(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1479
void Cell2DInitializeNeighbourCell3Ds(const unsigned int &cell2DIndex, const unsigned int &numberNeighbourCell3Ds)
Initialize the Cell2D Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:1103
void Cell0DSetMarker(const unsigned int &cell0DIndex, const unsigned int &marker)
Set the Cell0D Marker.
Definition IMeshDAO.hpp:1152
void Cell3DInsertEdges(const unsigned int &cell3DIndex, const std::vector< unsigned int > &edgesCell1DIndices)
Insert the Cell3D edges.
Definition IMeshDAO.hpp:2013
unsigned int Cell0DNumberDoubleProperties() const
Definition IMeshDAO.hpp:1393
void Cell0DInitializeNeighbourCell2Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell2Ds)
Initialize the Cell0D Cell2D neighbours number.
Definition MeshMatricesDAO.cpp:389
~MeshMatricesDAO()
Definition MeshMatricesDAO.cpp:163
void Cell3DsInitialize(const unsigned int &numberCell3Ds)
Initialize the Cell3Ds container.
Definition MeshMatricesDAO.cpp:1182
void Cell3DInsertEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex)
Insert the Cell3D edge.
Definition IMeshDAO.hpp:2005
unsigned int Cell3DEdge(const unsigned int &cell3DIndex, const unsigned int &edgeIndex) const
Definition IMeshDAO.hpp:2078
unsigned int Cell3DNumberDoubleProperties() const
Definition IMeshDAO.hpp:2162
void Cell1DInsertUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex)
Add the new Cell1D to an existing Cell1D.
Definition MeshMatricesDAO.cpp:699
bool Cell0DHasUpdatedCell0Ds(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1208
bool Cell2DHasUpdatedCell2Ds(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1821
unsigned int Cell2DNumberUpdatedCell2Ds(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1826
unsigned int Cell1DOriginalCell1D(const unsigned int &updatedCell1DIndex) const
Definition IMeshDAO.hpp:1573
unsigned int Cell3DVertex(const unsigned int &cell3DIndex, const unsigned int &vertexIndex) const
Definition IMeshDAO.hpp:2063
unsigned int Cell2DNumberSubDivision(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1961
bool Cell3DDoublePropertyExists(const std::string &propertyId) const
Definition IMeshDAO.hpp:2170
bool Cell3DHasUpdatedCell3Ds(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2116
unsigned int Cell0DNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1244
void Cell2DSetMarker(const unsigned int &cell2DIndex, const unsigned int &marker)
Set the Cell2D Marker.
Definition IMeshDAO.hpp:1702
void Cell2DInsertVertex(const unsigned int &cell2DIndex, const unsigned int &vertexIndex, const unsigned int &vertexCell0DIndex)
Insert the Cell2D vertex.
Definition IMeshDAO.hpp:1723
bool Cell3DUpdatedCell3Ds(const unsigned int &cell3DIndex, std::list< unsigned int > &updatedCell3DIds) const
return the updated Cell3D Ids for cell3DIndex
Definition MeshMatricesDAO.cpp:1401
void Cell1DResetNeighbourCell2D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)
Reset the Cell1D Cell2D neighbour to empty value (Cell1DHasNeighbourCell2D is false)
Definition IMeshDAO.hpp:1544
std::vector< bool > Cell3DsState() const
Definition IMeshDAO.hpp:2111
double Cell2DDoublePropertyValue(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const
Definition IMeshDAO.hpp:1940
std::vector< unsigned int > Cell0DNeighbourCell1Ds(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1250
Gedim::MeshMatrices & MeshData()
Definition IMeshDAO.hpp:1128
void Cell0DSetState(const unsigned int &cell0DIndex, const bool &state)
Set the Cell0D state.
Definition IMeshDAO.hpp:1157
void Cell3DAddEdges(const unsigned int &cell3DIndex, const std::vector< unsigned int > &edgesCell1DIndices)
Add the Cell3D edges.
Definition MeshMatricesDAO.cpp:1312
void Cell0DsInitializeNeighbourCell2Ds(const std::vector< unsigned int > &numberNeighbourCell2Ds)
Initialize the Cell0Ds Cell2D neighbours number.
Definition MeshMatricesDAO.cpp:380
unsigned int Cell1DNumberDoubleProperties() const
Definition IMeshDAO.hpp:1664
Eigen::Vector3d Cell2DVertexCoordinates(const unsigned int &cell2DIndex, const unsigned int &vertexIndex) const
Definition IMeshDAO.hpp:1776
void Cell1DInsertExtremes(const unsigned int &cell1DIndex, const unsigned int &originCell0DIndex, const unsigned int &endCell0DIndex)
Set the Cell1D Origin and End.
Definition MeshMatricesDAO.cpp:584
std::string Cell2DDoublePropertyId(const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1920
unsigned int Cell1DVertex(const unsigned int &cell1DIndex, const unsigned int &vertexIndex) const
Definition IMeshDAO.hpp:1473
void Cell3DsInitializeEdges(const std::vector< unsigned int > &numberCell3DsEdges)
Initialize the Cell3Ds edges number.
Definition MeshMatricesDAO.cpp:1275
std::vector< unsigned int > Cell3DVertices(const unsigned int &cell3DIndex) const
Definition MeshMatricesDAO.cpp:1371
void Cell0DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)
Initialize the Cell0Ds double properties.
Definition MeshMatricesDAO.cpp:458
void Cell2DInitializeDoublePropertyValues(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &propertySize)
Initialize the Cell2Ds double property size.
Definition MeshMatricesDAO.cpp:1153
unsigned int Cell1DNumberNeighbourCell3D(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1610
Eigen::Vector3d Cell0DCoordinates(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1182
std::string Cell3DDoublePropertyId(const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:2166
void Cell2DAddEdges(const unsigned int &cell2DIndex, const std::vector< unsigned int > &edgesCell1DIndices)
Add the Cell2D edges.
Definition MeshMatricesDAO.cpp:962
void Cell3DInitializeFaces(const unsigned int &cell3DIndex, const unsigned int &numberCell3DFaces)
Initialize the Cell3D faces number.
Definition MeshMatricesDAO.cpp:1299
unsigned int Cell1DFindExtreme(const unsigned int &cell1DIndex, const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1489
std::vector< unsigned int > Cell2DVertices(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1761
void Cell2DInsertEdge(const unsigned int &cell2DIndex, const unsigned int &edgeIndex, const unsigned int &edgeCell1DIndex)
Insert the Cell2D edge.
Definition IMeshDAO.hpp:1735
void Cell0DInitializeDoublePropertyValues(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &propertySize)
Initialize the Cell0Ds double property size.
Definition MeshMatricesDAO.cpp:486
std::string Cell0DDoublePropertyId(const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:1397
unsigned int Cell2DNumberEdges(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1755
void Cell2DInsertDoublePropertyValue(const unsigned int &cell2DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)
Insert the Cell2Ds double property value at position.
Definition IMeshDAO.hpp:1905
unsigned int Cell3DDoublePropertySize(const unsigned int &cell3DIndex, const unsigned int &propertyIndex) const
Definition IMeshDAO.hpp:2179
double Cell0DCoordinateX(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1167
unsigned int Cell3DMarker(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2097
void Cell0DsInitializeNeighbourCell3Ds(const std::vector< unsigned int > &numberNeighbourCell3Ds)
Initialize the Cell0Ds Cell3D neighbours number.
Definition MeshMatricesDAO.cpp:427
const Gedim::MeshMatrices & MeshData() const
Definition IMeshDAO.hpp:1132
void Cell3DInitializeDoublePropertyValues(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &propertySize)
Initialize the Cell3Ds double property size.
Definition MeshMatricesDAO.cpp:1448
double Cell1DDoublePropertyValue(const unsigned int &cell1DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const
Definition IMeshDAO.hpp:1688
unsigned int Cell0DNumberNeighbourCell3D(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1338
bool Cell0DHasNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1265
void Cell0DInsertDoublePropertyValue(const unsigned int &cell0DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)
Insert the Cell0Ds double property value at position.
Definition IMeshDAO.hpp:1382
std::vector< std::vector< std::vector< unsigned int > > > Cell3DsFacesVertices() const
Definition MeshMatricesDAO.cpp:1485
unsigned int Cell3DAddDoubleProperty(const std::string &propertyId)
Add the Cell3Ds double property identified by id.
Definition MeshMatricesDAO.cpp:1427
void Cell1DsInitializeDoublePropertyValues(const unsigned int &propertyIndex, const std::vector< unsigned int > &propertySizes)
Initialize the Cell1Ds double property sizes.
Definition MeshMatricesDAO.cpp:795
std::vector< bool > Cell1DsState() const
Definition IMeshDAO.hpp:1564
double Cell3DDoublePropertyValue(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex) const
Definition IMeshDAO.hpp:2186
void Cell3DInitializeVertices(const unsigned int &cell3DIndex, const unsigned int &numberCell3DVertices)
Initialize the Cell3D vertices number.
Definition MeshMatricesDAO.cpp:1287
void Cell3DSetMarker(const unsigned int &cell3DIndex, const unsigned int &marker)
Set the Cell1D Marker.
Definition IMeshDAO.hpp:1976
void Cell3DInsertDoublePropertyValue(const unsigned int &cell3DIndex, const unsigned int &propertyIndex, const unsigned int &propertyValueIndex, const double &propertyValue)
Insert the Cell3Ds double property value at position.
Definition IMeshDAO.hpp:2151
bool Cell0DUpdatedCell0Ds(const unsigned int &cell0DIndex, std::list< unsigned int > &updatedCell0DIds) const
return the updated Cell0D Ids for cell0DIndex
Definition MeshMatricesDAO.cpp:298
Eigen::MatrixXi Cell1DsExtremes() const
Definition MeshMatricesDAO.cpp:609
unsigned int Cell0DDoublePropertyIndex(const std::string &propertyId) const
Definition IMeshDAO.hpp:1405
void Cell1DInsertNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell3DIndex)
Insert the Cell1D Cell3D neighbour.
Definition IMeshDAO.hpp:1602
void Cell0DInsertNeighbourCell1D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex, const unsigned int &neigbourCell1DIndex)
Insert the Cell0D Cell1D neighbour.
Definition IMeshDAO.hpp:1231
std::vector< unsigned int > Cell2DNeighbourCell3Ds(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1873
void Cell1DsInsertExtremes(const Eigen::MatrixXi &cell1DExtremes)
Set the Cell1D Extremes for the whole mesh edges.
Definition MeshMatricesDAO.cpp:591
std::vector< unsigned int > Cell0DNeighbourCell3Ds(const unsigned int &cell0DIndex) const
Definition IMeshDAO.hpp:1349
std::vector< std::vector< unsigned int > > Cell2DsNeighbourCell3Ds() const
Definition MeshMatricesDAO.cpp:1078
void Cell2DRemove(const unsigned int &cell2DIndex)
Remove the Cell2D from the mesh.
Definition MeshMatricesDAO.cpp:870
void Cell2DAddVerticesAndEdges(const unsigned int &cell2DIndex, const Eigen::MatrixXi &verticesAndEdgesIndices)
Cell2D Add Vertices And Edges.
Definition MeshMatricesDAO.cpp:969
unsigned int Cell3DTotalNumber() const
Definition IMeshDAO.hpp:2043
bool Cell3DHasUpdatedCell3D(const unsigned int &cell3DIndex, const unsigned int &updatedCell3DIdex) const
Definition IMeshDAO.hpp:2126
void Cell1DResetNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex)
Reset the Cell1D Cell3D neighbour to empty value (Cell1DHasNeighbourCell3D is false)
Definition IMeshDAO.hpp:1642
bool Cell0DDoublePropertyExists(const std::string &propertyId) const
Definition IMeshDAO.hpp:1401
Eigen::MatrixXd Cell0DsCoordinates() const
Definition MeshMatricesDAO.cpp:272
void Cell3DRemove(const unsigned int &cell3DIndex)
Remove the Cell3D from the mesh.
Definition MeshMatricesDAO.cpp:1229
void Cell3DInsertFace(const unsigned int &cell3DIndex, const unsigned int &faceIndex, const unsigned int &faceCell2DIndex)
Insert the Cell3D face.
Definition IMeshDAO.hpp:2018
std::vector< Eigen::MatrixXi > Cell2DsExtremes() const
Definition MeshMatricesDAO.cpp:991
bool Cell1DIsActive(const unsigned int &cell1DIndex) const
Definition IMeshDAO.hpp:1559
unsigned int Cell3DNumberVertices(const unsigned int &cell3DIndex) const
Definition IMeshDAO.hpp:2047
void Cell0DInitializeNeighbourCell1Ds(const unsigned int &cell0DIndex, const unsigned int &numberNeighbourCell1Ds)
Initialize the Cell0D Cell1D neighbours number.
Definition MeshMatricesDAO.cpp:342
bool Cell1DHasUpdatedCell1D(const unsigned int &cell1DIndex, const unsigned int &updatedCell1DIdex) const
Definition IMeshDAO.hpp:1588
unsigned int Cell3DFindFace(const unsigned int &cell3DIndex, const unsigned int &cell2DIndex) const
Definition MeshMatricesDAO.cpp:1346
void Cell3DInitializeDoubleProperties(const unsigned int &numberDoubleProperties)
Initialize the Cell3Ds double properties.
Definition MeshMatricesDAO.cpp:1420
bool Cell1DHasNeighbourCell3D(const unsigned int &cell1DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1636
unsigned int Cell3DFindVertex(const unsigned int &cell3DIndex, const unsigned int &cell0DIndex) const
Definition MeshMatricesDAO.cpp:1326
bool Cell0DHasNeighbourCell3D(const unsigned int &cell0DIndex, const unsigned int &neighbourIndex) const
Definition IMeshDAO.hpp:1364
unsigned int Cell2DMarker(const unsigned int &cell2DIndex) const
Definition IMeshDAO.hpp:1802
void Cell2DInitializeSubDivision(const unsigned int &cell2DIndex, const unsigned int &numberSubDivision)
Initialize the Cell2D subdivision number.
Definition MeshMatricesDAO.cpp:1175
static void Assert(const bool &logicResult)
Assert for all code, generate exception if something goes wrong.
Definition IOUtilities.hpp:126
Definition Eigen_Array.cpp:22
Definition MeshMatrices.hpp:21
unsigned int NumberCell2D
number of Cell2D
Definition MeshMatrices.hpp:68
std::vector< unsigned int > Cell1DNeighbourCell3Ds
Definition MeshMatrices.hpp:54
std::vector< unsigned int > NumberCell0DNeighbourCell3D
Definition MeshMatrices.hpp:34
std::vector< unsigned int > NumberCell0DNeighbourCell1D
Definition MeshMatrices.hpp:26
std::vector< unsigned int > Cell0DNeighbourCell1Ds
Definition MeshMatrices.hpp:28
std::vector< unsigned int > Cell2DOriginalCell2Ds
Definition MeshMatrices.hpp:84
unsigned int NumberCell1D
number of Cell1D
Definition MeshMatrices.hpp:46
std::vector< unsigned int > NumberCell1DNeighbourCell2D
Definition MeshMatrices.hpp:48
std::vector< std::string > Cell3DDoublePropertyIds
Cell3D double property id - double property index.
Definition MeshMatrices.hpp:109
std::vector< unsigned int > NumberCell3DEdges
number of Edges per Cell3D, size 1 x NumberCell3D + 1
Definition MeshMatrices.hpp:96
std::vector< std::vector< unsigned int > > Cell0DDoublePropertySizes
Cell0D double property sizes.
Definition MeshMatrices.hpp:44
std::vector< unsigned int > Cell3DVertices
Definition MeshMatrices.hpp:98
std::vector< bool > ActiveCell1D
active Cell1D
Definition MeshMatrices.hpp:57
std::vector< unsigned int > Cell3DOriginalCell3Ds
Definition MeshMatrices.hpp:104
std::vector< unsigned int > Cell2DEdges
Cell2D Cell1D indices, size 1 x NumberCell2DEdges[NumberCell2D].
Definition MeshMatrices.hpp:73
std::vector< std::string > Cell0DDoublePropertyIds
Cell0D double property id - double property index.
Definition MeshMatrices.hpp:41
std::unordered_map< unsigned int, std::unordered_set< unsigned int > > UpdatedCell2Ds
Definition MeshMatrices.hpp:87
std::unordered_map< unsigned int, std::unordered_set< unsigned int > > UpdatedCell1Ds
Definition MeshMatrices.hpp:61
unsigned int NumberCell3D
number of Cell3D
Definition MeshMatrices.hpp:94
std::vector< unsigned int > Cell2DMarkers
Cell2D markers, size 1 x NumberCell2D (marker)
Definition MeshMatrices.hpp:78
std::vector< unsigned int > Cell2DNeighbourCell3Ds
Definition MeshMatrices.hpp:76
std::unordered_map< std::string, unsigned int > Cell2DDoublePropertyIndices
Definition MeshMatrices.hpp:90
std::unordered_map< unsigned int, std::unordered_set< unsigned int > > UpdatedCell3Ds
Definition MeshMatrices.hpp:107
std::vector< std::vector< double > > Cell3DDoublePropertyValues
Cell3D double property values.
Definition MeshMatrices.hpp:113
std::vector< unsigned int > Cell2DSubdivision
Definition MeshMatrices.hpp:82
std::vector< bool > ActiveCell2D
active Cell2D
Definition MeshMatrices.hpp:79
std::vector< unsigned int > Cell0DMarkers
Cell0D markers, size 1 x NumberCell0D (marker)
Definition MeshMatrices.hpp:25
std::vector< unsigned int > NumberCell2DNeighbourCell3D
Definition MeshMatrices.hpp:74
std::vector< unsigned int > Cell1DVertices
Cell1D vertices indices, size 2 x NumberCell1D (fromId,toId)
Definition MeshMatrices.hpp:47
std::vector< unsigned int > NumberCell3DFaces
number of Faces per Cell3D, size 1 x NumberCell3D + 1
Definition MeshMatrices.hpp:97
std::vector< unsigned int > Cell1DNeighbourCell2Ds
Definition MeshMatrices.hpp:52
std::vector< std::vector< double > > Cell2DDoublePropertyValues
Cell2D double property values.
Definition MeshMatrices.hpp:93
std::vector< unsigned int > Cell0DNeighbourCell3Ds
Definition MeshMatrices.hpp:36
std::vector< std::vector< unsigned int > > Cell1DDoublePropertySizes
Cell1D double property sizes.
Definition MeshMatrices.hpp:66
std::vector< unsigned int > Cell2DVertices
Definition MeshMatrices.hpp:71
std::unordered_map< std::string, unsigned int > Cell0DDoublePropertyIndices
Definition MeshMatrices.hpp:42
std::vector< unsigned int > NumberCell2DVertices
number of Vertices per Cell2D, size 1 x NumberCell2D + 1
Definition MeshMatrices.hpp:69
std::unordered_map< unsigned int, std::unordered_set< unsigned int > > UpdatedCell0Ds
Definition MeshMatrices.hpp:39
std::unordered_map< std::string, unsigned int > Cell3DDoublePropertyIndices
Definition MeshMatrices.hpp:110
std::vector< unsigned int > Cell0DNeighbourCell2Ds
Definition MeshMatrices.hpp:32
std::vector< std::vector< double > > Cell1DDoublePropertyValues
Cell1D double property values.
Definition MeshMatrices.hpp:67
std::vector< std::vector< unsigned int > > Cell2DDoublePropertySizes
Cell2D double property sizes.
Definition MeshMatrices.hpp:92
std::vector< unsigned int > NumberCell2DSubdivision
Definition MeshMatrices.hpp:80
std::vector< std::vector< unsigned int > > Cell3DDoublePropertySizes
Cell3D double property sizes.
Definition MeshMatrices.hpp:112
unsigned int Dimension
Geometric dimension.
Definition MeshMatrices.hpp:22
std::vector< double > Cell0DCoordinates
Cell0D coordinates, size 3 x NumberCell0D (x,y,z)
Definition MeshMatrices.hpp:24
std::vector< unsigned int > Cell1DMarkers
Cell1D propertoes, size 1 x NumberCell1D (marker)
Definition MeshMatrices.hpp:56
std::vector< unsigned int > NumberCell3DVertices
number of Vertices per Cell3D, size 1 x NumberCell3D + 1
Definition MeshMatrices.hpp:95
std::vector< unsigned int > NumberCell0DNeighbourCell2D
Definition MeshMatrices.hpp:30
std::vector< unsigned int > Cell1DOriginalCell1Ds
Definition MeshMatrices.hpp:58
std::vector< unsigned int > Cell3DEdges
Cell3D Cell1D indices, size 1 x NumberCell3DEdges[NumberCell3D].
Definition MeshMatrices.hpp:100
std::vector< unsigned int > Cell3DMarkers
Cell3D markers, size 1 x NumberCell3D (marker)
Definition MeshMatrices.hpp:102
std::unordered_map< std::string, unsigned int > Cell1DDoublePropertyIndices
Definition MeshMatrices.hpp:64
std::vector< bool > ActiveCell3D
active Cell3D
Definition MeshMatrices.hpp:103
std::vector< std::string > Cell1DDoublePropertyIds
Cell1D double property id - double property index.
Definition MeshMatrices.hpp:63
std::vector< std::string > Cell2DDoublePropertyIds
Cell2D double property id - double property index.
Definition MeshMatrices.hpp:89
std::vector< bool > ActiveCell0D
active Cell0D
Definition MeshMatrices.hpp:38
unsigned int NumberCell0D
number of Cell0D
Definition MeshMatrices.hpp:23
std::vector< unsigned int > Cell3DFaces
Cell3D Cell2D indices, size 1 x NumberCell3DFaces[NumberCell3D].
Definition MeshMatrices.hpp:101
std::vector< std::vector< double > > Cell0DDoublePropertyValues
Cell0D double property values.
Definition MeshMatrices.hpp:45
std::vector< unsigned int > NumberCell1DNeighbourCell3D
Definition MeshMatrices.hpp:50
std::vector< unsigned int > NumberCell2DEdges
number of Edges per Cell2D, size 1 x NumberCell2D + 1
Definition MeshMatrices.hpp:70