| FEAT 3
    Finite Element Analysis Toolbox | 
Dynamic mesh data structure. More...
#include <adaptive_mesh.hpp>
| Public Types | |
| using | CoordType = Coord_ | 
| Coordinate type.  More... | |
| using | FoundationMeshType = ConformalMesh< Shape_, num_coords_, Coord_ > | 
| Type of underlying mesh.  More... | |
| enum class | ImportBehaviour : std::uint8_t { RequiredOnly , All } | 
| ImportBehaviour for this mesh.  More... | |
| using | ShapeType = Shape_ | 
| Shape of this mesh.  More... | |
| using | TemplateSet = TemplateSet_ | 
| Template set used by this mesh.  More... | |
| using | VertexType = typename FoundationMeshType::VertexType | 
| Vertex type.  More... | |
| Public Member Functions | |
| AdaptiveMesh (AdaptiveMesh &&other)=delete | |
| AdaptiveMesh (AdaptiveMesh &other)=delete | |
| AdaptiveMesh (const FoundationMeshType &mesh) | |
| Constructor.  More... | |
| AdaptionStats | adapt (SubdivisionLevels &foundation_levels, ImportBehaviour import_behaviour=ImportBehaviour::RequiredOnly) | 
| Adapt the mesh to new SubdivisionLevels.  More... | |
| std::vector< std::pair< Index, Index > > | bridge_pairs () | 
| Computes mapping from elements of the foundation mesh to elements of the AdaptiveMesh.  More... | |
| MeshPart< FoundationMeshType > | exclusive_meshpart () const | 
| Exclusive MeshPart factory.  More... | |
| void | fill_neighbors () | 
| Computes neighboring elements for all mesh elements.  More... | |
| FoundationMeshType & | foundation_mesh () | 
| Accessor for foundation mesh.  More... | |
| template<int dim_> | |
| std::optional< Index > | get_child (Layer layer, Index parent_idx, Index child) | 
| Retrieve index of a child element.  More... | |
| template<int dim_, int codim_> | |
| Index | get_face_index (Layer layer, Index entity_idx, Index face_idx) const | 
| Returns an index of a sub-entity, i.e. the index of a face of a cell.  More... | |
| Index | get_neighbor (Layer layer, Index element_idx, Index neighbor_idx) const | 
| Returns the index of the n-th neighbor of the given element.  More... | |
| template<int dim> | |
| Index | get_num_children (Layer layer, Index elem) | 
| Returns the number of children of an element in the mesh.  More... | |
| Index | get_num_entities (Layer layer, int dim) const | 
| Returns number of elements of dimension dimin layerlayer.  More... | |
| std::optional< Index > | get_overlap_cell (Index foundation_index) | 
| Mapping of elements of the foundation mesh to elements of the AdaptiveMesh.  More... | |
| bool | has_vertex_changed (Layer layer, Index vertex_idx) const | 
| Indicates whether any mesh element adjacent to the given vertex has changed on the given layer.  More... | |
| Index | num_layers () const | 
| Returns number of layers of the AdaptiveMesh.  More... | |
| template<int dim_> | |
| Index | num_total_entities () const | 
| Returns the total number of entities of dimension dim_across all mesh layers.  More... | |
| AdaptiveMesh & | operator= (AdaptiveMesh &&other)=delete | 
| AdaptiveMesh & | operator= (AdaptiveMesh &other)=delete | 
| std::vector< Index > | overlap_mapping () | 
| Computes mapping from AdaptiveMesh elements to foundation mesh elements.  More... | |
| MeshPart< FoundationMeshType > | overlap_meshpart () const | 
| Overlap MeshPart factory.  More... | |
| template<typename TargetMeshType_ > | |
| MeshPart< TargetMeshType_ > | project_meshpart (Layer layer, const MeshPart< FoundationMeshType > &part) const | 
| FoundationMeshType | to_conformal_mesh (Layer layer) const | 
| Create a ConformalMesh from a layer.  More... | |
| SubdivisionLevels | transfer_sdls (SubdivisionLevels &lvls_in) const | 
| Transfer subdivision levels from the adaptive mesh to the foundation mesh.  More... | |
| void | transform (const VertexType &origin, const VertexType &angles, const VertexType &offset) | 
| Applies a "proper rigid" transformation onto the mesh vertices.  More... | |
| VertexType & | vertex (Layer layer, Index vertex_index) | 
| Retrieve vertex at index vfrom layerlayer.  More... | |
| const VertexType & | vertex (Layer layer, Index vertex_index) const | 
| Retrieve vertex at index vfrom layerlayer.   More... | |
| Static Public Member Functions | |
| template<typename VertexMarker_ > | |
| static FoundationMeshType | create_refined_mesh (const FoundationMeshType &foundation_mesh, const VertexMarker_ &marker) | 
| Use the AdaptiveMesh as a generator for other meshes.  More... | |
| Static Public Attributes | |
| static constexpr int | shape_dim = ShapeType::dimension | 
| Shape dimension.  More... | |
| static constexpr int | world_dim = ShapeType::dimension | 
| World dimension.  More... | |
| Protected Member Functions | |
| template<int parent_dim_, int child_dim_> | |
| void | _adapt_sub_entities (Index depth, AdaptiveElement< parent_dim_ > &self, const RefinementTemplate< typename Shape::FaceTraits< ShapeType, parent_dim_ >::ShapeType > &tmplt, const LevelTuple< parent_dim_ > &levels) | 
| Adapts children of dimension dim_.  More... | |
| template<int parent_dim_, int topo_dim_, int dim_ = topo_dim_ - 1> | |
| void | _build_topology (const TopologyTemplate< typename Shape::FaceTraits< ShapeType, topo_dim_ >::ShapeType > &tmplt, ElementTopology< topo_dim_ > &topo, const ElementTopology< parent_dim_ > &parent_topo, const ElementChildren< parent_dim_ > &siblings) | 
| Construct a topology for a new child element.  More... | |
| template<int topo_dim_, int dim_ = topo_dim_ - 1> | |
| bool | _dbg_check_topology_orientations (const ElementTopology< topo_dim_ > &topology) | 
| template<int topo_dim_, int dim_ = topo_dim_ - 1> | |
| bool | _dbg_check_topology_unique (const ElementTopology< topo_dim_ > &topology) | 
| template<int topo_dim_, int dim_ = topo_dim_ - 1> | |
| bool | _dbg_is_topology_consistent (const ElementTopology< topo_dim_ > &topology) | 
| template<int topo_dim_, int dim_ = topo_dim_ - 1> | |
| bool | _dbg_is_topology_layering_consistent (Intern::Layer layer, const ElementTopology< topo_dim_ > &topology) | 
| template<int dim_> | |
| void | _delete_unused (std::unordered_map< Index, ElementRef< dim_ > > &roots, const std::set< Index > &elements) | 
| Helper for garbage_collect. Deletes all entities of dimension dim that are not in the given set.  More... | |
| template<int dim_> | |
| void | _erase (Intern::ElementKey< dim_ > key) | 
| Erases an element and all its children from the mesh.  More... | |
| template<int dim_ = shape_dim> | |
| void | _garbage_collect (Intern::MeshRoots< shape_dim > &roots, const Intern::MeshIndexSet &set) | 
| Delete all elements from the storage and mesh roots that are not in the index set.  More... | |
| template<int parent_dim_, int entity_dim_> | |
| LevelTuple< entity_dim_ > | _levels (const TopologyTemplate< typename Shape::FaceTraits< ShapeType, entity_dim_ >::ShapeType > &tmplt, const LevelTuple< parent_dim_ > &lvls) | 
| Spread refinement levels to a child entity.  More... | |
| template<int entity_dim_, int result_dim_, int boundary_dim_> | |
| OrientedElementRef< result_dim_ > | _resolve_boundary_entity_reference (const ElementTopology< entity_dim_ > &topo, const EntityReference &ref) | 
| Helper-function for _resolve_entity_reference. Handles boundary entities of any dimension.  More... | |
| template<int entity_dim_, int result_dim_> | |
| OrientedElementRef< result_dim_ > | _resolve_entity_reference (const ElementTopology< entity_dim_ > &topo, const ElementChildren< entity_dim_ > &siblings, const EntityReference &ref) | 
| Private Types | |
| template<int dim_> | |
| using | AdaptiveElement = typename MeshStorage::template AdaptiveElementByDim< dim_ > | 
| using | AdaptiveVertex = typename MeshStorage::AdaptiveVertexType | 
| using | CellKey = typename MeshStorage::template ElementRefByDim< 3 > | 
| using | EdgeKey = typename MeshStorage::template ElementRefByDim< 1 > | 
| template<int dim_> | |
| using | ElementChildren = typename MeshStorage::template ElementChildrenByDim< dim_ > | 
| template<int dim_> | |
| using | ElementRef = typename MeshStorage::template ElementRefByDim< dim_ > | 
| template<int dim_> | |
| using | ElementTopology = typename MeshStorage::template ElementTopologyByDim< dim_ > | 
| using | FaceKey = typename MeshStorage::template ElementRefByDim< 2 > | 
| template<int dim_> | |
| using | LevelTuple = Intern::RefinementFieldTuple< typename TemplateSet::VertexMarkerType, Shape::FaceTraits< typename Shape::FaceTraits< Shape_, dim_ >::ShapeType, 0 >::count > | 
| using | MeshRoots = Intern::MeshRoots< shape_dim > | 
| using | MeshStorage = Intern::AdaptiveMeshStorage< Shape_, TemplateSet, VertexType > | 
| MeshStorage type.  More... | |
| using | OrientedEdge = typename MeshStorage::template OrientedElementRefByDim< 1 > | 
| template<int dim_> | |
| using | OrientedElementRef = typename MeshStorage::template OrientedElementRefByDim< dim_ > | 
| using | OrientedFace = typename MeshStorage::template OrientedElementRefByDim< 2 > | 
| using | VertexKey = typename MeshStorage::template ElementRefByDim< 0 > | 
| using | VertexMarkerType = typename TemplateSet::VertexMarkerType | 
| Private Member Functions | |
| template<int dim_> | |
| void | _adapt_children (ElementRef< dim_ > key, const LevelTuple< dim_ > &levels) | 
| Adjusts the children of the given element to match new subdivision levels.  More... | |
| void | _adapt_roots (const Intern::MeshIndexSet &set, Intern::RefinementField< typename TemplateSet::VertexMarkerType > &sdls) | 
| Adapts roots of refinement trees.  More... | |
| template<int dim_> | |
| void | _adapt_roots_of_dim (const Intern::MeshIndexSet &set, Intern::RefinementField< typename TemplateSet::VertexMarkerType > &sdls) | 
| Adapts roots of refinement trees.  More... | |
| template<int dim_> | |
| Intern::ElementKey< dim_ > | _build (Index depth, const LevelTuple< dim_ > &levels, const ElementTopology< dim_ > &topology) | 
| Construct a new subtree.  More... | |
| Private Attributes | |
| const FoundationMeshType & | _foundation_mesh | 
| Reference to foundation mesh.  More... | |
| Intern::MeshRoots< shape_dim > | _roots = {} | 
| Mesh roots.  More... | |
| AdaptionStats | _stats = {} | 
| Stats of latest adaption.  More... | |
| MeshStorage | _storage = {} | 
| Mesh storage.  More... | |
| Friends | |
| template<typename AdaptiveMeshType_ , int topology_dim_, int collection_dim_> | |
| struct | Intern::FoundationTopologyCollector | 
| template<typename AdaptiveMeshType_ , typename TargetMeshType_ , typename AlgShape_ > | |
| struct | Intern::MeshPartProjector | 
Dynamic mesh data structure.
Mesh data structure that allows adaptively refining a ConformalMesh guided by subdivision levels assigned to the vertices of the ConformalMesh. The refinement is template based. That means mesh entities are replaced with refined versions chosen from a fixed set of possible refinements.
See tutorial_09_adaptivemesh for details on how to use this class and the "Adaptive Meshing" wiki entry for documentation of the ideas and concepts used in this implementation.
The AdaptiveMesh supports:
Definition at line 211 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 284 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 263 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 258 of file adaptive_mesh.hpp.
| using FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::CoordType = Coord_ | 
Coordinate type.
Definition at line 226 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 256 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 281 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 272 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 278 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 257 of file adaptive_mesh.hpp.
| using FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::FoundationMeshType = ConformalMesh<Shape_, num_coords_, Coord_> | 
Type of underlying mesh.
Definition at line 229 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 266 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 286 of file adaptive_mesh.hpp.
| 
 | private | 
