template<Entity_kind on_what, class SourceMeshType, class SourceStateType, class TargetMeshType, template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
class Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper >
algorithm
In this routine, we will utilize the fact that R3d can intersect a non-convex polyhedron with planar faces with a convex polyhedron (more precisely, R3D can clip a non-convex polyhedron with a set of planes). We are given a target polyhedron with possibly non-planar faces to be intersected with a list of source polyhedra again with possibly non-planar faces. We will convert the target polyhedron into a set of convex polyhedra using a symmetric tetrahedral decomposition (24 tets for a hex). We will convert each source polyhedron into a faceted non-convex polyhedron where each facet is a triangle and therefore planar.
If this class is being adapted for use with a different intersector and it can only intersect convex polyhedra, both target and source polyhedra may have to be decomposed into tets
template<Entity_kind on_what, class SourceMeshType , class SourceStateType , class TargetMeshType , template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper >::IntersectR3D |
( |
SourceMeshType const & |
source_mesh, |
|
|
SourceStateType const & |
source_state, |
|
|
TargetMeshType const & |
target_mesh, |
|
|
NumericTolerances_t |
num_tols, |
|
|
bool |
rectangular_mesh = false |
|
) |
| |
|
inline |
Constructor WITHOUT interface reconstructor.
template<Entity_kind on_what, class SourceMeshType , class SourceStateType , class TargetMeshType , template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
template<Entity_kind on_what, class SourceMeshType , class SourceStateType , class TargetMeshType , template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
std::vector<Weights_t> Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper >::operator() |
( |
int |
tgt_entity, |
|
|
std::vector< int > const & |
src_entities |
|
) |
| const |
|
inline |
Intersect a control volume of a target_entity with control volumes of a set of source entities.
- Parameters
-
[in] | tgt_entity | Entity of target mesh to intersect |
[in] | src_entities | Entity of source cells to intersect against |
- Returns
- vector of Weights_t structure containing moments of intersection
template<Entity_kind on_what, class SourceMeshType , class SourceStateType , class TargetMeshType , template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
IntersectR3D& Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper >::operator= |
( |
const IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper > & |
| ) |
|
|
delete |
Assignment operator (disabled)
template<Entity_kind on_what, class SourceMeshType , class SourceStateType , class TargetMeshType , template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void>
void Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper >::set_material |
( |
int |
m | ) |
|
|
inline |
Set the source mesh material that we have to intersect against.