Version: 9.12.0
MEDCoupling::MEDCouplingFieldDiscretizationKriging Class Reference
Inheritance diagram for MEDCoupling::MEDCouplingFieldDiscretizationKriging:
Collaboration diagram for MEDCoupling::MEDCouplingFieldDiscretizationKriging:

Public Member Functions

MCAuto< MEDCouplingFieldDiscretizationaggregate (std::vector< const MEDCouplingFieldDiscretization * > &fds) const override
 
void checkCompatibilityWithNature (NatureOfField nat) const override
 
MEDCouplingFieldDiscretizationclone () const override
 
DataArrayDoublecomputeEvaluationMatrixOnGivenPts (const MEDCouplingMesh *mesh, const double *loc, mcIdType nbOfTargetPoints, mcIdType &nbCols) const
 
DataArrayDoublecomputeInverseMatrix (const MEDCouplingMesh *mesh, mcIdType &isDrift, mcIdType &matSz) const
 
DataArrayDoublecomputeMatrix (const MEDCouplingMesh *mesh, mcIdType &isDrift, mcIdType &matSz) const
 
DataArrayDoublecomputeVectorOfCoefficients (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, mcIdType &isDrift) const
 
std::string getClassName () const override
 
TypeOfField getEnum () const
 
MEDCouplingFieldDoublegetMeasureField (const MEDCouplingMesh *mesh, bool isAbs) const override
 
const char * getRepr () const
 
std::string getStringRepr () const
 
void getValueOn (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, double *res) const override
 
DataArrayDoublegetValueOnMulti (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, mcIdType nbOfPoints) const override
 
bool isEqualIfNotWhy (const MEDCouplingFieldDiscretization *other, double eps, std::string &reason) const override
 
void operateOnDenseMatrix (int spaceDimension, mcIdType nbOfElems, double *matrixPtr) const
 
DataArrayDoubleperformDrift (const DataArrayDouble *matr, const DataArrayDouble *arr, mcIdType &delta) const
 
void reprQuickOverview (std::ostream &stream) const
 
- Public Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretizationOnNodes
MEDCouplingMeshbuildSubMeshData (const MEDCouplingMesh *mesh, const mcIdType *start, const mcIdType *end, DataArrayIdType *&di) const
 
MEDCouplingMeshbuildSubMeshDataRange (const MEDCouplingMesh *mesh, mcIdType beginCellIds, mcIdType endCellIds, mcIdType stepCellIds, mcIdType &beginOut, mcIdType &endOut, mcIdType &stepOut, DataArrayIdType *&di) const
 
void checkCoherencyBetween (const MEDCouplingMesh *mesh, const DataArray *da) const
 
void computeMeshRestrictionFromTupleIds (const MEDCouplingMesh *mesh, const mcIdType *tupleIdsBg, const mcIdType *tupleIdsEnd, DataArrayIdType *&cellRestriction, DataArrayIdType *&trueTupleRestriction) const
 
DataArrayIdType * computeTupleIdsToSelectFromCellIds (const MEDCouplingMesh *mesh, const mcIdType *startCellIds, const mcIdType *endCellIds) const
 
DataArrayDoublegetLocalizationOfDiscValues (const MEDCouplingMesh *mesh) const
 
mcIdType getNumberOfMeshPlaces (const MEDCouplingMesh *mesh) const
 
mcIdType getNumberOfTuples (const MEDCouplingMesh *mesh) const
 
mcIdType getNumberOfTuplesExpectedRegardingCode (const std::vector< mcIdType > &code, const std::vector< const DataArrayIdType * > &idsPerType) const
 
DataArrayIdType * getOffsetArr (const MEDCouplingMesh *mesh) const
 
void getValueOnPos (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, mcIdType i, mcIdType j, mcIdType k, double *res) const
 
void renumberArraysForCell (const MEDCouplingMesh *mesh, const std::vector< DataArray * > &arrays, const mcIdType *old2NewBg, bool check)
 
void renumberValuesOnCells (double epsOnVals, const MEDCouplingMesh *mesh, const mcIdType *old2New, mcIdType newSz, DataArrayDouble *arr) const
 
