X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingCurveLinearMesh.cxx;h=c265d7e5f8f5b4dce229cef0507601c9c6113e72;hb=e4063d87dbb8dad309dc1880af096d521934cf24;hp=92c9c96d486df92f9db61c03b248f816b0073c67;hpb=bd238ae917aa20ba3fe2f7569883d619b7e4f7a9;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx b/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx old mode 100644 new mode 100755 index 92c9c96d4..c265d7e5f --- a/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx +++ b/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D +// Copyright (C) 2007-2020 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -16,7 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// Author : Anthony Geay (CEA/DEN) +// Author : Anthony Geay (EDF R&D) #include "MEDCouplingCurveLinearMesh.hxx" #include "MEDCouplingPointSet.hxx" @@ -37,9 +37,9 @@ MEDCouplingCurveLinearMesh::MEDCouplingCurveLinearMesh():_coords(0),_structure(0 { } -MEDCouplingCurveLinearMesh::MEDCouplingCurveLinearMesh(const MEDCouplingCurveLinearMesh& other, bool deepCopy):MEDCouplingStructuredMesh(other,deepCopy),_structure(other._structure) +MEDCouplingCurveLinearMesh::MEDCouplingCurveLinearMesh(const MEDCouplingCurveLinearMesh& other, bool deepCpy):MEDCouplingStructuredMesh(other,deepCpy),_structure(other._structure) { - if(deepCopy) + if(deepCpy) { if((const DataArrayDouble *)other._coords) _coords=other._coords->deepCopy(); @@ -83,7 +83,7 @@ void MEDCouplingCurveLinearMesh::updateTime() const std::size_t MEDCouplingCurveLinearMesh::getHeapMemorySizeWithoutChildren() const { std::size_t ret(MEDCouplingStructuredMesh::getHeapMemorySizeWithoutChildren()); - ret+=_structure.capacity()*sizeof(int); + ret+=_structure.capacity()*sizeof(mcIdType); return ret; } @@ -159,7 +159,7 @@ bool MEDCouplingCurveLinearMesh::isEqualWithoutConsideringStr(const MEDCouplingM } void MEDCouplingCurveLinearMesh::checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const + DataArrayIdType *&cellCor, DataArrayIdType *&nodeCor) const { if(!isEqualWithoutConsideringStr(other,prec)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkDeepEquivalWith : Meshes are not the same !"); @@ -170,7 +170,7 @@ void MEDCouplingCurveLinearMesh::checkDeepEquivalWith(const MEDCouplingMesh *oth * The user intend that the nodes are the same, so by construction of MEDCoupling::MEDCouplingCurveLinearMesh, \a this and \a other are the same ! */ void MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor) const + DataArrayIdType *&cellCor) const { if(!isEqualWithoutConsideringStr(other,prec)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith : Meshes are not the same !"); @@ -178,10 +178,11 @@ void MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith(const MEDCoupli void MEDCouplingCurveLinearMesh::checkConsistencyLight() const { - std::size_t sz=_structure.size(),i=0,nbOfNodes=1; + std::size_t sz=_structure.size(),i=0; + mcIdType nbOfNodes=1; if(sz<1) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkConsistencyLight : structure should have a lgth of size 1 at least !"); - for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++,i++) + for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++,i++) { if((*it)<1) { std::ostringstream oss; oss << "MEDCouplingCurveLinearMesh::checkConsistencyLight : At pos #" << i << " of structure value is " << *it << "should be >= 1 !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); } @@ -193,7 +194,7 @@ void MEDCouplingCurveLinearMesh::checkConsistencyLight() const throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkConsistencyLight : the array is not allocated !"); if(_coords->getNumberOfComponents()<1) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkConsistencyLight : the array should have >= 1 components !"); - if(_coords->getNumberOfTuples()!=(int)nbOfNodes) + if(_coords->getNumberOfTuples()!=nbOfNodes) { std::ostringstream oss; oss << "MEDCouplingCurveLinearMesh::checkConsistencyLight : structure said that number of nodes should be equal to " << nbOfNodes << " but number of tuples in array is equal to " << _coords->getNumberOfTuples() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -205,19 +206,19 @@ void MEDCouplingCurveLinearMesh::checkConsistency(double eps) const checkConsistencyLight(); } -int MEDCouplingCurveLinearMesh::getNumberOfCells() const +mcIdType MEDCouplingCurveLinearMesh::getNumberOfCells() const { checkConsistencyLight(); return MEDCouplingStructuredMesh::getNumberOfCells(); } -int MEDCouplingCurveLinearMesh::getNumberOfNodes() const +mcIdType MEDCouplingCurveLinearMesh::getNumberOfNodes() const { checkConsistencyLight(); return MEDCouplingStructuredMesh::getNumberOfNodes(); } -void MEDCouplingCurveLinearMesh::getNodeGridStructure(int *res) const +void MEDCouplingCurveLinearMesh::getNodeGridStructure(mcIdType *res) const { std::copy(_structure.begin(),_structure.end(),res); } @@ -232,14 +233,14 @@ int MEDCouplingCurveLinearMesh::getSpaceDimension() const { if(!((const DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getSpaceDimension : no array set ! impossible to deduce a space dimension !"); - return _coords->getNumberOfComponents(); + return int(_coords->getNumberOfComponents()); } -void MEDCouplingCurveLinearMesh::getCoordinatesOfNode(int nodeId, std::vector& coo) const +void MEDCouplingCurveLinearMesh::getCoordinatesOfNode(mcIdType nodeId, std::vector& coo) const { if(!((const DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCoordinatesOfNode : Coordinates not set !"); - int nbOfCompo=_coords->getNumberOfComponents(); + std::size_t nbOfCompo=_coords->getNumberOfComponents(); if(nodeId>=0 && nodeId<_coords->getNumberOfTuples()) coo.insert(coo.end(),_coords->begin()+nodeId*nbOfCompo,_coords->begin()+(nodeId+1)*nbOfCompo); else @@ -255,7 +256,7 @@ std::string MEDCouplingCurveLinearMesh::simpleRepr() const double tt=getTime(tmpp1,tmpp2); ret << "Time attached to the mesh [unit] : " << tt << " [" << getTimeUnit() << "]\n"; ret << "Iteration : " << tmpp1 << " Order : " << tmpp2 << "\n"; - ret << "The nodal stucture of curve linear mesh is : ["; + ret << "The nodal structure of curve linear mesh is : ["; std::copy(_structure.begin(),_structure.end(),std::ostream_iterator(ret,",")); ret << "]\n"; ret << "The coords array is this : "; if((const DataArrayDouble *)_coords) @@ -270,6 +271,11 @@ std::string MEDCouplingCurveLinearMesh::advancedRepr() const return simpleRepr(); } +const DataArrayDouble *MEDCouplingCurveLinearMesh::getDirectAccessOfCoordsArrIfInStructure() const +{ + return _coords; +} + DataArrayDouble *MEDCouplingCurveLinearMesh::getCoords() { return _coords; @@ -291,7 +297,7 @@ void MEDCouplingCurveLinearMesh::setCoords(const DataArrayDouble *coords) } } -void MEDCouplingCurveLinearMesh::setNodeGridStructure(const int *gridStructBg, const int *gridStructEnd) +void MEDCouplingCurveLinearMesh::setNodeGridStructure(const mcIdType *gridStructBg, const mcIdType *gridStructEnd) { std::size_t sz=std::distance(gridStructBg,gridStructEnd); if(sz>=1 && sz<=3) @@ -306,25 +312,25 @@ void MEDCouplingCurveLinearMesh::setNodeGridStructure(const int *gridStructBg, c } } -std::vector MEDCouplingCurveLinearMesh::getNodeGridStructure() const +std::vector MEDCouplingCurveLinearMesh::getNodeGridStructure() const { return _structure; } -MEDCouplingStructuredMesh *MEDCouplingCurveLinearMesh::buildStructuredSubPart(const std::vector< std::pair >& cellPart) const +MEDCouplingStructuredMesh *MEDCouplingCurveLinearMesh::buildStructuredSubPart(const std::vector< std::pair >& cellPart) const { checkConsistencyLight(); int dim(getSpaceDimension()); - std::vector dims(getMeshDimension()); - if(dim!=(int)cellPart.size()) + std::vector dims(getMeshDimension()); + if(dim!=ToIdType(cellPart.size())) { std::ostringstream oss; oss << "MEDCouplingCurveLinearMesh::buildStructuredSubPart : the space dimension is " << dim << " and cell part size is " << cellPart.size() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); } - std::vector< std::pair > nodePartFormat(cellPart); - for(std::vector< std::pair >::iterator it=nodePartFormat.begin();it!=nodePartFormat.end();it++) + std::vector< std::pair > nodePartFormat(cellPart); + for(std::vector< std::pair >::iterator it=nodePartFormat.begin();it!=nodePartFormat.end();it++) (*it).second++; - MCAuto tmp1(BuildExplicitIdsFrom(getNodeGridStructure(),nodePartFormat)); + MCAuto tmp1(BuildExplicitIdsFrom(getNodeGridStructure(),nodePartFormat)); MCAuto ret(dynamic_cast(deepCopy())); const DataArrayDouble *coo(ret->getCoords()); if(coo) @@ -370,12 +376,13 @@ MEDCouplingFieldDouble *MEDCouplingCurveLinearMesh::getMeasureField(bool isAbs) } /*! - * \param [in,out] f field feeded with good values. + * \param [in] isAbs whether to compute signed or absolute values + * \param [in,out] field field fed with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCouplingFieldDouble *field) const { - int nbnodes=getNumberOfNodes(); + mcIdType nbnodes=getNumberOfNodes(); int spaceDim=getSpaceDimension(); MCAuto arr=DataArrayDouble::New(); field->setArray(arr); if(nbnodes==0) @@ -396,12 +403,13 @@ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCoupling } /*! - * \param [in,out] f field feeded with good values. + * \param [in] isAbs whether to compute signed or absolute values + * \param [in,out] field field fed with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCouplingFieldDouble *field) const { - int nbcells=getNumberOfCells(); + mcIdType nbcells=getNumberOfCells(); int spaceDim=getSpaceDimension(); if(spaceDim!=2 && spaceDim!=3) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2 : with meshDim 2 only space dimension 2 and 3 are possible !"); @@ -409,25 +417,26 @@ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCoupling arr->alloc(nbcells,1); double *pt=arr->getPointer(); const double *coords=_coords->begin(); - int nX=_structure[0]-1; - int conn[4]; - for(int i=0;i(INTERP_KERNEL::NORM_QUAD4,conn,4,coords,spaceDim); + *pt=INTERP_KERNEL::computeVolSurfOfCell2(INTERP_KERNEL::NORM_QUAD4,conn,4,coords,spaceDim); } if(isAbs) arr->abs(); } /*! - * \param [in,out] f field feeded with good values. + * \param [in] isAbs whether to compute signed or absolute values + * \param [in,out] field field fed with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3(bool isAbs, MEDCouplingFieldDouble *field) const { - int nbcells=getNumberOfCells(); + mcIdType nbcells=getNumberOfCells(); int spaceDim=getSpaceDimension(); if(spaceDim!=3) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3 : with meshDim 3 only space dimension 3 is possible !"); @@ -435,17 +444,17 @@ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3(bool isAbs, MEDCoupling arr->alloc(nbcells,1); double *pt=arr->getPointer(); const double *coords=_coords->begin(); - int nX=_structure[0]-1,nY=(_structure[0]-1)*(_structure[1]-1); - int nY1=_structure[0]*_structure[1]; - int conn[8]; - for(int i=0;i(INTERP_KERNEL::NORM_HEXA8,conn,8,coords,3); + *pt=INTERP_KERNEL::computeVolSurfOfCell2(INTERP_KERNEL::NORM_HEXA8,conn,8,coords,3); } if(isAbs) arr->abs(); @@ -465,10 +474,10 @@ MEDCouplingFieldDouble *MEDCouplingCurveLinearMesh::buildOrthogonalField() const throw INTERP_KERNEL::Exception("Expected a cmesh with meshDim == 2 !"); MEDCouplingFieldDouble *ret=MEDCouplingFieldDouble::New(ON_CELLS,NO_TIME); DataArrayDouble *array=DataArrayDouble::New(); - int nbOfCells=getNumberOfCells(); + mcIdType nbOfCells=getNumberOfCells(); array->alloc(nbOfCells,3); double *vals=array->getPointer(); - for(int i=0;isetArray(array); array->decrRef(); @@ -486,31 +495,31 @@ namespace MEDCoupling public: static const int MY_SPACEDIM=SPACEDIMM; static const int MY_MESHDIM=8; - typedef int MyConnType; + typedef mcIdType MyConnType; static const INTERP_KERNEL::NumberingPolicy My_numPol=INTERP_KERNEL::ALL_C_MODE; // begin // useless, but for windows compilation ... const double* getCoordinatesPtr() const { return 0; } - const int* getConnectivityPtr() const { return 0; } - const int* getConnectivityIndexPtr() const { return 0; } - INTERP_KERNEL::NormalizedCellType getTypeOfElement(int) const { return (INTERP_KERNEL::NormalizedCellType)0; } + const mcIdType* getConnectivityPtr() const { return 0; } + const mcIdType* getConnectivityIndexPtr() const { return 0; } + INTERP_KERNEL::NormalizedCellType getTypeOfElement(mcIdType) const { return (INTERP_KERNEL::NormalizedCellType)0; } // end }; } /// @endcond -int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double eps) const +mcIdType MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double eps) const { checkConsistencyLight(); int spaceDim=getSpaceDimension(); const double *coords=_coords->getConstPointer(); - int nodeId=-1; + mcIdType nodeId=-1; _coords->distanceToTuple(pos,pos+spaceDim,nodeId); if(nodeId<0) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCellContainingPoint : internal problem 1 !"); - int conn[8]; - int nbOfNodes=getNumberOfNodes(); + mcIdType conn[8]; + mcIdType nbOfNodes=getNumberOfNodes(); if(nbOfNodes==1) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCellContainingPoint : No cells in this !"); switch(getMeshDimension()) @@ -531,10 +540,11 @@ int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double return nodeId; } } + break; case 2: if(spaceDim==2) { - int ny=nodeId/_structure[0],nx=nodeId-ny*_structure[0]; + mcIdType ny=nodeId/_structure[0],nx=nodeId-ny*_structure[0]; if(nx>0 && ny>0) { conn[0]=nx-1+_structure[0]*(ny-1); conn[1]=nx-1+_structure[0]*ny; conn[2]=nx+_structure[0]*ny; conn[3]=nx+_structure[0]*(ny-1); @@ -560,12 +570,13 @@ int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double return nx+ny*_structure[0]; } } + break; case 3: { if(spaceDim==3) { - int nY=_structure[0]*_structure[1]; - int nz=nodeId/_structure[1]; int ny=(nodeId-nz*nY)/_structure[0]; int nx=(nodeId-nz*nY)-_structure[0]*ny; + mcIdType nY=_structure[0]*_structure[1]; + mcIdType nz=nodeId/_structure[1]; mcIdType ny=(nodeId-nz*nY)/_structure[0]; mcIdType nx=(nodeId-nz*nY)-_structure[0]*ny; if(nx>0 && ny>0 && nz>0) { conn[0]=nx-1+_structure[0]*(ny-1)+nY*(nz-1); conn[1]=nx-1+_structure[2]*ny+nY*(nz-1); conn[2]=nx+_structure[2]*ny+nY*(nz-1); conn[3]=nx+_structure[0]*(ny-1)+nY*(nz-1); @@ -624,9 +635,17 @@ int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double } } } + break; default: throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCellContainingPoint : mesh dimension managed are 1, 2 or 3 !"); } + return 0; +} + +void MEDCouplingCurveLinearMesh::getCellsContainingPoint(const double *pos, double eps, std::vector& elts) const +{ + mcIdType ret(getCellContainingPoint(pos,eps)); + elts.push_back(ret); } void MEDCouplingCurveLinearMesh::rotate(const double *center, const double *vector, double angle) @@ -634,12 +653,12 @@ void MEDCouplingCurveLinearMesh::rotate(const double *center, const double *vect if(!((DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::rotate : no coordinates set !"); int spaceDim=getSpaceDimension(); - int nbNodes=_coords->getNumberOfTuples(); + mcIdType nbNodes(_coords->getNumberOfTuples()); double *coords=_coords->getPointer(); if(spaceDim==3) - MEDCouplingPointSet::Rotate3DAlg(center,vector,angle,nbNodes,coords); + DataArrayDouble::Rotate3DAlg(center,vector,angle,nbNodes,coords,coords); else if(spaceDim==2) - MEDCouplingPointSet::Rotate2DAlg(center,angle,nbNodes,coords); + DataArrayDouble::Rotate2DAlg(center,angle,nbNodes,coords,coords); else throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::rotate : invalid space dim for rotation must be 2 or 3"); _coords->declareAsNew(); @@ -653,9 +672,9 @@ void MEDCouplingCurveLinearMesh::translate(const double *vector) if(!((DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::translate : no coordinates set !"); double *coords=_coords->getPointer(); - int nbNodes=getNumberOfNodes(); + mcIdType nbNodes=getNumberOfNodes(); int dim=getSpaceDimension(); - for(int i=0; ideclareAsNew(); @@ -669,9 +688,9 @@ void MEDCouplingCurveLinearMesh::scale(const double *point, double factor) if(!((DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::scale : no coordinates set !"); double *coords=_coords->getPointer(); - int nbNodes=_coords->getNumberOfTuples(); - int dim=_coords->getNumberOfComponents(); - for(int i=0;igetNumberOfTuples()); + std::size_t dim(_coords->getNumberOfComponents()); + for(mcIdType i=0;i()); std::transform(coords+i*dim,coords+(i+1)*dim,coords+i*dim,std::bind2nd(std::multiplies(),factor)); @@ -700,7 +719,7 @@ DataArrayDouble *MEDCouplingCurveLinearMesh::computeCellCenterOfMass() const MCAuto ret=DataArrayDouble::New(); int spaceDim=getSpaceDimension(); int meshDim=getMeshDimension(); - int nbOfCells=getNumberOfCells(); + mcIdType nbOfCells=getNumberOfCells(); ret->alloc(nbOfCells,spaceDim); ret->copyStringInfoFrom(*getCoords()); switch(meshDim) @@ -722,56 +741,56 @@ DataArrayDouble *MEDCouplingCurveLinearMesh::computeIsoBarycenterOfNodesPerCell( } /*! - * \param [in,out] bary Barycenter array feeded with good values. + * \param [in,out] bary Barycenter array fed with good values. * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass */ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim3(DataArrayDouble *bary) const { - int nbOfCells=getNumberOfCells(); + mcIdType nbOfCells=getNumberOfCells(); double *ptToFill=bary->getPointer(); const double *coor=_coords->getConstPointer(); if(getSpaceDimension()!=3) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim3 : with meshDim 3 only space dimension 3 is possible !"); - int nX=_structure[0]-1,nY=(_structure[0]-1)*(_structure[1]-1); - int nY1=_structure[0]*_structure[1]; - int conn[8]; - for(int i=0;i(INTERP_KERNEL::NORM_HEXA8,conn,8,coor,3,ptToFill); + INTERP_KERNEL::computeBarycenter2(INTERP_KERNEL::NORM_HEXA8,conn,8,coor,3,ptToFill); ptToFill+=3; } } /*! - * \param [in,out] bary Barycenter array feeded with good values. + * \param [in,out] bary Barycenter array fed with good values. * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass */ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim2(DataArrayDouble *bary) const { - int nbcells=getNumberOfCells(); + mcIdType nbcells=getNumberOfCells(); int spaceDim=getSpaceDimension(); double *ptToFill=bary->getPointer(); const double *coor=_coords->getConstPointer(); if(spaceDim!=2 && spaceDim!=3) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim2 : with meshDim 2 only space dimension 2 and 3 are possible !"); - int nX=_structure[0]-1; - int conn[4]; - for(int i=0;i(INTERP_KERNEL::NORM_QUAD4,conn,4,coor,spaceDim,ptToFill); + INTERP_KERNEL::computeBarycenter2(INTERP_KERNEL::NORM_QUAD4,conn,4,coor,spaceDim,ptToFill); ptToFill+=spaceDim; } } /*! - * \param [in,out] bary Barycenter array feeded with good values. + * \param [in,out] bary Barycenter array fed with good values. * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass */ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim1(DataArrayDouble *bary) const @@ -781,12 +800,12 @@ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim1(DataArrayDouble * std::transform(bary->begin(),bary->end(),bary->getPointer(),std::bind2nd(std::multiplies(),0.5)); } -void MEDCouplingCurveLinearMesh::renumberCells(const int *old2NewBg, bool check) +void MEDCouplingCurveLinearMesh::renumberCells(const mcIdType *old2NewBg, bool check) { - throw INTERP_KERNEL::Exception("Functionnality of renumbering cell not available for CurveLinear Mesh !"); + throw INTERP_KERNEL::Exception("Functionality of renumbering cell not available for CurveLinear Mesh !"); } -void MEDCouplingCurveLinearMesh::getTinySerializationInformation(std::vector& tinyInfoD, std::vector& tinyInfo, std::vector& littleStrings) const +void MEDCouplingCurveLinearMesh::getTinySerializationInformation(std::vector& tinyInfoD, std::vector& tinyInfo, std::vector& littleStrings) const { int it,order; double time=getTime(it,order); @@ -804,10 +823,10 @@ void MEDCouplingCurveLinearMesh::getTinySerializationInformation(std::vector::const_iterator itt=_structure.begin();itt!=_structure.end();itt++) + tinyInfo.push_back(ToIdType(_structure.size())); + for(std::vector::const_iterator itt=_structure.begin();itt!=_structure.end();itt++) tinyInfo.push_back(*itt); - std::vector tinyInfo2; + std::vector tinyInfo2; if((const DataArrayDouble *)_coords) _coords->getTinySerializationIntInformation(tinyInfo2); tinyInfo.insert(tinyInfo.end(),tinyInfo2.begin(),tinyInfo2.end()); @@ -815,21 +834,21 @@ void MEDCouplingCurveLinearMesh::getTinySerializationInformation(std::vector& tinyInfo, DataArrayInt *a1, DataArrayDouble *a2, std::vector& littleStrings) const +void MEDCouplingCurveLinearMesh::resizeForUnserialization(const std::vector& tinyInfo, DataArrayIdType *a1, DataArrayDouble *a2, std::vector& littleStrings) const { a1->alloc(tinyInfo[2],1); - std::vector tinyInfo2(tinyInfo.begin()+3+tinyInfo[2],tinyInfo.end()); + std::vector tinyInfo2(tinyInfo.begin()+3+tinyInfo[2],tinyInfo.end()); a2->resizeForUnserialization(tinyInfo2); } -void MEDCouplingCurveLinearMesh::serialize(DataArrayInt *&a1, DataArrayDouble *&a2) const +void MEDCouplingCurveLinearMesh::serialize(DataArrayIdType *&a1, DataArrayDouble *&a2) const { - a1=DataArrayInt::New(); - a1->alloc((int)_structure.size(),1); - int *ptr=a1->getPointer(); - for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++,ptr++) + a1=DataArrayIdType::New(); + a1->alloc(_structure.size(),1); + mcIdType *ptr=a1->getPointer(); + for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++,ptr++) *ptr=(*it); - int sz=0; + mcIdType sz=0; if((const DataArrayDouble *)_coords) if(_coords->isAllocated()) sz=_coords->getNbOfElems(); @@ -839,21 +858,21 @@ void MEDCouplingCurveLinearMesh::serialize(DataArrayInt *&a1, DataArrayDouble *& std::copy(_coords->begin(),_coords->end(),a2->getPointer()); } -void MEDCouplingCurveLinearMesh::unserialization(const std::vector& tinyInfoD, const std::vector& tinyInfo, const DataArrayInt *a1, DataArrayDouble *a2, +void MEDCouplingCurveLinearMesh::unserialization(const std::vector& tinyInfoD, const std::vector& tinyInfo, const DataArrayIdType *a1, DataArrayDouble *a2, const std::vector& littleStrings) { setName(littleStrings[0]); setDescription(littleStrings[1]); setTimeUnit(littleStrings[2]); - setTime(tinyInfoD[0],tinyInfo[0],tinyInfo[1]); - int sz=tinyInfo[2]; + setTime(tinyInfoD[0],FromIdType(tinyInfo[0]),FromIdType(tinyInfo[1])); + mcIdType sz=tinyInfo[2]; _structure.resize(sz); - for(int i=0;isz+3) + if(ToIdType(tinyInfo.size())>sz+3) { _coords=DataArrayDouble::New(); - std::vector tinyInfo2(tinyInfo.begin()+3+sz,tinyInfo.end()); + std::vector tinyInfo2(tinyInfo.begin()+3+sz,tinyInfo.end()); _coords->resizeForUnserialization(tinyInfo2); std::copy(a2->begin(),a2->end(),_coords->getPointer()); std::vector littleStrings2(littleStrings.begin()+3,littleStrings.end()); @@ -864,11 +883,11 @@ void MEDCouplingCurveLinearMesh::unserialization(const std::vector& tiny void MEDCouplingCurveLinearMesh::writeVTKLL(std::ostream& ofs, const std::string& cellData, const std::string& pointData, DataArrayByte *byteData) const { std::ostringstream extent; - int meshDim=(int)_structure.size(); - if(meshDim<=0 || meshDim>3) + std::size_t meshDim=_structure.size(); + if(meshDim==0 || meshDim>3) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::writeVTKLL : meshDim invalid ! must be in [1,2,3] !"); - for(int i=0;i<3;i++) - { int val=i\n"; ofs << " \n"; ofs << " \n" << pointData << std::endl; @@ -892,11 +911,12 @@ void MEDCouplingCurveLinearMesh::reprQuickOverview(std::ostream& stream) const { stream << "MEDCouplingCurveLinearMesh C++ instance at " << this << ". Name : \"" << getName() << "\"."; stream << " Nodal structure : ["; - for(std::size_t i=0;i<_structure.size();i++) + std::size_t s_size=_structure.size(); + for(std::size_t i=0;iisAllocated()) { stream << std::endl << "Coordinates set but not allocated !"; return ; } - int nbOfCompo(coo->getNumberOfComponents()); - int nbOfCompoExp(-1); + std::size_t nbOfCompo(coo->getNumberOfComponents()); + std::size_t nbOfCompoExp(-1); try { nbOfCompoExp=getSpaceDimension(); } - catch(INTERP_KERNEL::Exception& e) + catch(INTERP_KERNEL::Exception&) { } if(nbOfCompo!=nbOfCompoExp)