X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingCurveLinearMesh.cxx;h=60ab76f40d4f0af01563998040622c31a7b6a912;hb=d583bbdfd69b88f836ceba1cd62356c80f6aad3b;hp=0bd1deb4948687b9b18d7083adad75c8f3dfd414;hpb=89ffd6be1633e2ab70ac3298a8a10a635a3f4df3;p=modules%2Fmed.git diff --git a/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx b/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx index 0bd1deb49..60ab76f40 100644 --- a/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx +++ b/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2014 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 // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -57,7 +57,7 @@ MEDCouplingCurveLinearMesh *MEDCouplingCurveLinearMesh::New() return new MEDCouplingCurveLinearMesh; } -MEDCouplingCurveLinearMesh *MEDCouplingCurveLinearMesh::New(const char *meshName) +MEDCouplingCurveLinearMesh *MEDCouplingCurveLinearMesh::New(const std::string& meshName) { MEDCouplingCurveLinearMesh *ret=new MEDCouplingCurveLinearMesh; ret->setName(meshName); @@ -87,11 +87,10 @@ std::size_t MEDCouplingCurveLinearMesh::getHeapMemorySizeWithoutChildren() const return ret; } -std::vector MEDCouplingCurveLinearMesh::getDirectChildren() const +std::vector MEDCouplingCurveLinearMesh::getDirectChildrenWithNull() const { std::vector ret; - if((const DataArrayDouble *)_coords) - ret.push_back((const DataArrayDouble *)_coords); + ret.push_back((const DataArrayDouble *)_coords); return ret; } @@ -99,7 +98,7 @@ std::vector MEDCouplingCurveLinearMesh::getDirectChildr * This method copyies all tiny strings from other (name and components name). * @throw if other and this have not same mesh type. */ -void MEDCouplingCurveLinearMesh::copyTinyStringsFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::copyTinyStringsFrom(const MEDCouplingMesh *other) { const MEDCouplingCurveLinearMesh *otherC=dynamic_cast(other); if(!otherC) @@ -109,7 +108,7 @@ void MEDCouplingCurveLinearMesh::copyTinyStringsFrom(const MEDCouplingMesh *othe _coords->copyStringInfoFrom(*otherC->_coords); } -bool MEDCouplingCurveLinearMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, std::string& reason) const throw(INTERP_KERNEL::Exception) +bool MEDCouplingCurveLinearMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, std::string& reason) const { if(!other) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::isEqualIfNotWhy : input other pointer is null !"); @@ -160,7 +159,7 @@ bool MEDCouplingCurveLinearMesh::isEqualWithoutConsideringStr(const MEDCouplingM } void MEDCouplingCurveLinearMesh::checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const throw(INTERP_KERNEL::Exception) + DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const { if(!isEqualWithoutConsideringStr(other,prec)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkDeepEquivalWith : Meshes are not the same !"); @@ -168,17 +167,16 @@ void MEDCouplingCurveLinearMesh::checkDeepEquivalWith(const MEDCouplingMesh *oth /*! * Nothing is done here (except to check that the other is a ParaMEDMEM::MEDCouplingCurveLinearMesh instance too). - * The user intend that the nodes are the same, so by construction of ParaMEDMEM::MEDCouplingCurveLinearMesh, 'this' and 'other' are the same ! + * The user intend that the nodes are the same, so by construction of ParaMEDMEM::MEDCouplingCurveLinearMesh, \a this and \a other are the same ! */ void MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor) const throw(INTERP_KERNEL::Exception) + DataArrayInt *&cellCor) const { - const MEDCouplingCurveLinearMesh *otherC=dynamic_cast(other); - if(!otherC) - throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith : other is NOT a cartesian mesh ! Impossible to check equivalence !"); + if(!isEqualWithoutConsideringStr(other,prec)) + throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::checkDeepEquivalOnSameNodesWith : Meshes are not the same !"); } -void MEDCouplingCurveLinearMesh::checkCoherency() const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::checkCoherency() const { std::size_t sz=_structure.size(),i=0,nbOfNodes=1; if(sz<1) @@ -202,12 +200,12 @@ void MEDCouplingCurveLinearMesh::checkCoherency() const throw(INTERP_KERNEL::Exc } } -void MEDCouplingCurveLinearMesh::checkCoherency1(double eps) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::checkCoherency1(double eps) const { checkCoherency(); } -void MEDCouplingCurveLinearMesh::checkCoherency2(double eps) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::checkCoherency2(double eps) const { checkCoherency1(eps); } @@ -215,43 +213,13 @@ void MEDCouplingCurveLinearMesh::checkCoherency2(double eps) const throw(INTERP_ int MEDCouplingCurveLinearMesh::getNumberOfCells() const { checkCoherency(); - std::size_t nbOfCells=1,i=0; - for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++,i++) - nbOfCells*=(*it)-1; - return (int)nbOfCells; + return MEDCouplingStructuredMesh::getNumberOfCells(); } int MEDCouplingCurveLinearMesh::getNumberOfNodes() const { checkCoherency(); - std::size_t nbOfNodes=1; - for(std::vector::const_iterator it=_structure.begin();it!=_structure.end();it++) - nbOfNodes*=(*it); - return (int)nbOfNodes; -} - -void MEDCouplingCurveLinearMesh::getSplitCellValues(int *res) const -{ - int meshDim=getMeshDimension(); - for(int l=0;lgetNumberOfComponents(); } -int MEDCouplingCurveLinearMesh::getMeshDimension() const -{ - return (int)_structure.size(); -} - -void MEDCouplingCurveLinearMesh::getCoordinatesOfNode(int nodeId, std::vector& coo) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::getCoordinatesOfNode(int nodeId, std::vector& coo) const { if(!((const DataArrayDouble *)_coords)) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCoordinatesOfNode : Coordinates not set !"); @@ -306,17 +275,17 @@ std::string MEDCouplingCurveLinearMesh::advancedRepr() const return simpleRepr(); } -DataArrayDouble *MEDCouplingCurveLinearMesh::getCoords() throw(INTERP_KERNEL::Exception) +DataArrayDouble *MEDCouplingCurveLinearMesh::getCoords() { return _coords; } -const DataArrayDouble *MEDCouplingCurveLinearMesh::getCoords() const throw(INTERP_KERNEL::Exception) +const DataArrayDouble *MEDCouplingCurveLinearMesh::getCoords() const { return _coords; } -void MEDCouplingCurveLinearMesh::setCoords(const DataArrayDouble *coords) throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::setCoords(const DataArrayDouble *coords) { if(coords!=(const DataArrayDouble *)_coords) { @@ -327,7 +296,7 @@ void MEDCouplingCurveLinearMesh::setCoords(const DataArrayDouble *coords) throw( } } -void MEDCouplingCurveLinearMesh::setNodeGridStructure(const int *gridStructBg, const int *gridStructEnd) throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::setNodeGridStructure(const int *gridStructBg, const int *gridStructEnd) { std::size_t sz=std::distance(gridStructBg,gridStructEnd); if(sz>=1 && sz<=3) @@ -342,19 +311,19 @@ void MEDCouplingCurveLinearMesh::setNodeGridStructure(const int *gridStructBg, c } } -std::vector MEDCouplingCurveLinearMesh::getNodeGridStructure() const throw(INTERP_KERNEL::Exception) +std::vector MEDCouplingCurveLinearMesh::getNodeGridStructure() const { return _structure; } -MEDCouplingStructuredMesh *MEDCouplingCurveLinearMesh::buildStructuredSubPart(const std::vector< std::pair >& cellPart) const throw(INTERP_KERNEL::Exception) +MEDCouplingStructuredMesh *MEDCouplingCurveLinearMesh::buildStructuredSubPart(const std::vector< std::pair >& cellPart) const { checkCoherency(); - int dim(getMeshDimension()); + int dim(getSpaceDimension()); std::vector dims(getMeshDimension()); if(dim!=(int)cellPart.size()) { - std::ostringstream oss; oss << "MEDCouplingCurveLinearMesh::buildStructuredSubPart : the mesh dimension is " << dim << " and cell part size is " << 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); @@ -391,9 +360,9 @@ MEDCouplingFieldDouble *MEDCouplingCurveLinearMesh::getMeasureField(bool isAbs) int meshDim=getMeshDimension(); std::string name="MeasureOfMesh_"; name+=getName(); MEDCouplingAutoRefCountObjectPtr field=MEDCouplingFieldDouble::New(ON_CELLS,ONE_TIME); - field->setName(name.c_str()); field->setMesh(const_cast(this)); field->synchronizeTimeWithMesh(); + field->setName(name); field->setMesh(const_cast(this)); field->synchronizeTimeWithMesh(); switch(meshDim) - { + { case 3: { getMeasureFieldMeshDim3(isAbs,field); return field.retn(); } case 2: @@ -402,14 +371,14 @@ MEDCouplingFieldDouble *MEDCouplingCurveLinearMesh::getMeasureField(bool isAbs) { getMeasureFieldMeshDim1(isAbs,field); return field.retn(); } default: throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getMeasureField : mesh dimension must be in [1,2,3] !"); - } + } } /*! * \param [in,out] f field feeded with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ -void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCouplingFieldDouble *field) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCouplingFieldDouble *field) const { int nbnodes=getNumberOfNodes(); int spaceDim=getSpaceDimension(); @@ -435,7 +404,7 @@ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCoupling * \param [in,out] f field feeded with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ -void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCouplingFieldDouble *field) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCouplingFieldDouble *field) const { int nbcells=getNumberOfCells(); int spaceDim=getSpaceDimension(); @@ -461,7 +430,7 @@ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCoupling * \param [in,out] f field feeded with good values. * \sa MEDCouplingCurveLinearMesh::getMeasureField */ -void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3(bool isAbs, MEDCouplingFieldDouble *field) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3(bool isAbs, MEDCouplingFieldDouble *field) const { int nbcells=getNumberOfCells(); int spaceDim=getSpaceDimension(); @@ -550,7 +519,7 @@ int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double if(nbOfNodes==1) throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCellContainingPoint : No cells in this !"); switch(getMeshDimension()) - { + { case 1: if(spaceDim==1) { @@ -662,7 +631,7 @@ int MEDCouplingCurveLinearMesh::getCellContainingPoint(const double *pos, double } default: throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getCellContainingPoint : mesh dimension managed are 1, 2 or 3 !"); - } + } } void MEDCouplingCurveLinearMesh::rotate(const double *center, const double *vector, double angle) @@ -740,7 +709,7 @@ DataArrayDouble *MEDCouplingCurveLinearMesh::getBarycenterAndOwner() const ret->alloc(nbOfCells,spaceDim); ret->copyStringInfoFrom(*getCoords()); switch(meshDim) - { + { case 3: { getBarycenterAndOwnerMeshDim3(ret); return ret.retn(); } case 2: @@ -749,10 +718,10 @@ DataArrayDouble *MEDCouplingCurveLinearMesh::getBarycenterAndOwner() const { getBarycenterAndOwnerMeshDim1(ret); return ret.retn(); } default: throw INTERP_KERNEL::Exception("MEDCouplingCurveLinearMesh::getBarycenterAndOwner : mesh dimension must be in [1,2,3] !"); - } + } } -DataArrayDouble *MEDCouplingCurveLinearMesh::computeIsoBarycenterOfNodesPerCell() const throw(INTERP_KERNEL::Exception) +DataArrayDouble *MEDCouplingCurveLinearMesh::computeIsoBarycenterOfNodesPerCell() const { return MEDCouplingCurveLinearMesh::getBarycenterAndOwner(); } @@ -817,7 +786,7 @@ 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) throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::renumberCells(const int *old2NewBg, bool check) { throw INTERP_KERNEL::Exception("Functionnality of renumbering cell not available for CurveLinear Mesh !"); } @@ -878,9 +847,9 @@ void MEDCouplingCurveLinearMesh::serialize(DataArrayInt *&a1, DataArrayDouble *& void MEDCouplingCurveLinearMesh::unserialization(const std::vector& tinyInfoD, const std::vector& tinyInfo, const DataArrayInt *a1, DataArrayDouble *a2, const std::vector& littleStrings) { - setName(littleStrings[0].c_str()); - setDescription(littleStrings[1].c_str()); - setTimeUnit(littleStrings[2].c_str()); + setName(littleStrings[0]); + setDescription(littleStrings[1]); + setTimeUnit(littleStrings[2]); setTime(tinyInfoD[0],tinyInfo[0],tinyInfo[1]); int sz=tinyInfo[2]; _structure.resize(sz); @@ -897,7 +866,7 @@ void MEDCouplingCurveLinearMesh::unserialization(const std::vector& tiny } } -void MEDCouplingCurveLinearMesh::writeVTKLL(std::ostream& ofs, const std::string& cellData, const std::string& pointData, DataArrayByte *byteData) const throw(INTERP_KERNEL::Exception) +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(); @@ -924,7 +893,7 @@ void MEDCouplingCurveLinearMesh::writeVTKLL(std::ostream& ofs, const std::string ofs << " \n"; } -void MEDCouplingCurveLinearMesh::reprQuickOverview(std::ostream& stream) const throw(INTERP_KERNEL::Exception) +void MEDCouplingCurveLinearMesh::reprQuickOverview(std::ostream& stream) const { stream << "MEDCouplingCurveLinearMesh C++ instance at " << this << ". Name : \"" << getName() << "\"."; stream << " Nodal structure : ["; @@ -948,7 +917,12 @@ void MEDCouplingCurveLinearMesh::reprQuickOverview(std::ostream& stream) const t coo->reprQuickOverviewData(stream,200); } -std::string MEDCouplingCurveLinearMesh::getVTKDataSetType() const throw(INTERP_KERNEL::Exception) +std::string MEDCouplingCurveLinearMesh::getVTKFileExtension() const +{ + return std::string("vts"); +} + +std::string MEDCouplingCurveLinearMesh::getVTKDataSetType() const { return std::string("StructuredGrid"); }