Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
INTERP_KERNEL::Interpolation3D Class Reference
Inheritance diagram for INTERP_KERNEL::Interpolation3D:
Collaboration diagram for INTERP_KERNEL::Interpolation3D:

Public Member Functions

template<class MyMeshType , class MatrixType >
int interpolateMeshes (const MyMeshType &srcMesh, const MyMeshType &targetMesh, MatrixType &result, const std::string &method)
 
 Interpolation3D ()
 
 Interpolation3D (const InterpolationOptions &io)
 
- Public Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
int fromIntegralUniform (const MyMeshType &meshT, MatrixType &result, const std::string &method)
 
int interpolateMeshes (const MyMeshType &meshS, const MyMeshType &meshT, MatrixType &result)
 
 Interpolation ()
 
 Interpolation (const InterpolationOptions &io)
 
int toIntegralUniform (const MyMeshType &meshS, MatrixType &result, const std::string &method)
 
- Public Member Functions inherited from INTERP_KERNEL::InterpolationOptions
void copyOptions (const InterpolationOptions &other)
 
std::string filterInterpolationMethod (const std::string &meth) const
 
double getArcDetectionPrecision () const
 
double getBoundingBoxAdjustment () const
 
double getBoundingBoxAdjustmentAbs () const
 
bool getDoRotate () const
 
IntersectionType getIntersectionType () const
 
std::string getIntersectionTypeRepr () const
 
double getMaxDistance3DSurfIntersect () const
 
bool getMeasureAbsStatus () const
 
double getMedianPlane () const
 
double getMinDotBtwPlane3DSurfIntersect () const
 
int getOrientation () const
 
double getPrecision () const
 
int getPrintLevel () const
 
SplittingPolicy getSplittingPolicy () const
 
std::string getSplittingPolicyRepr () const
 
void init ()
 
 InterpolationOptions ()
 
std::string printOptions () const
 
void setArcDetectionPrecision (double p)
 
void setBoundingBoxAdjustment (double bba)
 
void setBoundingBoxAdjustmentAbs (double bba)
 
void setDoRotate (bool dr)
 
bool setInterpolationOptions (long print_level, std::string intersection_type, double precision, double median_plane, bool do_rotate, double bounding_box_adjustment, double bounding_box_adjustment_abs, double max_distance_for_3Dsurf_intersect, long orientation, bool measure_abs, std::string splitting_policy)
 
void setIntersectionType (IntersectionType it)
 
void setMaxDistance3DSurfIntersect (double bba)
 
void setMeasureAbsStatus (bool newStatus)
 
void setMedianPlane (double mp)
 
void setMinDotBtwPlane3DSurfIntersect (double v)
 
bool setOptionDouble (const std::string &key, double value)
 
bool setOptionInt (const std::string &key, int value)
 
bool setOptionString (const std::string &key, const std::string &value)
 
void setOrientation (int o)
 
void setPrecision (double p)
 
void setPrintLevel (int pl)
 
void setSplittingPolicy (SplittingPolicy sp)
 

Additional Inherited Members

- Static Public Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
static double CalculateCharacteristicSizeOfMeshes (const MyMeshType &myMeshS, const MyMeshType &myMeshT, const int printLevel)
 
- Static Public Attributes inherited from INTERP_KERNEL::InterpolationOptions
static const char ARC_DETECTION_PRECISION_STR [] ="ArcDetectionPrecision"
 
static const char BARYCENTRIC_INTERSECT_STR [] ="Barycentric"
 
static const char BARYCENTRICGEO2D_INTERSECT_STR [] ="BarycentricGeo2D"
 
static const char BOUNDING_BOX_ADJ_ABS_STR [] ="BoundingBoxAdjustmentAbs"
 
static const char BOUNDING_BOX_ADJ_STR [] ="BoundingBoxAdjustment"
 
static const char CONVEX_INTERSECT2D_STR [] ="Convex"
 
static const char DO_ROTATE_STR [] ="DoRotate"
 
static const char GENERAL_SPLIT_24_STR [] ="GENERAL_24"
 
static const char GENERAL_SPLIT_48_STR [] ="GENERAL_48"
 
static const char GEOMETRIC_INTERSECT2D_STR [] ="Geometric2D"
 
static const char INTERSEC_TYPE_STR [] ="IntersectionType"
 
static const char MAX_DISTANCE_3DSURF_INSECT_STR [] ="MaxDistance3DSurfIntersect"
 
static const char MEASURE_ABS_STR [] ="MeasureAbs"
 
static const char MEDIANE_PLANE_STR [] ="MedianPlane"
 
static const char MIN_DOT_BTW_3DSURF_INSECT_STR [] ="MinDotBetween3DSurfIntersect"
 
static const char ORIENTATION_STR [] ="Orientation"
 
static const char PLANAR_SPLIT_FACE_5_STR [] ="PLANAR_FACE_5"
 
static const char PLANAR_SPLIT_FACE_6_STR [] ="PLANAR_FACE_6"
 
static const char POINTLOCATOR_INTERSECT_STR [] ="PointLocator"
 
static const char PRECISION_STR [] ="Precision"
 
static const char PRINT_LEV_STR [] ="PrintLevel"
 
static const char SPLITTING_POLICY_STR [] ="SplittingPolicy"
 
static const char TRIANGULATION_INTERSECT2D_STR [] ="Triangulation"
 
- Protected Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
Interpolation3DasLeaf ()
 
int fromToIntegralUniform (bool fromTo, const MyMeshType &mesh, MatrixType &result, const std::string &method)
 

Detailed Description

Class used to calculate the volumes of intersection between the elements of two 3D meshes.

Constructor & Destructor Documentation

INTERP_KERNEL::Interpolation3D::Interpolation3D ( )

Default constructor

INTERP_KERNEL::Interpolation3D::Interpolation3D ( const InterpolationOptions io)

Member Function Documentation

template<class MyMeshType , class MatrixType >
int INTERP_KERNEL::Interpolation3D::interpolateMeshes ( const MyMeshType &  srcMesh,
const MyMeshType &  targetMesh,
MatrixType &  result,
const std::string &  method 
)

Calculates the matrix of volumes of intersection between the elements of srcMesh and the elements of targetMesh. The calculation is done in two steps. First a filtering process reduces the number of pairs of elements for which the calculation must be carried out by eliminating pairs that do not intersect based on their bounding boxes. Then, the volume of intersection is calculated by an object of type Intersector3D for the remaining pairs, and entered into the intersection matrix.

The matrix is partially sparse : it is a vector of maps of integer - double pairs. It can also be an INTERP_KERNEL::Matrix object. The length of the vector is equal to the number of target elements - for each target element there is a map, regardless of whether the element intersects any source elements or not. But in the maps there are only entries for those source elements which have a non-zero intersection volume with the target element. The vector has indices running from 0 to (nb target elements - 1), meaning that the map for target element i is stored at index i - 1. In the maps, however, the indexing is more natural : the intersection volume of the target element i with source element j is found at matrix[i-1][j].

Parameters
srcMesh3-dimensional source mesh
targetMesh3-dimesional target mesh, containing only tetraedra
resultmatrix in which the result is stored

References INTERP_KERNEL::Barycentric, INTERP_KERNEL::InterpolationOptions::filterInterpolationMethod(), INTERP_KERNEL::InterpolationOptions::getIntersectionType(), INTERP_KERNEL::InterpolationOptions::getPrecision(), INTERP_KERNEL::InterpolationOptions::getSplittingPolicy(), INTERP_KERNEL::MappedBarycentric, INTERP_KERNEL::PointLocator, and INTERP_KERNEL::Triangulation.

Referenced by MEDCoupling::InterpolationMatrix::addContribution().