diff --git a/include/entity.h b/include/entity.h index 17aaa5dc2281e353b0b25bbf7d6e7938e11414bf..20d70b3deee341c1641304cf668e5ea44aacdf55 100644 --- a/include/entity.h +++ b/include/entity.h @@ -24,6 +24,8 @@ class entity int elemType_2D; int g_order; int a_order; + int parent_dim; + int parent_tag; size_t m_dof_base; size_t m_flux_base; @@ -103,6 +105,7 @@ public: void sort_by_orientation(void); void sort_by_gmsh(void); + int material_tag(void) const; int gmsh_tag(void) const; int gmsh_elem_type(void) const; entity_ordering current_elem_ordering(void) const; diff --git a/src/entity.cpp b/src/entity.cpp index 39cb7bf39c9f11cf1bd966ac6eb63551b05b4b38..52e86df42ff6f0dbffe268cee912be858025f988 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -42,6 +42,8 @@ entity::entity(const entity_params& ep) assert(physical_faces.size() == 4*physical_cells.size()); assert(faceTags.size() == 4*physical_cells.size()); + + gm::getParent(dim, tag, parent_dim, parent_tag); } std::vector<size_t> @@ -500,6 +502,15 @@ entity::sort_by_gmsh(void) } #endif +int +entity::material_tag(void) const +{ + if (parent_tag == -1) + return tag; + + return parent_tag; +} + int entity::gmsh_tag(void) const {