Skip to content
Snippets Groups Projects
Commit de194e5d authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Read elements number in Gmsh file

This number is just an identifier and should not be used for anything else

Also prepared global index item structure. This has to be a contiguous numbering
starting from 0. This will have to take into account ghost cells.
parent cda108fc
Branches
Tags
1 merge request!11Feature/mpi
...@@ -216,16 +216,16 @@ void Connectivity<2>::_computeCellFaceAndFaceNodeConnectivities() ...@@ -216,16 +216,16 @@ void Connectivity<2>::_computeCellFaceAndFaceNodeConnectivities()
template<size_t Dimension> template<size_t Dimension>
Connectivity<Dimension>:: Connectivity<Dimension>::
Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
const std::vector<CellType>& cell_type_vector) const std::vector<CellType>& cell_type_vector,
const std::vector<int>& cell_number_vector)
{ {
Assert(cell_by_node_vector.size() == cell_type_vector.size()); Assert(cell_by_node_vector.size() == cell_type_vector.size());
Assert(cell_number_vector.size() == cell_type_vector.size());
auto& cell_to_node_matrix auto& cell_to_node_matrix
= m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)]; = m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)];
cell_to_node_matrix = cell_by_node_vector; cell_to_node_matrix = cell_by_node_vector;
Assert(this->numberOfCells()>0);
{ {
CellValue<CellType> cell_type(*this); CellValue<CellType> cell_type(*this);
parallel_for(this->numberOfCells(), PASTIS_LAMBDA(const CellId& j){ parallel_for(this->numberOfCells(), PASTIS_LAMBDA(const CellId& j){
...@@ -233,6 +233,25 @@ Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, ...@@ -233,6 +233,25 @@ Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
}); });
m_cell_type = cell_type; m_cell_type = cell_type;
} }
{
CellValue<int> cell_number(*this);
cell_number = convert_to_array(cell_number_vector);
m_cell_number = cell_number;
}
{
CellValue<int> cell_global_index(*this);
#warning index must start accounting number of global indices of other procs
#warning must take care of ghost cells
int first_index = 0;
parallel_for(this->numberOfCells(), PASTIS_LAMBDA(const CellId& j) {
cell_global_index[j] = first_index+j;
});
m_cell_global_index = cell_global_index;
}
{ {
CellValue<double> inv_cell_nb_nodes(*this); CellValue<double> inv_cell_nb_nodes(*this);
parallel_for(this->numberOfCells(), PASTIS_LAMBDA(const CellId& j) { parallel_for(this->numberOfCells(), PASTIS_LAMBDA(const CellId& j) {
...@@ -250,12 +269,15 @@ Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, ...@@ -250,12 +269,15 @@ Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
template Connectivity1D:: template Connectivity1D::
Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
const std::vector<CellType>& cell_type_vector); const std::vector<CellType>& cell_type_vector,
const std::vector<int>& cell_number_vector);
template Connectivity2D:: template Connectivity2D::
Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
const std::vector<CellType>& cell_type_vector); const std::vector<CellType>& cell_type_vector,
const std::vector<int>& cell_number_vector);
template Connectivity3D:: template Connectivity3D::
Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
const std::vector<CellType>& cell_type_vector); const std::vector<CellType>& cell_type_vector,
const std::vector<int>& cell_number_vector);
...@@ -246,6 +246,8 @@ class Connectivity final ...@@ -246,6 +246,8 @@ class Connectivity final
private: private:
ConnectivityMatrix m_item_to_item_matrix[Dimension+1][Dimension+1]; ConnectivityMatrix m_item_to_item_matrix[Dimension+1][Dimension+1];
CellValue<const CellType> m_cell_type; CellValue<const CellType> m_cell_type;
CellValue<const int> m_cell_global_index;
CellValue<const int> m_cell_number;
FaceValuePerCell<const bool> m_cell_face_is_reversed; FaceValuePerCell<const bool> m_cell_face_is_reversed;
...@@ -316,6 +318,12 @@ class Connectivity final ...@@ -316,6 +318,12 @@ class Connectivity final
return m_cell_type; return m_cell_type;
}; };
PASTIS_INLINE
const CellValue<const int>& cellNumber() const
{
return m_cell_number;
};
PASTIS_INLINE PASTIS_INLINE
const bool& isConnectivityMatrixBuilt(const ItemType& item_type_0, const bool& isConnectivityMatrixBuilt(const ItemType& item_type_0,
const ItemType& item_type_1) const const ItemType& item_type_1) const
...@@ -548,8 +556,8 @@ class Connectivity final ...@@ -548,8 +556,8 @@ class Connectivity final
for (FaceId l=0; l<this->numberOfFaces(); ++l) { for (FaceId l=0; l<this->numberOfFaces(); ++l) {
const auto& face_to_cell = face_to_cell_matrix[l]; const auto& face_to_cell = face_to_cell_matrix[l];
if (face_to_cell.size() == 2) { if (face_to_cell.size() == 2) {
const int cell_0 = face_to_cell[0]; const CellId cell_0 = face_to_cell[0];
const int cell_1 = face_to_cell[1]; const CellId cell_1 = face_to_cell[1];
cell_cells[cell_0].insert(cell_1); cell_cells[cell_0].insert(cell_1);
cell_cells[cell_1].insert(cell_0); cell_cells[cell_1].insert(cell_0);
...@@ -565,8 +573,8 @@ class Connectivity final ...@@ -565,8 +573,8 @@ class Connectivity final
{ {
size_t k=0; size_t k=0;
for (size_t j=0; j<this->numberOfCells(); ++j) { for (size_t j=0; j<this->numberOfCells(); ++j) {
for (auto cell_id : cell_cells[j]) { for (CellId cell_id : cell_cells[j]) {
neighbors[k] = cell_id; neighbors[k] = m_cell_global_index[cell_id];
++k; ++k;
} }
} }
...@@ -627,7 +635,8 @@ class Connectivity final ...@@ -627,7 +635,8 @@ class Connectivity final
Connectivity(const Connectivity&) = delete; Connectivity(const Connectivity&) = delete;
Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector, Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector,
const std::vector<CellType>& cell_type_vector); const std::vector<CellType>& cell_type_vector,
const std::vector<int>& cell_number_vector);
~Connectivity() ~Connectivity()
{ {
......
...@@ -150,7 +150,7 @@ void GmshReader::_dispatch() ...@@ -150,7 +150,7 @@ void GmshReader::_dispatch()
using MeshType = Mesh<ConnectivityType>; using MeshType = Mesh<ConnectivityType>;
if (not m_mesh) { if (not m_mesh) {
std::shared_ptr<ConnectivityType> connectivity(new ConnectivityType({},{})); std::shared_ptr<ConnectivityType> connectivity(new ConnectivityType({},{},{}));
NodeValue<Rd> xr; NodeValue<Rd> xr;
m_mesh = std::shared_ptr<IMesh>(new MeshType(connectivity, xr)); m_mesh = std::shared_ptr<IMesh>(new MeshType(connectivity, xr));
} }
...@@ -192,6 +192,7 @@ void GmshReader::_dispatch() ...@@ -192,6 +192,7 @@ void GmshReader::_dispatch()
return std::move(cell_to_send_by_proc); return std::move(cell_to_send_by_proc);
} (); } ();
const auto& cell_number = mesh.connectivity().cellNumber();
const std::vector<Array<const int>> cell_number_to_send_by_proc const std::vector<Array<const int>> cell_number_to_send_by_proc
= [&] () { = [&] () {
std::vector<Array<const int>> cell_number_to_send_by_proc(commSize()); std::vector<Array<const int>> cell_number_to_send_by_proc(commSize());
...@@ -199,8 +200,7 @@ void GmshReader::_dispatch() ...@@ -199,8 +200,7 @@ void GmshReader::_dispatch()
const Array<const CellId>& cell_list = cell_to_send_by_proc[i]; const Array<const CellId>& cell_list = cell_to_send_by_proc[i];
Array<int> cell_number_list(cell_list.size()); Array<int> cell_number_list(cell_list.size());
parallel_for (cell_list.size(), PASTIS_LAMBDA(const CellId& cell_id) { parallel_for (cell_list.size(), PASTIS_LAMBDA(const CellId& cell_id) {
#warning must use table of cell numbers cell_number_list[cell_id] = cell_number[cell_list[cell_id]];
cell_number_list[cell_id] = cell_list[cell_id];
}); });
cell_number_to_send_by_proc[i] = cell_number_list; cell_number_to_send_by_proc[i] = cell_number_list;
} }
...@@ -214,9 +214,8 @@ void GmshReader::_dispatch() ...@@ -214,9 +214,8 @@ void GmshReader::_dispatch()
Array<int> nb_cell_to_recv_by_proc = allToAll(nb_cell_to_send_by_proc); Array<int> nb_cell_to_recv_by_proc = allToAll(nb_cell_to_send_by_proc);
const size_t cell_number = mesh.numberOfCells();
const size_t new_cell_number const size_t new_cell_number
= cell_number = mesh.numberOfCells()
+ Sum(nb_cell_to_recv_by_proc) + Sum(nb_cell_to_recv_by_proc)
- Sum(nb_cell_to_send_by_proc); - Sum(nb_cell_to_send_by_proc);
...@@ -248,7 +247,7 @@ void GmshReader::_dispatch() ...@@ -248,7 +247,7 @@ void GmshReader::_dispatch()
std::cout << '\n' << std::flush; std::cout << '\n' << std::flush;
} }
} }
barrier(); // barrier();
} }
Messenger::destroy(); Messenger::destroy();
...@@ -573,13 +572,14 @@ GmshReader::__readElements2_2() ...@@ -573,13 +572,14 @@ GmshReader::__readElements2_2()
ErrorHandler::normal); ErrorHandler::normal);
} }
__elementNumber.resize(numberOfElements);
__elementType.resize(numberOfElements); __elementType.resize(numberOfElements);
__references.resize(numberOfElements); __references.resize(numberOfElements);
__elementVertices.resize(numberOfElements); __elementVertices.resize(numberOfElements);
if (not __binary) { if (not __binary) {
for (int i=0; i<numberOfElements; ++i) { for (int i=0; i<numberOfElements; ++i) {
this->_getInteger(); // drops element number __elementNumber[i] = this->_getInteger();
const int elementType = this->_getInteger()-1; const int elementType = this->_getInteger()-1;
if ((elementType < 0) or (elementType > 14)) { if ((elementType < 0) or (elementType > 14)) {
...@@ -722,31 +722,36 @@ GmshReader::__proceedData() ...@@ -722,31 +722,36 @@ GmshReader::__proceedData()
case 0: { // edges case 0: { // edges
__edges = Array<Edge>(elementNumber[i]); __edges = Array<Edge>(elementNumber[i]);
__edges_ref.resize(elementNumber[i]); __edges_ref.resize(elementNumber[i]);
__edges_number.resize(elementNumber[i]);
break; break;
} }
case 1: { // triangles case 1: { // triangles
__triangles = Array<Triangle>(elementNumber[i]); __triangles = Array<Triangle>(elementNumber[i]);
__triangles_ref.resize(elementNumber[i]); __triangles_ref.resize(elementNumber[i]);
__triangles_number.resize(elementNumber[i]);
break; break;
} }
case 2: { // quadrangles case 2: { // quadrangles
__quadrangles = Array<Quadrangle>(elementNumber[i]); __quadrangles = Array<Quadrangle>(elementNumber[i]);
__quadrangles_ref.resize(elementNumber[i]); __quadrangles_ref.resize(elementNumber[i]);
__quadrangles_number.resize(elementNumber[i]);
break; break;
} }
case 3: { // tetrahedra case 3: { // tetrahedra
__tetrahedra = Array<Tetrahedron>(elementNumber[i]); __tetrahedra = Array<Tetrahedron>(elementNumber[i]);
__tetrahedra_ref.resize(elementNumber[i]); __tetrahedra_ref.resize(elementNumber[i]);
__tetrahedra_number.resize(elementNumber[i]);
break; break;
} }
case 4: {// hexahedra case 4: {// hexahedra
__hexahedra = Array<Hexahedron>(elementNumber[i]); __hexahedra = Array<Hexahedron>(elementNumber[i]);
__hexahedra_ref.resize(elementNumber[i]); __hexahedra_ref.resize(elementNumber[i]);
__hexahedra_number.resize(elementNumber[i]);
} }
// Ignored entities
case 14: {// point case 14: {// point
__points = Array<Point>(elementNumber[i]); __points = Array<Point>(elementNumber[i]);
__points_ref.resize(elementNumber[i]); __points_ref.resize(elementNumber[i]);
__points_number.resize(elementNumber[i]);
break; break;
} }
// Unsupported entities // Unsupported entities
...@@ -787,6 +792,7 @@ GmshReader::__proceedData() ...@@ -787,6 +792,7 @@ GmshReader::__proceedData()
ErrorHandler::normal); ErrorHandler::normal);
} }
#warning should use an unordered_map
// A value of -1 means that the vertex is unknown // A value of -1 means that the vertex is unknown
__verticesCorrepondance.resize(maxNumber+1,-1); __verticesCorrepondance.resize(maxNumber+1,-1);
...@@ -836,6 +842,7 @@ GmshReader::__proceedData() ...@@ -836,6 +842,7 @@ GmshReader::__proceedData()
__triangles[triangleNumber] __triangles[triangleNumber]
= Triangle(a, b, c); = Triangle(a, b, c);
__triangles_ref[triangleNumber] = __references[i]; __triangles_ref[triangleNumber] = __references[i];
__triangles_number[triangleNumber] = __elementNumber[i];
triangleNumber++; // one more triangle triangleNumber++; // one more triangle
break; break;
} }
...@@ -855,6 +862,7 @@ GmshReader::__proceedData() ...@@ -855,6 +862,7 @@ GmshReader::__proceedData()
} }
__quadrangles[quadrilateralNumber] = Quadrangle(a,b,c,d); __quadrangles[quadrilateralNumber] = Quadrangle(a,b,c,d);
__quadrangles_ref[quadrilateralNumber] = __references[i]; __quadrangles_ref[quadrilateralNumber] = __references[i];
__quadrangles_number[quadrilateralNumber] = __elementNumber[i];
quadrilateralNumber++; // one more quadrangle quadrilateralNumber++; // one more quadrangle
break; break;
} }
...@@ -874,6 +882,7 @@ GmshReader::__proceedData() ...@@ -874,6 +882,7 @@ GmshReader::__proceedData()
} }
__tetrahedra[tetrahedronNumber] = Tetrahedron(a, b, c, d); __tetrahedra[tetrahedronNumber] = Tetrahedron(a, b, c, d);
__tetrahedra_ref[tetrahedronNumber] = __references[i]; __tetrahedra_ref[tetrahedronNumber] = __references[i];
__tetrahedra_number[tetrahedronNumber] = __elementNumber[i];
tetrahedronNumber++; // one more tetrahedron tetrahedronNumber++; // one more tetrahedron
break; break;
} }
...@@ -899,6 +908,7 @@ GmshReader::__proceedData() ...@@ -899,6 +908,7 @@ GmshReader::__proceedData()
= Hexahedron(a, b, c, d, = Hexahedron(a, b, c, d,
e, f, g, h); e, f, g, h);
__hexahedra_ref[hexahedronNumber] = __references[i]; __hexahedra_ref[hexahedronNumber] = __references[i];
__hexahedra_number[hexahedronNumber] = __elementNumber[i];
hexahedronNumber++; // one more hexahedron hexahedronNumber++; // one more hexahedron
break; break;
} }
...@@ -908,6 +918,7 @@ GmshReader::__proceedData() ...@@ -908,6 +918,7 @@ GmshReader::__proceedData()
const int a = __verticesCorrepondance[elementVertices[0]]; const int a = __verticesCorrepondance[elementVertices[0]];
__points[point_number] = a; __points[point_number] = a;
__points_ref[point_number] = __references[i]; __points_ref[point_number] = __references[i];
__points_number[point_number] = __elementNumber[i];
point_number++; point_number++;
break; break;
} }
...@@ -958,6 +969,7 @@ GmshReader::__proceedData() ...@@ -958,6 +969,7 @@ GmshReader::__proceedData()
const size_t nb_cells = (dimension3_mask, elementNumber); const size_t nb_cells = (dimension3_mask, elementNumber);
std::vector<CellType> cell_type_vector(nb_cells); std::vector<CellType> cell_type_vector(nb_cells);
std::vector<int> cell_number_vector(nb_cells);
std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells); std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells);
const size_t nb_tetrahedra = __tetrahedra.size(); const size_t nb_tetrahedra = __tetrahedra.size();
...@@ -967,6 +979,7 @@ GmshReader::__proceedData() ...@@ -967,6 +979,7 @@ GmshReader::__proceedData()
cell_by_node_vector[j][r] = __tetrahedra[j][r]; cell_by_node_vector[j][r] = __tetrahedra[j][r];
} }
cell_type_vector[j] = CellType::Tetrahedron; cell_type_vector[j] = CellType::Tetrahedron;
cell_number_vector[j] = __tetrahedra_number[j];
} }
const size_t nb_hexahedra = __hexahedra.size(); const size_t nb_hexahedra = __hexahedra.size();
for (size_t j=0; j<nb_hexahedra; ++j) { for (size_t j=0; j<nb_hexahedra; ++j) {
...@@ -976,10 +989,12 @@ GmshReader::__proceedData() ...@@ -976,10 +989,12 @@ GmshReader::__proceedData()
cell_by_node_vector[jh][r] = __hexahedra[j][r]; cell_by_node_vector[jh][r] = __hexahedra[j][r];
} }
cell_type_vector[jh] = CellType::Hexahedron; cell_type_vector[jh] = CellType::Hexahedron;
cell_number_vector[jh] = __hexahedra_number[j];
} }
std::shared_ptr<Connectivity3D> p_connectivity(new Connectivity3D(cell_by_node_vector, std::shared_ptr<Connectivity3D> p_connectivity(new Connectivity3D(cell_by_node_vector,
cell_type_vector)); cell_type_vector,
cell_number_vector));
Connectivity3D& connectivity = *p_connectivity; Connectivity3D& connectivity = *p_connectivity;
std::map<unsigned int, std::vector<unsigned int>> ref_faces_map; std::map<unsigned int, std::vector<unsigned int>> ref_faces_map;
...@@ -1020,6 +1035,7 @@ GmshReader::__proceedData() ...@@ -1020,6 +1035,7 @@ GmshReader::__proceedData()
const size_t nb_cells = (dimension2_mask, elementNumber); const size_t nb_cells = (dimension2_mask, elementNumber);
std::vector<CellType> cell_type_vector(nb_cells); std::vector<CellType> cell_type_vector(nb_cells);
std::vector<int> cell_number_vector(nb_cells);
std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells); std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells);
const size_t nb_triangles = __triangles.size(); const size_t nb_triangles = __triangles.size();
...@@ -1029,6 +1045,7 @@ GmshReader::__proceedData() ...@@ -1029,6 +1045,7 @@ GmshReader::__proceedData()
cell_by_node_vector[j][r] = __triangles[j][r]; cell_by_node_vector[j][r] = __triangles[j][r];
} }
cell_type_vector[j] = CellType::Triangle; cell_type_vector[j] = CellType::Triangle;
cell_number_vector[j] = __triangles_number[j];
} }
const size_t nb_quadrangles = __quadrangles.size(); const size_t nb_quadrangles = __quadrangles.size();
...@@ -1039,10 +1056,12 @@ GmshReader::__proceedData() ...@@ -1039,10 +1056,12 @@ GmshReader::__proceedData()
cell_by_node_vector[jq][r] = __quadrangles[j][r]; cell_by_node_vector[jq][r] = __quadrangles[j][r];
} }
cell_type_vector[jq] = CellType::Quadrangle; cell_type_vector[jq] = CellType::Quadrangle;
cell_number_vector[jq] = __quadrangles_number[j];
} }
std::shared_ptr<Connectivity2D> p_connectivity(new Connectivity2D(cell_by_node_vector, std::shared_ptr<Connectivity2D> p_connectivity(new Connectivity2D(cell_by_node_vector,
cell_type_vector)); cell_type_vector,
cell_number_vector));
Connectivity2D& connectivity = *p_connectivity; Connectivity2D& connectivity = *p_connectivity;
std::map<unsigned int, std::vector<unsigned int>> ref_faces_map; std::map<unsigned int, std::vector<unsigned int>> ref_faces_map;
...@@ -1091,6 +1110,7 @@ GmshReader::__proceedData() ...@@ -1091,6 +1110,7 @@ GmshReader::__proceedData()
const size_t nb_cells = (dimension1_mask, elementNumber); const size_t nb_cells = (dimension1_mask, elementNumber);
std::vector<CellType> cell_type_vector(nb_cells); std::vector<CellType> cell_type_vector(nb_cells);
std::vector<int> cell_number_vector(nb_cells);
std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells); std::vector<std::vector<unsigned int>> cell_by_node_vector(nb_cells);
for (size_t j=0; j<nb_cells; ++j) { for (size_t j=0; j<nb_cells; ++j) {
...@@ -1099,10 +1119,12 @@ GmshReader::__proceedData() ...@@ -1099,10 +1119,12 @@ GmshReader::__proceedData()
cell_by_node_vector[j][r] = __edges[j][r]; cell_by_node_vector[j][r] = __edges[j][r];
} }
cell_type_vector[j] = CellType::Line; cell_type_vector[j] = CellType::Line;
cell_number_vector[j] = __edges_number[j];
} }
std::shared_ptr<Connectivity1D> p_connectivity(new Connectivity1D(cell_by_node_vector, std::shared_ptr<Connectivity1D> p_connectivity(new Connectivity1D(cell_by_node_vector,
cell_type_vector)); cell_type_vector,
cell_number_vector));
Connectivity1D& connectivity = *p_connectivity; Connectivity1D& connectivity = *p_connectivity;
std::map<unsigned int, std::vector<unsigned int>> ref_points_map; std::map<unsigned int, std::vector<unsigned int>> ref_points_map;
......
...@@ -83,26 +83,32 @@ private: ...@@ -83,26 +83,32 @@ private:
using Point = unsigned int; using Point = unsigned int;
Array<Point> __points; Array<Point> __points;
std::vector<int> __points_ref; std::vector<int> __points_ref;
std::vector<int> __points_number;
using Edge = TinyVector<2,unsigned int>; using Edge = TinyVector<2,unsigned int>;
Array<Edge> __edges; Array<Edge> __edges;
std::vector<int> __edges_ref; std::vector<int> __edges_ref;
std::vector<int> __edges_number;
using Triangle = TinyVector<3,unsigned int>; using Triangle = TinyVector<3,unsigned int>;
Array<Triangle> __triangles; Array<Triangle> __triangles;
std::vector<int> __triangles_ref; std::vector<int> __triangles_ref;
std::vector<int> __triangles_number;
using Quadrangle = TinyVector<4,unsigned int>; using Quadrangle = TinyVector<4,unsigned int>;
Array<Quadrangle> __quadrangles; Array<Quadrangle> __quadrangles;
std::vector<int> __quadrangles_ref; std::vector<int> __quadrangles_ref;
std::vector<int> __quadrangles_number;
using Tetrahedron = TinyVector<4,unsigned int>; using Tetrahedron = TinyVector<4,unsigned int>;
Array<Tetrahedron> __tetrahedra; Array<Tetrahedron> __tetrahedra;
std::vector<int> __tetrahedra_ref; std::vector<int> __tetrahedra_ref;
std::vector<int> __tetrahedra_number;
using Hexahedron = TinyVector<8,unsigned int>; using Hexahedron = TinyVector<8,unsigned int>;
Array<Hexahedron> __hexahedra; Array<Hexahedron> __hexahedra;
std::vector<int> __hexahedra_ref; std::vector<int> __hexahedra_ref;
std::vector<int> __hexahedra_number;
/** /**
* Gmsh format provides a numbered, none ordrered and none dense * Gmsh format provides a numbered, none ordrered and none dense
...@@ -110,6 +116,11 @@ private: ...@@ -110,6 +116,11 @@ private:
*/ */
std::vector<int> __verticesCorrepondance; std::vector<int> __verticesCorrepondance;
/**
* elements types
*/
std::vector<int> __elementNumber;
/** /**
* elements types * elements types
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment