Version: 9.14.0
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 >
MyMeshType::MyConnType 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 >
MyMeshType::MyConnType fromIntegralUniform (const MyMeshType &meshT, MatrixType &result, const std::string &method)
 
MyMeshType::MyConnType interpolateMeshes (const MyMeshType &meshS, const MyMeshType &meshT, MatrixType &result)
 
 Interpolation ()
 
 Interpolation (const InterpolationOptions &io)
 
MyMeshType::MyConnType 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 getBoundingBoxAdjustment () const
 
double getBoundingBoxAdjustmentAbs () const
 
bool getDoRotate () const
 
const FEInterpolationOptionsgetFEOptions () const
 
IntersectionType getIntersectionType () const
 
std::string getIntersectionTypeRepr () const
 
double getMaxDistance3DSurfIntersect () const
 
bool getMaxDistanceStatus () const override
 
bool getMeasureAbsStatus () const
 
double getMedianPlane () const
 
double getMinDotBtwPlane3DSurfIntersect () const
 
int getOrientation () const
 
double getPrecision () const
 
int getPrintLevel () const
 
double getProjectionMaxDistance () const override
 
bool getProjectionOnSurfStatus () const override
 
SplittingPolicy getSplittingPolicy () const
 
std::string getSplittingPolicyRepr () const
 
void init ()
 
 InterpolationOptions ()
 
 InterpolationOptions (const InterpolationOptions &other)=default
 
InterpolationOptionsoperator= (const InterpolationOptions &other)=default
 
std::string printOptions () const
 
void setBoundingBoxAdjustment (double bba)
 
void setBoundingBoxAdjustmentAbs (double bba)
 
void setDoRotate (bool dr)
 
bool setInterpolationOptions (int 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, int orientation, bool measure_abs, std::string splitting_policy)
 
void setIntersectionType (IntersectionType it)
 
void setMaxDistance3DSurfIntersect (double bba)
 
void setMaxDistanceStatus (bool maxDistStatus) override
 
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 setProjectionMaxDistance (double projDistMax) override
 
void setProjectionOnSurfStatus (bool projOnSurfStatus) override
 
void setSplittingPolicy (SplittingPolicy sp)
 
 ~InterpolationOptions ()=default
 

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 Member Functions inherited from INTERP_KERNEL::InterpolationOptions
static void CheckAndSplitInterpolationMethod (const std::string &method, std::string &srcMeth, std::string &trgMeth)
 
- Static Public Attributes inherited from INTERP_KERNEL::InterpolationOptions
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 ()
 
MyMeshType::MyConnType 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

◆ Interpolation3D() [1/2]

INTERP_KERNEL::Interpolation3D::Interpolation3D ( )

Default constructor

◆ Interpolation3D() [2/2]

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

Member Function Documentation

◆ interpolateMeshes()

template<class MyMeshType , class MatrixType >
MyMeshType::MyConnType 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().