|
FEAT 3
Finite Element Analysis Toolbox
|
Contains boolean operations on meshparts (intersection, union, difference, symmetric difference) More...
#include <kernel/base_header.hpp>#include <kernel/geometry/index_set.hpp>#include <kernel/geometry/mesh_part.hpp>#include <kernel/geometry/target_set.hpp>#include <kernel/shape.hpp>#include <kernel/util/assertion.hpp>#include <algorithm>#include <functional>#include <memory>#include <optional>Go to the source code of this file.
Classes | |
| class | FEAT::Geometry::Inner::DimVector< Shape_, T_ > |
| Utility class for storing one vector per dimension. More... | |
| class | FEAT::Geometry::Inner::DimVector< Shape::Vertex, T_ > |
| Utility class for storing one vector per dimension. More... | |
| struct | FEAT::Geometry::Inner::JoinEntry |
| Helper-struct for storing relationships between meshpart entities. More... | |
| class | FEAT::Geometry::MeshPartOperations< MeshType_ > |
| Boolean operations on mesh parts. More... | |
Namespaces | |
| namespace | FEAT |
| FEAT namespace. | |
| namespace | FEAT::Geometry |
| Geometry namespace. | |
Contains boolean operations on meshparts (intersection, union, difference, symmetric difference)
The core idea of this implementation is a sort of join over mesh entities, inspired by database joins. The join contains an entry for each entity in either of the input meshparts. That entry contains the following information:
We can create the target sets with a simple predicate.
Selecting all entities that are contained in both input meshpart creates an intersection Selecting all entities that are contained in either input meshpart creates an union. Selecting all entities that are contained in the lefthand-side meshpart but not the righthand-side creates a difference.
After selecting the elements we can create target sets by simply copying the mesh-indices from the correct input target sets. During this step we also record the indicices of the selected entities in the result meshpart.
We can copy topology information by looking at the topologies of the input meshparts (if they have one), searching of any facets in the join, and then recording the indices of the entities in the result meshpart in the result meshparts topology.
We can copy attributes by copying from the input attributes and merging values whenever an entitiy occurs in both input meshparts.
Definition in file mesh_part_ops.hpp.