void renumberValuesOnCellsR (const MEDCouplingMesh *mesh, const mcIdType *new2old, mcIdType newSz, DataArrayDouble *arr) const
 
void renumberValuesOnNodes (double epsOnVals, const mcIdType *old2New, mcIdType newNbOfNodes, DataArrayDouble *arr) const
 
- Public Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
virtual void checkForUnserialization (const std::vector< mcIdType > &tinyInfo, const DataArrayIdType *arr)
 
virtual void clearGaussLocalizations ()
 
virtual MEDCouplingFieldDiscretizationclonePart (const mcIdType *startCellIds, const mcIdType *endCellIds) const
 
virtual MEDCouplingFieldDiscretizationclonePartRange (mcIdType beginCellIds, mcIdType endCellIds, mcIdType stepCellIds) const
 
virtual MEDCouplingFieldDiscretizationdeepCopy () const
 
virtual void finishUnserialization (const std::vector< double > &tinyInfo)
 
virtual void getCellIdsHavingGaussLocalization (mcIdType locId, std::vector< mcIdType > &cellIds) const
 
std::vector< const BigMemoryObject * > getDirectChildrenWithNull () const
 
virtual MEDCouplingGaussLocalizationgetGaussLocalization (mcIdType locId)
 
virtual const MEDCouplingGaussLocalizationgetGaussLocalization (mcIdType locId) const
 
virtual mcIdType getGaussLocalizationIdOfOneCell (mcIdType cellId) const
 
virtual mcIdType getGaussLocalizationIdOfOneType (INTERP_KERNEL::NormalizedCellType type) const
 
virtual std::set< mcIdType > getGaussLocalizationIdsOfOneType (INTERP_KERNEL::NormalizedCellType type) const
 
std::size_t getHeapMemorySizeWithoutChildren () const
 
virtual double getIJK (const MEDCouplingMesh *mesh, const DataArrayDouble *da, mcIdType cellId, mcIdType nodeIdInCell, int compoId) const
 
virtual mcIdType getNbOfGaussLocalization () const
 
double getPrecision () const
 
virtual void getSerializationIntArray (DataArrayIdType *&arr) const
 
virtual void getTinySerializationDbleInformation (std::vector< double > &tinyInfo) const
 
virtual void getTinySerializationIntInformation (std::vector< mcIdType > &tinyInfo) const
 
virtual void integral (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, bool isWAbs, double *res) const
 
virtual bool isEqual (const MEDCouplingFieldDiscretization *other, double eps) const
 
virtual bool isEqualWithoutConsideringStr (const MEDCouplingFieldDiscretization *other, double eps) const
 
virtual void normL1 (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, double *res) const
 
virtual void normL2 (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, double *res) const
 
virtual void renumberCells (const mcIdType *old2NewBg, bool check=true)
 
virtual void resizeForUnserialization (const std::vector< mcIdType > &tinyInfo, DataArrayIdType *&arr)
 
virtual void setGaussLocalizationOnCells (const MEDCouplingMesh *m, const mcIdType *begin, const mcIdType *end, const std::vector< double > &refCoo, const std::vector< double > &gsCoo, const std::vector< double > &wg)
 
virtual void setGaussLocalizationOnType (const MEDCouplingMesh *m, INTERP_KERNEL::NormalizedCellType type, const std::vector< double > &refCoo, const std::vector< double > &gsCoo, const std::vector< double > &wg)
 
void setPrecision (double val)
 
void updateTime () const
 
virtual ~MEDCouplingFieldDiscretization ()
 
- Public Member Functions inherited from MEDCoupling::RefCountObjectOnly
bool decrRef () const
 
int getRCValue () const
 
void incrRef () const
 
RefCountObjectOnlyoperator= (const RefCountObjectOnly &other)
 
- Public Member Functions inherited from MEDCoupling::BigMemoryObject
std::string debugHeapMemorySize () const
 
std::vector< const BigMemoryObject * > getAllTheProgeny () const
 
std::vector< const BigMemoryObject * > getDirectChildren () const
 
