#include "MEDCouplingCMesh.hxx"
#include "MEDCouplingMemArray.hxx"
#include "MEDCouplingFieldDouble.hxx"
+#include "MEDCouplingCurveLinearMesh.hxx"
+
+#include "InterpKernelAutoPtr.hxx"
#include <functional>
#include <algorithm>
MEDCouplingCMesh *MEDCouplingCMesh::New(const std::string& meshName)
{
- MEDCouplingCMesh *ret=new MEDCouplingCMesh;
+ MEDCouplingCMesh *ret(new MEDCouplingCMesh);
ret->setName(meshName);
return ret;
}
return new MEDCouplingCMesh(*this,recDeepCpy);
}
+MEDCouplingCurveLinearMesh *MEDCouplingCMesh::buildCurveLinear() const
+{
+ checkCoherency();
+ int dim(getSpaceDimension());
+ MEDCouplingAutoRefCountObjectPtr<MEDCouplingCurveLinearMesh> ret(MEDCouplingCurveLinearMesh::New());
+ ret->MEDCouplingStructuredMesh::operator=(*this);
+ INTERP_KERNEL::AutoPtr<int> ngs(new int[dim]);
+ getNodeGridStructure(ngs);
+ ret->setNodeGridStructure(ngs,ngs+dim);
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> coo(getCoordinatesAndOwner());
+ ret->setCoords(coo);
+ return ret.retn();
+}
+
void MEDCouplingCMesh::updateTime() const
{
if(_x_array)
*/
DataArrayDouble *MEDCouplingCMesh::getCoordinatesAndOwner() const
{
- DataArrayDouble *ret=DataArrayDouble::New();
- int spaceDim=getSpaceDimension();
- int nbNodes=getNumberOfNodes();
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> 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)};
for(int j=0;j<spaceDim;j++)
pt[i*spaceDim+j]=tabsPtr[j][tmp2[j]];
}
- return ret;
+ return ret.retn();
}
/*!