From: geay Date: Thu, 24 Apr 2014 13:36:06 +0000 (+0200) Subject: open kriging API X-Git-Tag: V7_4_0rc1~2^2~10 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=9e73824b036e10ad4f7346b0a4e0457278db4de8;p=tools%2Fmedcoupling.git open kriging API --- diff --git a/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx b/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx index 08aa48cdf..83720b7ab 100644 --- a/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx +++ b/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx @@ -2877,21 +2877,12 @@ void MEDCouplingFieldDiscretizationKriging::operateOnDenseMatrix(int spaceDimens { case 1: { - for(int i=0;iisAllocated() || matr->getNumberOfComponents()!=1) + throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationKriging::PerformDriftRect : invalid input dense matrix ! Must be allocated not NULL and with exactly one component !"); + if(!arr || !arr->isAllocated()) + throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationKriging::PerformDriftRect : invalid input array of coordiantes ! Must be allocated and not NULL !"); + int spaceDimension(arr->getNumberOfComponents()),nbOfPts(arr->getNumberOfTuples()),nbOfEltInMatrx(matr->getNumberOfTuples()); + delta=spaceDimension+1; + int nbOfCols(nbOfEltInMatrx/nbOfPts); + if(nbOfEltInMatrx%nbOfPts!=0) + throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationKriging::PerformDriftRect : size of input dense matrix and input arrays mismatch ! NbOfElems in matrix % nb of tuples in array must be equal to 0 !"); + MEDCouplingAutoRefCountObjectPtr ret(DataArrayDouble::New()); ret->alloc(nbOfPts*(nbOfCols+delta)); + double *retPtr(ret->getPointer()); + const double *mPtr(matr->begin()),*aPtr(arr->begin()); + for(int i=0;iisAllocated() || myMatrix->getNumberOfComponents()!=1) + throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::operateOnDenseMatrix : invalid input matrix as DataArrayDouble ! Must be allocated with one component !"); + self->operateOnDenseMatrix(spaceDimension,myMatrix->getNumberOfTuples(),myMatrix->getPointer()); + } + + PyObject *performDrift(const DataArrayDouble *matr, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception) + { + int ret1(-1); + DataArrayDouble *ret0(self->performDrift(matr,arr,ret1)); + PyObject *res(PyTuple_New(2)); + PyTuple_SetItem(res,0,SWIG_NewPointerObj((void*)ret0,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble,SWIG_POINTER_OWN | 0)); + PyTuple_SetItem(res,1,PyInt_FromLong(ret1)); + return res; + } + + static PyObject *PerformDriftRect(const DataArrayDouble *matr, const DataArrayDouble *arr) throw(INTERP_KERNEL::Exception) + { + int ret1(-1); + DataArrayDouble *ret0(MEDCouplingFieldDiscretizationKriging::PerformDriftRect(matr,arr,ret1)); + PyObject *res(PyTuple_New(2)); + PyTuple_SetItem(res,0,SWIG_NewPointerObj((void*)ret0,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble,SWIG_POINTER_OWN | 0)); + PyTuple_SetItem(res,1,PyInt_FromLong(ret1)); + return res; + } + + static void OperateOnDenseMatrixH3(DataArrayDouble *myMatrix) throw(INTERP_KERNEL::Exception) + { + if(!myMatrix || !myMatrix->isAllocated() || myMatrix->getNumberOfComponents()!=1) + throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH3 : invalid input matrix as DataArrayDouble ! Must be allocated with one component !"); + MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH3(myMatrix->getNumberOfTuples(),myMatrix->getPointer()); + } + + static void OperateOnDenseMatrixH2Ln(DataArrayDouble *myMatrix) throw(INTERP_KERNEL::Exception) + { + if(!myMatrix || !myMatrix->isAllocated() || myMatrix->getNumberOfComponents()!=1) + throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH2Ln : invalid input matrix as DataArrayDouble ! Must be allocated with one component !"); + MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH2Ln(myMatrix->getNumberOfTuples(),myMatrix->getPointer()); + } } }; }