std::size_t getHeapMemorySize () const
 
std::string getHeapMemorySizeStr () const
 
bool isObjectInTheProgeny (const BigMemoryObject *obj) const
 
virtual ~BigMemoryObject ()
 
- Public Member Functions inherited from MEDCoupling::TimeLabel
void declareAsNew () const
 
std::size_t getTimeOfThis () const
 
TimeLabeloperator= (const TimeLabel &other)
 
 TimeLabel (const TimeLabel &other)=default
 

Static Public Member Functions

static void OperateOnDenseMatrixH2Ln (mcIdType nbOfElems, double *matrixPtr)
 
static void OperateOnDenseMatrixH3 (mcIdType nbOfElems, double *matrixPtr)
 
static DataArrayDoublePerformDriftOfVec (const DataArrayDouble *arr, mcIdType isDrift)
 
static DataArrayDoublePerformDriftRect (const DataArrayDouble *matr, const DataArrayDouble *arr, mcIdType &delta)
 
- Static Public Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
static TypeOfField GetTypeOfFieldFromStringRepr (const std::string &repr)
 
static std::string GetTypeOfFieldRepr (TypeOfField type)
 
static MEDCouplingFieldDiscretizationNew (TypeOfField type)
 
- Static Public Member Functions inherited from MEDCoupling::BigMemoryObject
static std::size_t GetHeapMemorySizeOfObjs (const std::vector< const BigMemoryObject * > &objs)
 

Static Public Attributes

static const char REPR [] ="KRIGING"
 
static constexpr TypeOfField TYPE = ON_NODES_KR
 

Additional Inherited Members

- Protected Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
 MEDCouplingFieldDiscretization ()
 
- Protected Member Functions inherited from MEDCoupling::RefCountObject
 RefCountObject ()
 
 RefCountObject (const RefCountObject &other)
 
virtual ~RefCountObject ()
 
- Protected Member Functions inherited from MEDCoupling::RefCountObjectOnly
 RefCountObjectOnly ()
 
 RefCountObjectOnly (const RefCountObjectOnly &other)
 
virtual ~RefCountObjectOnly ()
 
- Protected Member Functions inherited from MEDCoupling::TimeLabel
void forceTimeOfThis (const TimeLabel &other) const
 
 TimeLabel ()
 
void updateTimeWith (const TimeLabel &other) const
 
virtual ~TimeLabel ()
 
- Static Protected Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
template<class FIELD_DISC >
static MCAuto< MEDCouplingFieldDiscretizationEasyAggregate (std::vector< const MEDCouplingFieldDiscretization * > &fds)
 
static void RenumberEntitiesFromN2OArr (const mcIdType *new2OldPtr, mcIdType new2OldSz, DataArrayDouble *arr, const std::string &msg)
 
static void RenumberEntitiesFromO2NArr (double epsOnVals, const mcIdType *old2NewPtr, mcIdType newNbOfEntity, DataArrayDouble *arr, const std::string &msg)
 
- Protected Attributes inherited from MEDCoupling::MEDCouplingFieldDiscretization
double _precision
 
- Static Protected Attributes inherited from MEDCoupling::MEDCouplingFieldDiscretization
static const double DFLT_PRECISION =1.e-12
 

Member Function Documentation

◆ getEnum()

TypeOfField MEDCouplingFieldDiscretizationKriging::getEnum ( ) const
virtual

◆ getClassName()

std::string MEDCoupling::MEDCouplingFieldDiscretizationKriging::getClassName ( ) const
overridevirtual

Reimplemented from MEDCoupling::BigMemoryObject.

◆ getRepr()

const char * MEDCouplingFieldDiscretizationKriging::getRepr ( ) const
virtual

◆ clone()

MEDCouplingFieldDiscretization * MEDCouplingFieldDiscretizationKriging::clone ( ) const
overridevirtual

This method is simply called by MEDCouplingFieldDiscretization::deepCopy. It performs the deep copy of this.

See also
MEDCouplingFieldDiscretization::deepCopy.

Implements MEDCoupling::MEDCouplingFieldDiscretization.

◆ getStringRepr()

std::string MEDCouplingFieldDiscretizationKriging::getStringRepr ( ) const
virtual

◆ checkCompatibilityWithNature()

void MEDCouplingFieldDiscretizationKriging::checkCompatibilityWithNature ( NatureOfField  nat) const
overridevirtual

◆ isEqualIfNotWhy()

bool MEDCouplingFieldDiscretizationKriging::isEqualIfNotWhy ( const MEDCouplingFieldDiscretization other,
double  eps,
std::string &  reason 
) const
overridevirtual

◆ getMeasureField()

MEDCouplingFieldDouble * MEDCouplingFieldDiscretizationKriging::getMeasureField ( const MEDCouplingMesh mesh,
bool  isAbs 
) const
overridevirtual

◆ getValueOn()

void MEDCouplingFieldDiscretizationKriging::getValueOn ( const DataArrayDouble arr,
const MEDCouplingMesh mesh,
const double *  loc,
double *  res 
) const
overridevirtual

◆ getValueOnMulti()

◆ reprQuickOverview()

void MEDCouplingFieldDiscretizationKriging::reprQuickOverview ( std::ostream &  stream) const
virtual

◆ aggregate()

MCAuto< MEDCouplingFieldDiscretization > MEDCouplingFieldDiscretizationKriging::aggregate ( std::vector< const MEDCouplingFieldDiscretization * > &  fds) const
overridevirtual

◆ computeEvaluationMatrixOnGivenPts()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::computeEvaluationMatrixOnGivenPts ( const MEDCouplingMesh mesh,
const double *  loc,
mcIdType  nbOfTargetPoints,
mcIdType &  nbCols 
) const

Returns the matrix of size nbRows = nbOfTargetPoints and nbCols = nbCols. This matrix is useful if

Returns
the new result matrix to be deallocated by the caller.

References computeInverseMatrix(), MEDCoupling::CPP_DEALLOC, MEDCoupling::MEDCouplingFieldDiscretizationOnNodes::getLocalizationOfDiscValues(), MEDCoupling::MEDCouplingMesh::getSpaceDimension(), MEDCoupling::DataArrayDouble::New(), and operateOnDenseMatrix().

Referenced by getValueOnMulti().

◆ computeInverseMatrix()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::computeInverseMatrix ( const MEDCouplingMesh mesh,
mcIdType &  isDrift,
mcIdType &  matSz 
) const

This method returns the square matrix of size matSz that is the inverse of the kriging matrix. The returned matrix can returned all the coeffs of kriging when multiplied by the vector of values attached to each point.

Parameters
[out]isDriftreturn if drift coefficients are present in the returned vector of coefficients. If different from 0 there is presence of drift coefficients.
[out]matSzthe size of returned square matrix
Returns
the new result matrix to be deallocated by the caller.
See also
computeMatrix

References computeMatrix(), and MEDCoupling::DataArrayDouble::New().

Referenced by computeEvaluationMatrixOnGivenPts(), and computeVectorOfCoefficients().

◆ computeMatrix()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::computeMatrix ( const MEDCouplingMesh mesh,
mcIdType &  isDrift,
mcIdType &  matSz 
) const

This method computes the kriging matrix.

Returns
the new result matrix to be deallocated by the caller.
See also
computeInverseMatrix

References MEDCoupling::MEDCouplingFieldDiscretizationOnNodes::getLocalizationOfDiscValues(), MEDCoupling::MEDCouplingMesh::getSpaceDimension(), operateOnDenseMatrix(), and performDrift().

Referenced by computeInverseMatrix().

◆ computeVectorOfCoefficients()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::computeVectorOfCoefficients ( const MEDCouplingMesh mesh,
const DataArrayDouble arr,
mcIdType &  isDrift 
) const

This method computes coefficients to apply to each representing points of mesh, that is to say the nodes of mesh given a field array arr whose number of tuples should be equal to the number of representing points in mesh.