MeshStorage type.
Definition at line 251 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 260 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 275 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 261 of file adaptive_mesh.hpp.
| using FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::ShapeType = Shape_ | 
Shape of this mesh.
Definition at line 217 of file adaptive_mesh.hpp.
| using FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::TemplateSet = TemplateSet_ | 
Template set used by this mesh.
Definition at line 235 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 255 of file adaptive_mesh.hpp.
| 
 | private | 
Definition at line 288 of file adaptive_mesh.hpp.
| using FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::VertexType = typename FoundationMeshType::VertexType | 
Vertex type.
Definition at line 232 of file adaptive_mesh.hpp.
| 
 | strong | 
ImportBehaviour for this mesh.
The AdaptiveMesh imports some mesh entities into its own data format. This enum indicate what entities to import.
| Enumerator | |
|---|---|
| RequiredOnly | Import only entites required for the current subdivision levels. | 
| All | Import all entities. Useful for exporting the complete mesh later. | 
Definition at line 243 of file adaptive_mesh.hpp.
| 
 | inlineexplicit | 
Constructor.
| [in] | mesh | Reference to foundation mesh. The reference is stored and must be valid for the lifetime of the AdaptiveMesh | 
| [in] | behaviour | The import behaviour to use during adaptions | 
Definition at line 319 of file adaptive_mesh.hpp.
| 
 | inlineprivate | 
