Portage::IntersectR3D< on_what, SourceMeshType, SourceStateType, TargetMeshType, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper > Class Template Reference

#include <intersect_r3d.h>

Public Member Functions

 IntersectR3D (SourceMeshType const &source_mesh, SourceStateType const &source_state, TargetMeshType const &target_mesh, NumericTolerances_t num_tols, bool rectangular_mesh=false)
 Constructor WITHOUT interface reconstructor. More...
 
void set_material (int m)
 Set the source mesh material that we have to intersect against. More...
 
std::vector< Weights_t > operator() (int tgt_entity, std::vector< int > const &src_entities) const
 Intersect a control volume of a target_entity with control volumes of a set of source entities. More...
 
 IntersectR3D ()=delete
 
IntersectR3Doperator= (const IntersectR3D &)=delete
 Assignment operator (disabled) More...
 

Detailed Description

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

Constructor & Destructor Documentation

◆ IntersectR3D() [1/2]

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.

◆ IntersectR3D() [2/2]

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 ( )
delete

Member Function Documentation

◆ operator()()

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_entityEntity of target mesh to intersect
[in]src_entitiesEntity of source cells to intersect against
Returns
vector of Weights_t structure containing moments of intersection

◆ operator=()

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)

◆ set_material()

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.


The documentation for this class was generated from the following file: