Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix > Class Template Reference
Inheritance diagram for INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >:
Collaboration diagram for INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >:

Public Types

typedef MyMeshType::MyConnType ConnType
 
typedef std::map< int,
std::set< int > > 
DuplicateFacesType
 
- Public Types inherited from INTERP_KERNEL::TargetIntersector< MyMeshType, MyMatrix >
typedef MyMeshType::MyConnType ConnType
 

Public Member Functions

void adjustBoundingBoxes (std::vector< double > &bbox, double surf3DAdjustmentEps, double surf3DAdjustmentEpsAbs)
 
void createBoundingBoxes (const MyMeshType &mesh, std::vector< double > &bbox)
 
void getElemBB (double *bb, const MyMeshType &mesh, ConnType iP, ConnType nb_nodes)
 
virtual const DuplicateFacesTypegetIntersectFaces () const
 
 PlanarIntersector (const MyMeshType &meshT, const MyMeshType &meshS, double dimCaracteristic, double precision, double md3DSurf, double minDot3DSurf, double medianPlane, bool doRotate, int orientation, int printLevel)
 
virtual ~PlanarIntersector ()
 
- Public Member Functions inherited from INTERP_KERNEL::TargetIntersector< MyMeshType, MyMatrix >
virtual int getNumberOfColsOfResMatrix () const =0
 
virtual int getNumberOfRowsOfResMatrix () const =0
 
virtual void intersectCells (ConnType targetCell, const std::vector< ConnType > &srcCells, MyMatrix &res)=0
 
virtual ~TargetIntersector ()
 

Static Public Member Functions

static int Projection (double *Coords_A, double *Coords_B, int nb_NodesA, int nb_NodesB, double epsilon, double md3DSurf, double minDot3DSurf, double median_plane, bool do_rotate)
 

Static Public Attributes

static const int MESHDIM =MyMeshType::MY_MESHDIM
 
static const NumberingPolicy numPol =MyMeshType::My_numPol
 
static const int SPACEDIM =MyMeshType::MY_SPACEDIM
 

Protected Member Functions

void getRealCoordinates (ConnType icellT, ConnType icellS, ConnType nbNodesT, ConnType nbNodesS, std::vector< double > &coordsT, std::vector< double > &coordsS, int &orientation)
 
void getRealSourceCoordinates (ConnType icellS, std::vector< double > &coordsS)
 
void getRealSourceCoordinatesPermute (ConnType icellS, int offset, std::vector< double > &coordsS)
 
void getRealTargetCoordinates (ConnType icellT, std::vector< double > &coordsT)
 
void getRealTargetCoordinatesPermute (ConnType icellT, int offset, std::vector< double > &coordsT)
 
double getValueRegardingOption (double val) const
 
int projectionThis (double *Coords_A, double *Coords_B, int nb_NodesA, int nb_NodesB)
 

Static Protected Member Functions

static void Rotate3DTriangle (double *PP1, double *PP2, double *PP3, TranslationRotationMatrix &rotation_matrix)
 

Protected Attributes

const ConnType_connectS
 
const ConnType_connectT
 
const ConnType_connIndexS
 
const ConnType_connIndexT
 
const double * _coordsS
 
const double * _coordsT
 
double _dim_caracteristic
 
bool _do_rotate
 
double _max_distance_3Dsurf_intersect
 
double _median_plane
 
const MyMeshType & _meshS
 
const MyMeshType & _meshT
 
double _min_dot_btw_3Dsurf_intersect
 
int _orientation
 
double _precision
 
int _print_level
 

Member Typedef Documentation

template<class MyMeshType, class MyMatrix>
typedef MyMeshType::MyConnType INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::ConnType
template<class MyMeshType, class MyMatrix>
typedef std::map<int,std::set<int> > INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::DuplicateFacesType

Constructor & Destructor Documentation

template<class MyMeshType , class MyMatrix >
INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::PlanarIntersector ( const MyMeshType &  meshT,
const MyMeshType &  meshS,
double  dimCaracteristic,
double  precision,
double  md3DSurf,
double  minDot3DSurf,
double  medianPlane,
bool  doRotate,
int  orientation,
int  printLevel 
)
template<class MyMeshType , class MyMatrix >
INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::~PlanarIntersector ( )
virtual

Member Function Documentation

template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::createBoundingBoxes ( const MyMeshType &  mesh,
std::vector< double > &  bbox 
)

creates the bounding boxes for all the cells of mesh mesh

The method accepts mixed meshes (containing triangles and quadrangles). The vector returned is of dimension 6*nb_elems with bounding boxes stored as xmin1, xmax1, ymin1, ymax1, zmin1, zmax1, xmin2, xmax2, ymin2,... The returned pointer must be deleted by the calling code.

Parameters
meshstructure pointing to the mesh
bboxvector containing the bounding boxes
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::adjustBoundingBoxes ( std::vector< double > &  bbox,
double  surf3DAdjustmentEps,
double  surf3DAdjustmentEpsAbs 
)

Readjusts a set of bounding boxes so that they are extended in all dimensions for avoiding missing interesting intersections

Parameters
bboxvector containing the bounding boxes

