Version: 6.5.0
Public Member Functions | List of all members
INTERP_KERNEL::Interpolation3D Class Reference
Inheritance diagram for INTERP_KERNEL::Interpolation3D:
Inheritance graph
[legend]
Collaboration diagram for INTERP_KERNEL::Interpolation3D:
Collaboration graph
[legend]

Public Member Functions

 Interpolation3D ()
 Interpolation3D (const InterpolationOptions &io)
template<class MyMeshType , class MatrixType >
int interpolateMeshes (const MyMeshType &srcMesh, const MyMeshType &targetMesh, MatrixType &result, const char *method)
- Public Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
 Interpolation ()
 Interpolation (const InterpolationOptions &io)
int interpolateMeshes (const MyMeshType &meshS, const MyMeshType &meshT, MatrixType &result)
int fromIntegralUniform (const MyMeshType &meshT, MatrixType &result, const char *method)
int toIntegralUniform (const MyMeshType &meshS, MatrixType &result, const char *method)
- Public Member Functions inherited from INTERP_KERNEL::InterpolationOptions
 InterpolationOptions ()
int getPrintLevel () const
void setPrintLevel (int pl)
IntersectionType getIntersectionType () const
void setIntersectionType (IntersectionType it)
std::string getIntersectionTypeRepr () const
double getPrecision () const
void setPrecision (double p)
double getMedianPlane () const
void setMedianPlane (double mp)
bool getDoRotate () const
void setDoRotate (bool dr)
double getBoundingBoxAdjustment () const
void setBoundingBoxAdjustment (double bba)
double getBoundingBoxAdjustmentAbs () const
void setBoundingBoxAdjustmentAbs (double bba)
double getMaxDistance3DSurfIntersect () const
void setMaxDistance3DSurfIntersect (double bba)
int getOrientation () const
void setOrientation (int o)
bool getMeasureAbsStatus () const
void setMeasureAbsStatus (bool newStatus)
SplittingPolicy getSplittingPolicy () const
void setSplittingPolicy (SplittingPolicy sp)
std::string getSplittingPolicyRepr () const
void setP1P0BaryMethod (bool isP1P0)
bool getP1P0BaryMethod () const
std::string filterInterpolationMethod (const std::string &meth) const
void init ()
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, bool P1P0_bary_method)
void copyOptions (const InterpolationOptions &other)
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)
std::string printOptions () const

Additional Inherited Members

- Static Public Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
static void checkAndSplitInterpolationMethod (const char *method, std::string &srcMeth, std::string &trgMeth) throw (INTERP_KERNEL::Exception)
static double CalculateCharacteristicSizeOfMeshes (const MyMeshType &myMeshS, const MyMeshType &myMeshT, const int printLevel)
- Static Public Attributes inherited from INTERP_KERNEL::InterpolationOptions
static const char PRECISION_STR [] = "Precision"
static const char MEDIANE_PLANE_STR [] = "MedianPlane"
static const char BOUNDING_BOX_ADJ_STR [] = "BoundingBoxAdjustment"
static const char BOUNDING_BOX_ADJ_ABS_STR [] = "BoundingBoxAdjustmentAbs"
static const char MAX_DISTANCE_3DSURF_INSECT_STR [] = "MaxDistance3DSurfIntersect"
static const char PRINT_LEV_STR [] = "PrintLevel"
static const char DO_ROTATE_STR [] = "DoRotate"
static const char ORIENTATION_STR [] = "Orientation"
static const char MEASURE_ABS_STR [] = "MeasureAbs"
static const char INTERSEC_TYPE_STR [] = "IntersectionType"
static const char SPLITTING_POLICY_STR [] = "SplittingPolicy"
static const char TRIANGULATION_INTERSECT2D_STR [] = "Triangulation"
static const char CONVEX_INTERSECT2D_STR [] = "Convex"
static const char GEOMETRIC_INTERSECT2D_STR [] = "Geometric2D"
static const char POINTLOCATOR_INTERSECT_STR [] = "PointLocator"
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 GENERAL_SPLIT_24_STR [] = "GENERAL_24"
static const char GENERAL_SPLIT_48_STR [] = "GENERAL_48"
- Protected Member Functions inherited from INTERP_KERNEL::Interpolation< Interpolation3D >
int fromToIntegralUniform (bool fromTo, const MyMeshType &mesh, MatrixType &result, const char *method)
Interpolation3DasLeaf ()

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 char *  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::InterpolationOptions::filterInterpolationMethod(), INTERP_KERNEL::InterpolationOptions::getIntersectionType(), INTERP_KERNEL::InterpolationOptions::getPrecision(), INTERP_KERNEL::InterpolationOptions::getSplittingPolicy(), INTERP_KERNEL::PointLocator, and INTERP_KERNEL::Triangulation.

Referenced by ParaMEDMEM::InterpolationMatrix::addContribution(), and MEDMEM_REMAPPER::prepare().

Copyright © 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS