GemaCoreLib
The GeMA Core library
Loading...
Searching...
No Matches
GmMeshPointCloudInterpolator Namespace Reference

Group of utilitary functions for global interpolation method. Transfering node data from a source mesh to node data of a destination mesh. More...

Typedefs

using ClosestFunc = std::function<void(const GmVector&, QVector<GmpRefDist<int>>&)>
 
using GetValueF = std::function<void(int, GmVector&)>
 
using PointCDRF = std::function<double(int)>
 
using GetCDRF = std::function<double(QVector<GmpRefDist<int>>&)>
 

Functions

template<class InterpolatorC , class InterpolatorI >
static bool toNodeConformInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcAccessors, const GmCellMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Helper function for xxxToMeshNodeInterpolation() functions.
 
bool nodeToNodeConformMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmCellMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 
template<class Interpolator , class SrcAcT >
static bool toNodeInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const SrcAcT *srcAccessor, const GmNodeSet *dstNodeSet, GmValueAccessor *dstNodeAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan=false)
 Helper function for xxxToNodeInterpolation() functions.
 
template<class Interpolator , class SrcAcT >
bool toNodeMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const SrcAcT * > &srcAccessors, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan)
 Helper function for xxxToNodeMInterpolation() functions.
 
template<class Interpolator , class SrcAcT >
static bool toGaussInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const SrcAcT *srcAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Helper function for xxxToGaussInterpolation() functions.
 
template<class Interpolator , class SrcAcT >
static bool toGaussMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const SrcAcT * > &srcAccessors, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Helper function for xxxToGaussMInterpolation() functions.
 
static double phi (double r)
 The radial basis function. Expects r to be between 0.0 and 1.0.
 
static bool fillCRMatrixNode (GmTaskManager *tm, const GmValueAccessor *coordAc, const ClosestFunc &closestF, GmSolverMatrix *M, GmVector &pointCDR, double radius, int nclosest, double alpha)
 
static bool fillCRMatrixGauss (GmTaskManager *tm, const GmElementMesh *mesh, const GmGaussIndex *gIndex, int ruleSet, bool activeOnly, const GmValueAccessor *coordAc, const ClosestFunc &closestF, GmSolverMatrix *M, GmVector &pointCDR, double radius, int nclosest, double alpha)
 
static bool solveForAcc (GmSolverMatrix *M, const GmNumSolver *solver, int valSize, const GetValueF &getVal, GmMatrix &result)
 
static void interpSplineNode (GmTaskManager *tm, const QVector< GmMatrix > &weights, const GmValueAccessor *coordAc, const QVector< GmValueAccessor * > &valueAc, const GmNodeSet *dstSet, const ClosestFunc &closestF, const PointCDRF &pointCDR, double alpha)
 
static void interpSplineGauss (GmTaskManager *tm, const QVector< GmMatrix > &weights, const GmCellGroupSet *group, int ruleSet, bool activeOnly, const GmValueAccessor *coordAc, const QVector< GmGaussAccessor * > &valueAc, const ClosestFunc &closestF, const PointCDRF &pointCDR, double alpha)
 
static int estimateBandwidth (const GmSpatialIndex *index, double radius, bool gauss)
 A helper function to estimate the matrix bandwidth for radius queries by sampling a point from the mesh. The second parameter tells if the spatial index should be queried for nearest nodes (gauss = false) or Gauss points (gauss = true).
 
static bool nodeToNodeSplineInterpolationWorker (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessor, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 A helper template so that the same implementation can be used for single and multiple accessor interpolators.
 
bool nodeToNodeInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmMesh *dstMesh, GmValueAccessor *dstNodeAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Interpolates node values from a source mesh to node values of a destination mesh using the given interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool nodeToNodeInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmNodeSet *dstNodeSet, GmValueAccessor *dstNodeAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToNodeInterpolation() overload acting over a node set instead of the whole destination mesh.
 
bool nodeToNodeMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToNodeInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output node accessors, receives a pair of same sized accessor lists.
 
bool nodeToNodeMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToNodeInterpolation() overload, interpolating together a set of attributes and acting over a node set instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output node accessors, receives a pair of same sized accessor lists.
 
bool nodeToNodeSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmMesh *dstMesh, GmValueAccessor *dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 Interpolates node values from a source mesh to node values of a destination mesh using the spline interpolation method. Each destination node value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool nodeToNodeSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmNodeSet *dstNodeSet, GmValueAccessor *dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToNodeSplineInterpolation() overload acting over a node set instead of the whole destination mesh.
 
bool nodeToNodeSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToNodeSplineInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output node accessors, receives a pair of same sized accessor lists.
 
bool nodeToNodeSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToNodeSplineInterpolation() overload, interpolating together a set of attributes and acting over a node set instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output node accessors, receives a pair of same sized accessor lists.
 
static bool nodeToGaussSplineInterpolationWorker (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessor, int ruleSet, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 A helper template so that the same implementation can be used for single and multiple accessor interpolators.
 
bool nodeToGaussInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmElementMesh *dstMesh, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Interpolates node values from a source mesh to Gauss values of a destination mesh using the given interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool nodeToGaussInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToGaussInterpolation() overload acting over a cell group instead of the whole destination mesh.
 
bool nodeToGaussMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmElementMesh *dstMesh, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToGaussInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output node and Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool nodeToGaussMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 nodeToGaussInterpolation() overload, interpolating together a set of attributes and acting over a cell group instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output node and Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool nodeToGaussSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmElementMesh *dstMesh, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 Interpolates node values from a source mesh to Gauss values of a destination mesh using the spline interpolation method. Each destination gauss value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool nodeToGaussSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmValueAccessor *srcNodeAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToGaussSplineInterpolation() overload acting over a cell group instead of the whole destination mesh.
 
bool nodeToGaussSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmElementMesh *dstMesh, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToGaussSplineInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output node and Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool nodeToGaussSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmValueAccessor * > &srcNodeAccessors, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 nodeToGaussSplineInterpolation() overload, interpolating together a set of attributes and acting over a cell group instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output node and Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
static bool gaussToNodeSplineInterpolationWorker (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessor, int srcRuleSet, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger, bool useNan=false)
 A helper template so that the same implementation can be used for single and multiple accessor interpolators.
 
bool gaussToNodeInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmMesh *dstMesh, GmValueAccessor *dstNodeAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan)
 Interpolates Gauss values from a source mesh to node values of a destination mesh using the given interpolation method.
The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool gaussToNodeInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmNodeSet *dstNodeSet, GmValueAccessor *dstNodeAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan)
 gaussToNodeInterpolation() overload acting over a node set instead of the whole destination mesh.
 
bool gaussToNodeMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan)
 gaussToNodeInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output Gauss and node accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool gaussToNodeMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger, bool useNan)
 gaussToNodeInterpolation() overload, interpolating together a set of attributes and acting over a node set instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output Gauss and node accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool gaussToNodeSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmMesh *dstMesh, GmValueAccessor *dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger, bool useNan)
 Interpolates Gauss values from a source mesh to node values of a destination mesh using the spline interpolation method. Each destination node value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool gaussToNodeSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmNodeSet *dstNodeSet, GmValueAccessor *dstNodeAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger, bool useNan)
 gaussToNodeSplineInterpolation() overload acting over a node set instead of the whole destination mesh.
 
bool gaussToNodeSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmMesh *dstMesh, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger, bool useNan)
 gaussToNodeSplineInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output Gauss and node accessors, receives a pair of same sized accessor lists. All the Gauss accessors MUST share the same rule set.
 
bool gaussToNodeSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmNodeSet *dstNodeSet, const QVector< GmValueAccessor * > &dstNodeAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger, bool useNan)
 gaussToNodeSplineInterpolation() overload, interpolating together a set of attributes, acting over a node set instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output Gauss and node accessors, receives a pair of same sized accessor lists.
All the Gauss accessors MUST share the same rule set.
 
static bool gaussToGaussSplineInterpolationWorker (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessor, int srcRuleSet, const GmCellGroupSet *dstGroup, bool dstActiveOnly, const QVector< GmGaussAccessor * > &dstGaussAccessor, int dstRuleSet, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 A helper template so that the same implementation can be used for single and multiple accessor interpolators.
 
bool gaussToGaussInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmElementMesh *dstMesh, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 Interpolates Gauss values from a source mesh to Gauss values of a destination mesh using the spligivenne interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool gaussToGaussInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 gaussToGaussInterpolation() overload acting over a cell group instead of the whole destination mesh.
 
bool gaussToGaussMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmElementMesh *dstMesh, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 gaussToGaussInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors in each list MUST share the same rule set (but the rule for input and output accessors can be different).
 
bool gaussToGaussMInterpolation (GmInterpolatorType type, QVariant typeParam, double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmDiscontinuitySet *ds, GmTaskManager *tm, const GmLogCategory &logger)
 gaussToGaussInterpolation() overload, interpolating together a set of attributes and acting over a cell group instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors in each list MUST share the same rule set (but the rule for input and output accessors can be different).
 
bool gaussToGaussSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmElementMesh *dstMesh, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 Interpolates Gauss values from a source mesh to Gauss values of a destination mesh using the spline interpolation method. Each destination gauss value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.
 
bool gaussToGaussSplineInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const GmGaussAccessor *srcGaussAccessor, const GmCellGroupSet *dstGroup, bool activeOnly, GmGaussAccessor *dstGaussAccessor, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 gaussToGaussSplineInterpolation() overload acting over a cell group instead of the whole destination mesh.
 
bool gaussToGaussSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmElementMesh *dstMesh, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 gaussToGaussSplineInterpolation() overload, interpolating together a set of attributes. Instead of getting as parameters a pair of input and an output Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors in each list MUST share the same rule set (but the rule for input and output accessors can be different).
 
bool gaussToGaussSplineMInterpolation (double searchDomain, GmPointCloudSearchDomain searchMode, const GmSpatialIndex *srcSpatialIndex, const QVector< const GmGaussAccessor * > &srcGaussAccessors, const GmCellGroupSet *dstGroup, bool activeOnly, const QVector< GmGaussAccessor * > &dstGaussAccessors, const GmNumSolver *solver, const GmDiscontinuitySet *ds, GmTaskManager *tm, double alpha, const GmLogCategory &logger)
 gaussToGaussSplineInterpolation() overload, interpolating together a set of attributes and acting over a cell group instead of the whole destination mesh. Instead of getting as parameters a pair of input and an output Gauss accessors, receives a pair of same sized accessor lists. All the Gauss accessors in each list MUST share the same rule set (but the rule for input and output accessors can be different).
 

Variables

constexpr double ALPHA = 1.5
 

Detailed Description

Group of utilitary functions for global interpolation method. Transfering node data from a source mesh to node data of a destination mesh.

Function Documentation

◆ fillCRMatrixGauss()

static bool GmMeshPointCloudInterpolator::fillCRMatrixGauss ( GmTaskManager * tm,
const GmElementMesh * mesh,
const GmGaussIndex * gIndex,
int ruleSet,
bool activeOnly,
const GmValueAccessor * coordAc,
const ClosestFunc & closestF,
GmSolverMatrix * M,
GmVector & pointCDR,
double radius,
int nclosest,
double alpha )
static

Construtor

The function that will be called for each parallel task

◆ fillCRMatrixNode()

static bool GmMeshPointCloudInterpolator::fillCRMatrixNode ( GmTaskManager * tm,
const GmValueAccessor * coordAc,
const ClosestFunc & closestF,
GmSolverMatrix * M,
GmVector & pointCDR,
double radius,
int nclosest,
double alpha )
static

Construtor

The function that will be called for each parallel task

◆ gaussToGaussInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::gaussToGaussInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmGaussAccessor * srcGaussAccessor,
const GmElementMesh * dstMesh,
bool activeOnly,
GmGaussAccessor * dstGaussAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger )

Interpolates Gauss values from a source mesh to Gauss values of a destination mesh using the spligivenne interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
typeThe desired interpolation algorithm.
typeParamAdditional parameters private to the interpolation algorithm
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh Gauss points. Must implement the "nearestGauss" capability. If the index was created with the active only option set (the default), only those Gauss points will be part of the source point cloud.
srcGaussAccessorThe accessor object giving access to the source Gauss attribute that will be interpolated. The accessor unit defines the interpolation result unit. The accessor ruleSet MUST be equal to the spatial index rule set.
dstMeshThe destination mesh
activeOnlyDefines whether only active cells will have their Gauss points interpolated (true) or if all cells will be interpolated (false).
dstGaussAccessorThe accessor object giving access to the Gauss attribute where the results will be written.
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed.

◆ gaussToGaussSplineInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::gaussToGaussSplineInterpolation ( double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmGaussAccessor * srcGaussAccessor,
const GmElementMesh * dstMesh,
bool activeOnly,
GmGaussAccessor * dstGaussAccessor,
const GmNumSolver * solver,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
double alpha,
const GmLogCategory & logger )

Interpolates Gauss values from a source mesh to Gauss values of a destination mesh using the spline interpolation method. Each destination gauss value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh Gauss points. Must implement the "nearestGauss" capability. If the index was created with the active only option set (the default), only those Gauss points will be part of the source point cloud.
srcGaussAccessorThe accessor object giving access to the source Gauss attribute that will be interpolated. The accessor unit defines the interpolation result unit. The accessor ruleSet MUST be equal to the spatial index rule set.
dstMeshThe destination mesh
activeOnlyDefines whether only active cells will have their Gauss points interpolated (true) or if all cells will be interpolated (false).
dstGaussAccessorThe accessor object giving access to the Gauss attribute where the results will be written.
solverThe solver used to get the spline radial coefficients
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed (solver error, for example).

◆ gaussToNodeInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::gaussToNodeInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmGaussAccessor * srcGaussAccessor,
const GmMesh * dstMesh,
GmValueAccessor * dstNodeAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger,
bool useNan )

Interpolates Gauss values from a source mesh to node values of a destination mesh using the given interpolation method.
The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
typeThe desired interpolation algorithm.
typeParamAdditional parameters private to the interpolation algorithm
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestGauss" capability. If the index was created with the active only option set (the default), only those Gauss points will be part of the source point cloud.
srcGaussAccessorThe accessor object giving access to the source Gauss attribute that will be interpolated. The accessor unit defines the interpolation result unit. The accessor rule set MUST be equal to the spatial index rule set.
dstMeshThe destination mesh
dstNodeAccessorThe accessor object giving access to the node attribute where the results will be written.
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed

◆ gaussToNodeSplineInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::gaussToNodeSplineInterpolation ( double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmGaussAccessor * srcGaussAccessor,
const GmMesh * dstMesh,
GmValueAccessor * dstNodeAccessor,
const GmNumSolver * solver,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
double alpha,
const GmLogCategory & logger,
bool useNan )

Interpolates Gauss values from a source mesh to node values of a destination mesh using the spline interpolation method. Each destination node value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestGauss" capability. If the index was created with the active only option set (the default), only those Gauss points will be part of the source point cloud.
srcGaussAccessorThe accessor object giving access to the source Gauss attribute that will be interpolated. The accessor unit defines the interpolation result unit. The accessor rule set MUST be equal to the spatial index rule set.
dstMeshThe destination mesh
dstNodeAccessorThe accessor object giving access to the node attribute where the results will be written.
solverThe solver used to get the spline radial coefficients
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed (solver error, for example).

◆ nodeToGaussInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::nodeToGaussInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmValueAccessor * srcNodeAccessor,
const GmElementMesh * dstMesh,
bool activeOnly,
GmGaussAccessor * dstGaussAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger )

Interpolates node values from a source mesh to Gauss values of a destination mesh using the given interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
typeThe desired interpolation algorithm.
typeParamAdditional parameters private to the interpolation algorithm
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestNode" capability.
srcNodeAccessorThe accessor object giving access to the source node attribute that will be interpolated. The accessor unit defines the interpolation result unit.
dstMeshThe destination mesh
activeOnlyDefines whether only active cells will have their Gauss points interpolated (true) or if all cells will be interpolated (false).
dstGaussAccessorThe accessor object giving access to the Gauss attribute where the results will be written.
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed

◆ nodeToGaussSplineInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::nodeToGaussSplineInterpolation ( double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmValueAccessor * srcNodeAccessor,
const GmElementMesh * dstMesh,
bool activeOnly,
GmGaussAccessor * dstGaussAccessor,
const GmNumSolver * solver,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
double alpha,
const GmLogCategory & logger )

Interpolates node values from a source mesh to Gauss values of a destination mesh using the spline interpolation method. Each destination gauss value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestNode" capability.
srcNodeAccessorThe accessor object giving access to the source node attribute that will be interpolated. The accessor unit defines the interpolation result unit.
dstMeshThe destination mesh
activeOnlyDefines whether only active cells will have their Gauss points interpolated (true) or if all cells will be interpolated (false).
dstGaussAccessorThe accessor object giving access to the Gauss attribute where the results will be written.
solverThe solver used to get the spline radial coefficients
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed (solver error, for example).

◆ nodeToNodeInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::nodeToNodeInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmValueAccessor * srcNodeAccessor,
const GmMesh * dstMesh,
GmValueAccessor * dstNodeAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger )

Interpolates node values from a source mesh to node values of a destination mesh using the given interpolation method. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
typeThe desired interpolation algorithm.
typeParamAdditional parameters private to the interpolation algorithm
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestNode" capability.
srcNodeAccessorThe accessor object giving access to the source node attribute that will be interpolated. The accessor unit defines the interpolation result unit.
dstMeshThe destination mesh
dstNodeAccessorThe accessor object giving access to the node attribute where the results will be written.
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed

◆ nodeToNodeSplineInterpolation()

GMC_API_EXPORT bool GmMeshPointCloudInterpolator::nodeToNodeSplineInterpolation ( double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const GmValueAccessor * srcNodeAccessor,
const GmMesh * dstMesh,
GmValueAccessor * dstNodeAccessor,
const GmNumSolver * solver,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
double alpha,
const GmLogCategory & logger )

Interpolates node values from a source mesh to node values of a destination mesh using the spline interpolation method. Each destination node value is calculated via a spline interpolation. The CDR (compact domain radius) of the method is defined by either an user provided radius or by a number of closest points, as defined by the searchDomain and searchMode parameters.

Parameters
searchDomainEither the search radius or the number of desired closest points, as defined by the searchMethod parameter.
searchMethodDefines if searchDomain is a radius or the number of closest points
srcSpatialIndexThe spatial index used to find the nearest mesh nodes. Must implement the "nearestNode" capability.
srcNodeAccessorThe accessor object giving access to the source node attribute that will be interpolated. The accessor unit defines the interpolation result unit.
dstMeshThe destination mesh
dstNodeAccessorThe accessor object giving access to the node attribute where the results will be written.
solverThe solver used to get the spline radial coefficients
loggerThe logger object used to emit error messages
Returns
Returns false if the interpolation could not be performed (solver error, for example).

◆ toGaussInterpolation()

template<class Interpolator , class SrcAcT >
static bool GmMeshPointCloudInterpolator::toGaussInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const SrcAcT * srcAccessor,
const GmCellGroupSet * dstGroup,
bool activeOnly,
GmGaussAccessor * dstGaussAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger )
static

Helper function for xxxToGaussInterpolation() functions.

Construtor

The function that will be called for each parallel task

◆ toGaussMInterpolation()

template<class Interpolator , class SrcAcT >
static bool GmMeshPointCloudInterpolator::toGaussMInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const QVector< const SrcAcT * > & srcAccessors,
const GmCellGroupSet * dstGroup,
bool activeOnly,
const QVector< GmGaussAccessor * > & dstGaussAccessors,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger )
static

Helper function for xxxToGaussMInterpolation() functions.

Construtor

The function that will be called for each parallel task

◆ toNodeInterpolation()

template<class Interpolator , class SrcAcT >
static bool GmMeshPointCloudInterpolator::toNodeInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const SrcAcT * srcAccessor,
const GmNodeSet * dstNodeSet,
GmValueAccessor * dstNodeAccessor,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger,
bool useNan = false )
static

Helper function for xxxToNodeInterpolation() functions.

Construtor

The function that will be called for each parallel task

◆ toNodeMInterpolation()

template<class Interpolator , class SrcAcT >
bool GmMeshPointCloudInterpolator::toNodeMInterpolation ( GmInterpolatorType type,
QVariant typeParam,
double searchDomain,
GmPointCloudSearchDomain searchMode,
const GmSpatialIndex * srcSpatialIndex,
const QVector< const SrcAcT * > & srcAccessors,
const GmNodeSet * dstNodeSet,
const QVector< GmValueAccessor * > & dstNodeAccessors,
const GmDiscontinuitySet * ds,
GmTaskManager * tm,
const GmLogCategory & logger,
bool useNan )

Helper function for xxxToNodeMInterpolation() functions.

Construtor

The function that will be called for each parallel task