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 > | |
Interpolation3D & | asLeaf () |
int | fromToIntegralUniform (bool fromTo, const MyMeshType &mesh, MatrixType &result, const std::string &method) |
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 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].
srcMesh | 3-dimensional source mesh |
targetMesh | 3-dimesional target mesh, containing only tetraedra |
result | matrix 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().