X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingCMesh.cxx;h=c0771916e2d7f0d28ca359cf91f78b939dbb122e;hb=865eac01b8bdd7a4494afd632f23ac6a1fcc0c88;hp=597b682a6c12476e0d8e0cabfb1467a731c1017a;hpb=61d92c8e43cab2fdf936b02664a657d6c0850cb5;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingCMesh.cxx b/src/MEDCoupling/MEDCouplingCMesh.cxx index 597b682a6..c0771916e 100644 --- a/src/MEDCoupling/MEDCouplingCMesh.cxx +++ b/src/MEDCoupling/MEDCouplingCMesh.cxx @@ -21,6 +21,9 @@ #include "MEDCouplingCMesh.hxx" #include "MEDCouplingMemArray.hxx" #include "MEDCouplingFieldDouble.hxx" +#include "MEDCouplingCurveLinearMesh.hxx" + +#include "InterpKernelAutoPtr.hxx" #include #include @@ -81,7 +84,7 @@ MEDCouplingCMesh *MEDCouplingCMesh::New() MEDCouplingCMesh *MEDCouplingCMesh::New(const std::string& meshName) { - MEDCouplingCMesh *ret=new MEDCouplingCMesh; + MEDCouplingCMesh *ret(new MEDCouplingCMesh); ret->setName(meshName); return ret; } @@ -96,6 +99,20 @@ MEDCouplingCMesh *MEDCouplingCMesh::clone(bool recDeepCpy) const return new MEDCouplingCMesh(*this,recDeepCpy); } +MEDCouplingCurveLinearMesh *MEDCouplingCMesh::buildCurveLinear() const +{ + checkCoherency(); + int dim(getSpaceDimension()); + MEDCouplingAutoRefCountObjectPtr ret(MEDCouplingCurveLinearMesh::New()); + ret->MEDCouplingStructuredMesh::operator=(*this); + INTERP_KERNEL::AutoPtr ngs(new int[dim]); + getNodeGridStructure(ngs); + ret->setNodeGridStructure(ngs,ngs+dim); + MEDCouplingAutoRefCountObjectPtr coo(getCoordinatesAndOwner()); + ret->setCoords(coo); + return ret.retn(); +} + void MEDCouplingCMesh::updateTime() const { if(_x_array) @@ -679,11 +696,10 @@ MEDCouplingMesh *MEDCouplingCMesh::mergeMyselfWith(const MEDCouplingMesh *other) */ DataArrayDouble *MEDCouplingCMesh::getCoordinatesAndOwner() const { - DataArrayDouble *ret=DataArrayDouble::New(); - int spaceDim=getSpaceDimension(); - int nbNodes=getNumberOfNodes(); + MEDCouplingAutoRefCountObjectPtr ret(DataArrayDouble::New()); + int spaceDim(getSpaceDimension()),nbNodes(getNumberOfNodes()); ret->alloc(nbNodes,spaceDim); - double *pt=ret->getPointer(); + double *pt(ret->getPointer()); int tmp[3]; getSplitNodeValues(tmp); const DataArrayDouble *tabs[3]={getCoordsAt(0),getCoordsAt(1),getCoordsAt(2)}; @@ -700,7 +716,7 @@ DataArrayDouble *MEDCouplingCMesh::getCoordinatesAndOwner() const for(int j=0;j