Parameters
[in]meshis the sources of nodes on which kriging will be done regarding the parameters and the value of this->getSpaceDimension()
[in]arrinput field DataArrayDouble whose number of tuples must be equal to the number of nodes in mesh
[out]isDriftreturn if drift coefficients are present in the returned vector of coefficients. If different from 0 there is presence of drift coefficients. Whatever the value of isDrift the number of tuples of returned DataArrayDouble will be equal to arr->getNumberOfTuples() + isDrift.
Returns
a newly allocated array containing coefficients including or not drift coefficient at the end depending the value of isDrift parameter.

References computeInverseMatrix(), MEDCoupling::DataArrayDouble::New(), and PerformDriftOfVec().

◆ operateOnDenseMatrix()

void MEDCouplingFieldDiscretizationKriging::operateOnDenseMatrix ( int  spaceDimension,
mcIdType  nbOfElems,
double *  matrixPtr 
) const

Apply \f f(x) on each element x in matrixPtr. matrixPtr is expected to be a dense matrix represented by a chunck of memory of size at least equal to nbOfElems.

Parameters
[in]spaceDimensionspace dimension of the input mesh on which the Kriging has to be performed
[in]nbOfElemsis the result of the product of nb of rows and the nb of columns of matrix matrixPtr
[in,out]matrixPtris the dense matrix whose on each values the operation will be applied

References OperateOnDenseMatrixH2Ln(), and OperateOnDenseMatrixH3().

Referenced by computeEvaluationMatrixOnGivenPts(), and computeMatrix().

◆ performDrift()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::performDrift ( const DataArrayDouble matr,
const DataArrayDouble arr,
mcIdType &  delta 
) const

Starting from a square matrix matr, this method returns a newly allocated dense square matrix whose matr is included in returned matrix in the top left corner, and in the remaining returned matrix the parameters to take into account about the kriging drift. For the moment only linear srift is implemented.

Parameters
[in]arrthe position of points were input mesh geometry is considered for Kriging
[in]matrinput matrix whose drift part will be added
[out]deltathe difference between the size of the output matrix and the input matrix matr.
Returns
a newly allocated matrix bigger than input matrix matr.
See also
MEDCouplingFieldDiscretizationKriging::PerformDriftRect

References MEDCoupling::DataArrayTemplate< T >::getConstPointer(), MEDCoupling::DataArray::getNumberOfComponents(), MEDCoupling::DataArrayTemplate< T >::getNumberOfTuples(), MEDCoupling::DataArrayDouble::New(), and MEDCoupling::DataArrayTemplateClassic< T >::toNoInterlace().

Referenced by computeMatrix().

◆ OperateOnDenseMatrixH3()

void MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH3 ( mcIdType  nbOfElems,
double *  matrixPtr 
)
static

Referenced by operateOnDenseMatrix().

◆ OperateOnDenseMatrixH2Ln()

void MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH2Ln ( mcIdType  nbOfElems,
double *  matrixPtr 
)
static

Referenced by operateOnDenseMatrix().

◆ PerformDriftRect()

DataArrayDouble * MEDCouplingFieldDiscretizationKriging::PerformDriftRect ( const DataArrayDouble matr,
const DataArrayDouble arr,
mcIdType &  delta 
)
static

Performs a drift to the rectangular input matrix matr. This method generate a dense matrix starting from an input dense matrix matr and input array arr.

Parameters
[in]matrThe rectangular dense matrix (with only one component). The number of rows of matr must be equal to the number of tuples of arr
[in]arrThe array of coords to be appended in the input dense matrix matr. Typically arr is an array of coordinates.
[out]deltathe delta of number of columns between returned dense matrix and input dense matrix matr. delta is equal to number of components of arr + 1.
See also
performDrift

References MEDCoupling::DataArrayTemplate< T >::begin(), MEDCoupling::DataArray::getNumberOfComponents(), MEDCoupling::DataArrayTemplate< T >::getNumberOfTuples(), MEDCoupling::DataArrayTemplate< T >::isAllocated(), and MEDCoupling::DataArrayDouble::New().

◆ PerformDriftOfVec()

Member Data Documentation

◆ REPR

◆ TYPE