| FEAT 3
    Finite Element Analysis Toolbox | 
Mapping class for BaseMesh/PatchBaseMesh and MeshPart index conversions. More...
#include <patch_meshpart_splitter.hpp>
| Public Member Functions | |
| PatchPartMap (const TargetSet &target_set) | |
| Standard constructor.  More... | |
| bool | build (const TargetSet &target_in) | 
| Creates mapping information from a BaseMesh MeshPart to a Patch MeshPart boundary MeshPart.  More... | |
| template<typename Attribute_ > | |
| void | fill_attribute_set (std::map< String, std::unique_ptr< Attribute_ > > &attribute_container_out, const std::map< String, std::unique_ptr< Attribute_ > > &attribute_container_in) const | 
| Fills an attribute set.  More... | |
| template<typename IndexSetType_ > | |
| void | fill_index_set (IndexSetType_ &index_set_out, const IndexSetType_ &index_set_in, const std::map< Index, Index > &vertex_map) const | 
| Fills the vertex-at-shape IndexSet of the PatchMeshPart MeshPart.  More... | |
| void | fill_target_set (TargetSet &target_out) const | 
| Fills the PatchMeshPart MeshPart's TargetSet.  More... | |
| const std::map< Index, Index > & | get_io_map () const | 
| Gets the mapping BaseMesh MeshPart entities to PatchMeshPart MeshPart entities.  More... | |
| Index | size () const | 
| The size of the PatchMeshPart MeshPart.  More... | |
| Private Attributes | |
| std::map< Index, Index > | _idx_map | 
| Index map from BaseMesh entity to PatchMeshPart entity.  More... | |
| std::vector< Index > | _indices | 
| This is basically the TargetSet mapping PatchMeshPart MeshPart entities to the PatchMeshPart.  More... | |
| std::map< Index, Index > | _io_map | 
| Index map from base mesh MeshPart entities to patch boundary MeshPart entities.  More... | |
Mapping class for BaseMesh/PatchBaseMesh and MeshPart index conversions.
When it is being built, the base mesh for a patch is first represented as a MeshPart (let's call it PatchMeshPart). For every shape dimension, the PatchMeshPart has a target set mapping the patch entities to the BaseMesh entities , and this is used to construct the PatchPartMap. Then the PatchPartMap can be used (via the build()-function) to create the mapping of a MeshPart referring to the BaseMesh to a MeshPart referring to the PatchMeshPart.
This information is later used to construct the PatchBaseMesh and the restriction of the BaseMesh MeshParts to it.
The PatchPartMap is always created from the PatchMeshPart TargetSet. Then, for any number of TargetSets of MeshParts referring to the BaseMesh, the build() function can be called to assemble the required information so that the Factory interface can then be used to create the real PatchMeshPart MeshPart. One at a time, that is.
Definition at line 220 of file patch_meshpart_splitter.hpp.
| 
 | inlineexplicit | 
Standard constructor.
| [in] | target_set | A transient reference to the TargetSet mapping Patch MeshPart entities to BaseMesh entities | 
Definition at line 237 of file patch_meshpart_splitter.hpp.
References _idx_map, FEAT::Geometry::TargetSet::get_num_entities(), and XASSERTM.
| 
 | inline | 
Creates mapping information from a BaseMesh MeshPart to a Patch MeshPart boundary MeshPart.
Definition at line 259 of file patch_meshpart_splitter.hpp.
References _idx_map, _indices, _io_map, and FEAT::Geometry::TargetSet::get_num_entities().
Referenced by FEAT::Geometry::PatchPartMapHolder< Shape_, dim_ >::build().
| 
 | inline | 
Fills an attribute set.
| Attribute_ | Type of the attribute contained in the passed sets. | 
| [out] | attribute_container_out | A transient reference to the attribute set to fill | 
| [in] | attribute_container_in | A transient reference to the AttributeSet of the BaseMesh MeshPart to copy to the PatchMeshPart's MeshPart | 
Definition at line 305 of file patch_meshpart_splitter.hpp.
| 
 | inline | 
Fills the vertex-at-shape IndexSet of the PatchMeshPart MeshPart.
The whole purpose of MeshPart topologies is to be different from the BaseMesh's topology. Think of the polygon representing the boundary of a 2d domain. Then the last vertex in the last edge is the same as the first vertex in the first edge. Add a parametrization variable. This needs to be different at the vertex from above depending from which edge it is referenced. This can be easily be achieved by adding another vertex to the MeshPart and changing the topology accordingly, meaning the last edge's last vertex gets mapped to the new vertex.
So we really need to copy the BaseMesh MeshPart's topology to the PatchMeshPart MeshPart's topology.
| [out] | index_set_out | A transient reference to the vertex-at-shape IndexSet of the MeshPart referring to the PatchMeshPart. Already has to have the correct size. | 
| [in] | index_set_in | A transient reference to the vertex-at-shape IndexSet of the MeshPart referring to the BaseMesh. | 
| [in] | vertex_map | A transient reference to the mapping of BaseMesh Meshpart vertices to PatchMeshPart MeshPart vertices. This is the _io_map of the PatchPartMap to dimension-0 entries, but this class has no information about it, so it need to be fetched and passed from the outside. | 
Definition at line 372 of file patch_meshpart_splitter.hpp.
References _io_map, FEAT::stringify(), and XABORTM.
Referenced by FEAT::Geometry::PatchPartMapHolder< Shape_, dim_ >::fill_index_sets().
| 
 | inline | 
Fills the PatchMeshPart MeshPart's TargetSet.
| [in] | target_out | A transient reference to the TargetSet mapping the PatchMeshPart MeshPart's entities to the PatchMeshPart | 
Definition at line 335 of file patch_meshpart_splitter.hpp.
References _indices, FEAT::Geometry::TargetSet::get_num_entities(), size(), and XASSERT.
Referenced by FEAT::Geometry::PatchPartMapHolder< Shape_, dim_ >::fill_target_sets().
Gets the mapping BaseMesh MeshPart entities to PatchMeshPart MeshPart entities.
Definition at line 405 of file patch_meshpart_splitter.hpp.
References _io_map.
| 
 | inline | 
The size of the PatchMeshPart MeshPart.
Definition at line 287 of file patch_meshpart_splitter.hpp.
References _indices.
Referenced by fill_target_set(), and FEAT::Geometry::PatchPartMapHolder< Shape_, dim_ >::get_num_entities().
Index map from BaseMesh entity to PatchMeshPart entity.
Definition at line 224 of file patch_meshpart_splitter.hpp.
Referenced by PatchPartMap(), and build().
| 
 | private | 
This is basically the TargetSet mapping PatchMeshPart MeshPart entities to the PatchMeshPart.
Definition at line 228 of file patch_meshpart_splitter.hpp.
Referenced by build(), fill_attribute_set(), fill_target_set(), and size().
Index map from base mesh MeshPart entities to patch boundary MeshPart entities.
Definition at line 226 of file patch_meshpart_splitter.hpp.
Referenced by build(), fill_attribute_set(), fill_index_set(), and get_io_map().