Adjusts the children of the given element to match new subdivision levels.
Children will be
| [in] | element | The element whose children will be adapted | 
| [in] | levels | New subdivision levels of the element | 
Definition at line 1137 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_stats, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::AdaptionStats::kept_element(), FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::type(), and XASSERTM.
| 
 | inlineprivate | 
Adapts roots of refinement trees.
| [in] | set | Set of indices that should be part of the mesh after adaptation | 
| [in] | sdls | SubdivisionLevels to guide adaptation | 
This method iterates over all entities in the MeshIndexSet and either
This method does not erase entities that are part of the AdaptiveMesh but not in the MeshIndexSet.
Definition at line 1091 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_foundation_mesh, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_stats, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::get_vertex_set(), FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::insert(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::shape_dim.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt().
| 
 | inlineprivate | 
Adapts roots of refinement trees.
| dim_ | Dimension of entities | 
| [in] | set | Set of indices that should be part of the mesh after adaptation | 
| [in] | sdls | SubdivisionLevels to guide adaptation | 
This method iterates over all entities of dimension dim_ in the MeshIndexSet and either
This method does not erase entities that are part of the AdaptiveMesh but not in the MeshIndexSet.
Definition at line 1007 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_erase(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_foundation_mesh, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::type().
| 
 | inlineprotected | 
Adapts children of dimension dim_.
| parent_dim_ | Dimension of parent | 
| child_dim_ | Dimension of children | 
| TQuery_ | Template query type | 
| MQuery_ | Mesh query type | 
| [in] | depth | Current refinement tree depth | 
| [in] | self | Current AdaptiveElement | 
| [in] | t_query | Template query for current dimension | 
| [in] | m_query | Mesh Query for self | 
Definition at line 1216 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_erase(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::type().
| 
 | inlineprivate | 
Construct a new subtree.
The root element will be refined using templates from the TemplateSet template parameter.
| [in] | depth | The starting depth for the new subtree | 
| [in] | levels | The refinement levels for the element, dictates further refinement | 
| [in] | topology | The surrounding elements of the new element | 
Definition at line 881 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_stats, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::AdaptionStats::added_element(), ASSERT, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::insert(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::vertex().
| 
 | inlineprotected | 
Construct a topology for a new child element.
| parent_dim_ | Dimension of the parent element | 
| topo_dim | Dimension of the topology | 
| dim_ | Current working dim | 
| [in] | tmplt | Topology template | 
| [in,out] | topo | Topology being constructed | 
| [in] | parent_topo | Parent topology | 
| [in] | siblings | Sibling elemets, aka children of the parent entity | 
Implemented via recursion on dim_.
Definition at line 1300 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build_topology(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::BoundaryEdge, FEAT::Geometry::BoundaryFace, FEAT::Geometry::EntityReference::source, and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::vertex().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build_topology().
| 
 | inlineprotected | 
Definition at line 1487 of file adaptive_mesh.hpp.
| 
 | inlineprotected | 
Definition at line 1459 of file adaptive_mesh.hpp.
| 
 | inlineprotected | 
Definition at line 1531 of file adaptive_mesh.hpp.
| 
 | inlineprotected | 
Definition at line 1575 of file adaptive_mesh.hpp.
| 
 | inlineprotected | 
Helper for garbage_collect. Deletes all entities of dimension dim that are not in the given set.
| [in,out] | roots | MeshRoots to operate on | 
| [in] | set | Set of mesh indices to keep | 
Definition at line 1423 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_erase().
| 
 | inlineprotected | 
Erases an element and all its children from the mesh.
| [in] | key | Key pointin to root of subtree to erase | 
Wrapper around MeshStorage::erase for stat-keeping purposes
Definition at line 1197 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_stats, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::erase(), and FEAT::Geometry::AdaptionStats::removed_elements().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots_of_dim(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_sub_entities(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_delete_unused().
| 
 | inlineprotected | 
Delete all elements from the storage and mesh roots that are not in the index set.
| [in,out] | roots | MeshRoots to operate on | 
| [in] | set | Set of mesh indices to keep | 
Definition at line 1449 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_garbage_collect().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_garbage_collect(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt().
| 
 | inlineprotected | 
Spread refinement levels to a child entity.
| parent_dim_ | Dimension of the parent | 
| entity_dim_ | Dimension of the child entity | 
| tmplt | Topology template for the children | 
| lvls | Refinement field markings of the parent | 
Calculates the vertex markings for a child element, based on its topology template.
Definition at line 1263 of file adaptive_mesh.hpp.
References FEAT::Geometry::Intern::RefinementFieldTuple< VertexMarking_, size_ >::size.
| 
 | inlineprotected | 
Helper-function for _resolve_entity_reference. Handles boundary entities of any dimension.
Definition at line 1390 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, ASSERT, FEAT::Geometry::BoundaryEdge, FEAT::Geometry::BoundaryFace, FEAT::Geometry::EntityReference::entity, FEAT::Geometry::EntityReference::index, FEAT::Geometry::EntityReference::source, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::type().
| 
 | inlineprotected | 
Definition at line 1358 of file adaptive_mesh.hpp.
| 
 | inline | 
Adapt the mesh to new SubdivisionLevels.
| [in] | foundation_levels | SubdivisionLevels on the foundation mesh | 
| [in] | import_behaviour | Enum indicating what entities should be added to layer 0. If RequiredOnly, only elements required for the (partial) refinmement are added, if All, all entities of the foundation mesh are added. | 
Definition at line 339 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_foundation_mesh, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_garbage_collect(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_stats, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::All, ASSERTM, FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::get_num_vertices(), FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::reindex(), and FEAT::Geometry::AdaptionStats::reset().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::create_refined_mesh().
| 
 | inline | 
Computes mapping from elements of the foundation mesh to elements of the AdaptiveMesh.
Definition at line 619 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_index().
| 
 | inlinestatic | 
Use the AdaptiveMesh as a generator for other meshes.
| VertexMarker_ | Marker for creating subdivision levels. Callable object, which takes an Index as the only argument and returns a std::uint64_t. Used to assign a subdivision level to each vertex. | 
| [in] | foundation_mesh | Foundation mesh which gets adaptively refined to produce the new mesh | 
| [in] | marker | Vertex marker which determines subdivision levels | 
Definition at line 402 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::All, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::foundation_mesh(), FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::get_num_vertices(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::num_layers(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::to_conformal_mesh().
| 
 | inline | 
Exclusive MeshPart factory.
Creates a MeshPart (without topology) of all elements of the foundation mesh that are not part of the AdaptiveMesh, i.e. all elements that are not overlapped by the AdaptiveMesh. That is, all elements which are not further refined (if ImportBehaviour::RequiredOnly is used) or no elements (if ImportBehaviour::All is used).
The created MeshPart is the inverse of the MeshPart created by overlap_meshpart().
Definition at line 700 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_foundation_mesh, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::get_num_entities(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::shape_dim.
| 
 | inline | 
Computes neighboring elements for all mesh elements.
Definition at line 817 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::fill_neighbors().
| 
 | inline | 
Accessor for foundation mesh.
Definition at line 634 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_foundation_mesh.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::create_refined_mesh().
| 
 | inline | 
Retrieve index of a child element.
| dim_ | Dimension of the child | 
| [in] | layer | Layer of parent element | 
| [in] | parent_idx | Index of parent | 
| [in] | child | Child to retrieve index of. Should fulfill 0 <= child <= get_num_children(layer, parent_idx). | 
child children, std::nullopt else. Definition at line 564 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_index().
| 
 | inline | 
Returns an index of a sub-entity, i.e. the index of a face of a cell.
| dim_ | Dimension of the entity | 
| codim_ | Dimension of the sub-entity | 
| [in] | layer | Layer to retrieve index on | 
| [in] | entity_idx | Index of the entity of layer | 
| [in] | face_idx | Index of the sub-entity | 
Definition at line 531 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_index().
| 
 | inline | 
Returns the index of the n-th neighbor of the given element.
Definition at line 827 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_neighbor().
| 
 | inline | 
Returns the number of children of an element in the mesh.
| [in] | layer | Layer of parent element | 
| [in] | elem | Index of parent | 
Definition at line 594 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::type().
| 
 | inline | 
Returns number of elements of dimension dim in layer layer. 
| [in] | layer | The mesh layer to retrieve numbentr of elements from | 
| [in] | dim | The dimension of the elements | 
Definition at line 546 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::num_entities().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::to_conformal_mesh().
| 
 | inline | 
Mapping of elements of the foundation mesh to elements of the AdaptiveMesh.
Definition at line 645 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_index().
| 
 | inline | 
Indicates whether any mesh element adjacent to the given vertex has changed on the given layer.
This is intended to be used with the BPX solver to determine which vertices participate on the given layer.
Definition at line 610 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_vertex_by_index(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::vertex().
| 
 | inline | 
Returns number of layers of the AdaptiveMesh.
Note that this contains layer 0, which is a copy of (part of) the foundation mesh. There are num_layers() - 1 new mesh layers.
Definition at line 682 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::num_layers().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::create_refined_mesh(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::transfer_sdls().
| 
 | inline | 
Returns the total number of entities of dimension dim_ across all mesh layers. 
Definition at line 500 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage.
| 
 | inline | 
Computes mapping from AdaptiveMesh elements to foundation mesh elements.
Definition at line 664 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_index(), and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::num_entities().
| 
 | inline | 
Overlap MeshPart factory.
Creates a MeshPart (without topology) of all elements of the foundation mesh that are also part of the AdaptiveMesh, i.e. all elements that are overlapped by the AdaptiveMesh. That is, all elements which are further refined (if ImportBehaviour::RequiredOnly is used) or all elements (if ImportBehaviour::All is used).
The created MeshPart is the inverse of the MeshPart created by exclusive_meshpart().
Definition at line 744 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::shape_dim.
| 
 | inline | 
Convert a mesh part on the regular mesh to a mesh part on the adaptive mesh.
All components of the adaptive mesh, that are a (grand)-child of any of the regular components are included. In other words, this method computes the intersection of a regular mesh part with an adaptive mesh, accounting for refinement of elements.
Maintains relative order of entities. This means, for example, if the original MeshPart contains edges 1, 4 and 6, then the projected mesh part will first contain all (grand)-children of edge 1, then all (grand-)children of edge 4, and then finally all (grand-)children of edge 6. This, by extension, means that mesh part projection is suitable for mirror assembly.
in]
| [in] | part | The MeshPart to project | 
| [in] | layer | The layer to project to | 
Definition at line 467 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_roots, and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage.
| 
 | inline | 
Create a ConformalMesh from a layer.
| [in] | layer | Index of layer to create a ConformalMesh of | 
Definition at line 425 of file adaptive_mesh.hpp.
References FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::fill_neighbors(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_num_entities().
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::create_refined_mesh().
| 
 | inline | 
Transfer subdivision levels from the adaptive mesh to the foundation mesh.
For each vertex of the finest layer of the AdaptiveMesh the closest foundation mesh vertex is found and its subdivision level is set, such that each founation vertex is assigned the maximum subdivision level of any of its closests vertices.
| [in] | lvl_in | SubdivisionLevels on the AdaptiveMesh. Assigns a subdivision level to each vertex of the finest adaptive mesh level | 
Definition at line 782 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_vertex_by_index(), FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::num_entities(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::num_layers(), and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::num_layers().
| 
 | inline | 
Applies a "proper rigid" transformation onto the mesh vertices.
Let v denote the origin world point, w the offset world point and R the rotation matrix corresponding to the angles, then this function applies the following transformation for any vertex x of the vertex set:
\[ x \mapsto w + R\cdot (x - v) \]
| [in] | origin | The origin of the transformation. This is subtracted from any vertex before applying the rotation. | 
| [in] | angles | The angles of the rotation matrix. 
 | 
| [in] | offset | The offset of the transformation. This is added to any vertex after applying the rotation. | 
Definition at line 860 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, and FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::transform().
| 
 | inline | 
Retrieve vertex at index v from layer layer. 
Definition at line 508 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_vertex_by_index(), and FEAT::Geometry::Intern::AdaptiveVertex< VertexType >::vertex.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build_topology(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::has_vertex_changed().
| 
 | inline | 
Retrieve vertex at index v from layer layer.  
Definition at line 516 of file adaptive_mesh.hpp.
References FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_storage, FEAT::Geometry::Intern::AdaptiveMeshStorage< MeshShape_, TemplateSet_, VertexType_ >::get_vertex_by_index(), and FEAT::Geometry::Intern::AdaptiveVertex< VertexType >::vertex.
| 
 | friend | 
Definition at line 298 of file adaptive_mesh.hpp.
| 
 | friend | 
Definition at line 295 of file adaptive_mesh.hpp.
| 
 | private | 
Reference to foundation mesh.
Definition at line 301 of file adaptive_mesh.hpp.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots_of_dim(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::exclusive_meshpart(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::foundation_mesh().
| 
 | private | 
Mesh roots.
Definition at line 304 of file adaptive_mesh.hpp.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots_of_dim(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::bridge_pairs(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::exclusive_meshpart(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_overlap_cell(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::overlap_mapping(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::overlap_meshpart(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::project_meshpart().
| 
 | private | 
Stats of latest adaption.
Definition at line 310 of file adaptive_mesh.hpp.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_children(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_erase(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt().
| 
 | private | 
Mesh storage.
Definition at line 307 of file adaptive_mesh.hpp.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_children(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots_of_dim(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_sub_entities(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_build_topology(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_erase(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_resolve_boundary_entity_reference(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::adapt(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::bridge_pairs(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::fill_neighbors(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_child(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_face_index(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_neighbor(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_num_children(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_num_entities(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::get_overlap_cell(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::has_vertex_changed(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::num_layers(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::num_total_entities(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::overlap_mapping(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::project_meshpart(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::transfer_sdls(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::transform(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::vertex().
| 
 | staticconstexpr | 
Shape dimension.
Definition at line 220 of file adaptive_mesh.hpp.
Referenced by FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::_adapt_roots(), FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::exclusive_meshpart(), and FEAT::Geometry::AdaptiveMesh< TemplateSet_, Shape_, num_coords_, Coord_ >::overlap_meshpart().
| 
 | staticconstexpr | 
World dimension.
Definition at line 223 of file adaptive_mesh.hpp.