Referenced by INTERP_KERNEL::Interpolation3DSurf::performAdjustmentOfBB().

template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getElemBB ( double *  bb,
const MyMeshType &  mesh,
ConnType  iP,
ConnType  nb_nodes 
)

Computes the bouding box of a given element. iP in numPol mode.

template<class MyMeshType , class MyMatrix >
int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::Projection ( double *  Coords_A,
double *  Coords_B,
int  nb_NodesA,
int  nb_NodesB,
double  epsilon,
double  md3DSurf,
double  minDot3DSurf,
double  median_plane,
bool  do_rotate 
)
static
template<class MyMeshType, class MyMatrix>
virtual const DuplicateFacesType* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getIntersectFaces ( ) const
virtual
template<class MyMeshType , class MyMatrix >
int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::projectionThis ( double *  Coords_A,
double *  Coords_B,
int  nb_NodesA,
int  nb_NodesB 
)
protected
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getRealTargetCoordinates ( ConnType  icellT,
std::vector< double > &  coordsT 
)
protected
Parameters
icellTid in target mesh in format of MyMeshType.
coordsToutput val that stores coordinates of the target cell automatically resized to the right length.
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getRealSourceCoordinates ( ConnType  icellS,
std::vector< double > &  coordsS 
)
protected
Parameters
icellSid in source mesh in format of MyMeshType.
coordsSoutput val that stores coordinates of the source cell automatically resized to the right length.
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getRealTargetCoordinatesPermute ( ConnType  icellT,
int  offset,
std::vector< double > &  coordsT 
)
protected
Parameters
icellTid in target mesh in format of MyMeshType.
offsetis a value in C format that indicates the number of circular permutation.
coordsToutput val that stores coordinates of the target cell automatically resized to the right length.
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getRealSourceCoordinatesPermute ( ConnType  icellS,
int  offset,
std::vector< double > &  coordsS 
)
protected
Parameters
icellSid in source mesh in format of MyMeshType.
offsetis a value in C format that indicates the number of circular permutation.
coordsSoutput val that stores coordinates of the source cell automatically resized to the right length.
template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getRealCoordinates ( ConnType  icellT,
ConnType  icellS,
ConnType  nbNodesT,
ConnType  nbNodesS,
std::vector< double > &  coordsT,
std::vector< double > &  coordsS,
int &  orientation 
)
protected
Parameters
icellTid in target mesh in format of MyMeshType.
icellSid in source mesh in format of MyMeshType.
nbNodesTnb of nodes of the target cell.
nbNodesSnb of nodes of the source cell.
coordsToutput val that stores coordinates of the target cell automatically resized to the right length.
coordsSoutput val that stores coordinates of the source cell automatically resized to the right length.
orientationis an output value too, only set if SPACEDIM==3.
template<class MyMeshType , class MyMatrix >
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::getValueRegardingOption ( double  val) const
protected

Filtering out zero surfaces and badly oriented surfaces _orientation = -1,0,1,2 -1 : the intersection is taken into account if target and cells have different orientation 0 : the intersection is always taken into account 1 : the intersection is taken into account if target and cells have the same orientation 2 : the absolute value of intersection is always taken into account

template<class MyMeshType , class MyMatrix >
void INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::Rotate3DTriangle ( double *  PP1,
double *  PP2,
double *  PP3,
TranslationRotationMatrix &  rotation_matrix 
)
staticprotected

Member Data Documentation

template<class MyMeshType, class MyMatrix>
const int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::SPACEDIM =MyMeshType::MY_SPACEDIM
static
template<class MyMeshType, class MyMatrix>
const int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::MESHDIM =MyMeshType::MY_MESHDIM
static
template<class MyMeshType, class MyMatrix>
const NumberingPolicy INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::numPol =MyMeshType::My_numPol
static
template<class MyMeshType, class MyMatrix>
const ConnType* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_connectT
protected
template<class MyMeshType, class MyMatrix>
const ConnType* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_connectS
protected
template<class MyMeshType, class MyMatrix>
const double* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_coordsT
protected
template<class MyMeshType, class MyMatrix>
const double* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_coordsS
protected
template<class MyMeshType, class MyMatrix>
const ConnType* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_connIndexT
protected
template<class MyMeshType, class MyMatrix>
const ConnType* INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_connIndexS
protected
template<class MyMeshType, class MyMatrix>
const MyMeshType& INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_meshT
protected
template<class MyMeshType, class MyMatrix>
const MyMeshType& INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_meshS
protected
template<class MyMeshType, class MyMatrix>
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_dim_caracteristic
protected
template<class MyMeshType, class MyMatrix>
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_max_distance_3Dsurf_intersect
protected
template<class MyMeshType, class MyMatrix>
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_min_dot_btw_3Dsurf_intersect
protected
template<class MyMeshType, class MyMatrix>
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_precision
protected
template<class MyMeshType, class MyMatrix>
double INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_median_plane
protected
template<class MyMeshType, class MyMatrix>
bool INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_do_rotate
protected
template<class MyMeshType, class MyMatrix>
int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_orientation
protected
template<class MyMeshType, class MyMatrix>
int INTERP_KERNEL::PlanarIntersector< MyMeshType, MyMatrix >::_print_level
protected