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) |
![]() | |
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) |
![]() | |
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 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 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" |
![]() | |
int | fromToIntegralUniform (bool fromTo, const MyMeshType &mesh, MatrixType &result, const char *method) |
Interpolation3D & | asLeaf () |
Class used to calculate the volumes of intersection between the elements of two 3D meshes.
INTERP_KERNEL::Interpolation3D::Interpolation3D | ( | ) |
Default constructor
INTERP_KERNEL::Interpolation3D::Interpolation3D | ( | const InterpolationOptions & | io | ) |
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].
srcMesh | 3-dimensional source mesh |
targetMesh | 3-dimesional target mesh, containing only tetraedra |
result | matrix 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().