X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMesh.cxx;h=241e05120a5c3fa1e648a504cd4962df91be3434;hb=1f722cfc504a6acb89bc49272c70694603d2fe04;hp=4e26cff4249d7483b6ed98ddf8a33b05c48f78be;hpb=5455df9fd088945f6e1cc778b812723ab5647b80;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMesh.cxx b/src/MEDCoupling/MEDCouplingMesh.cxx index 4e26cff42..241e05120 100644 --- a/src/MEDCoupling/MEDCouplingMesh.cxx +++ b/src/MEDCoupling/MEDCouplingMesh.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 @@ -37,7 +37,7 @@ MEDCouplingMesh::MEDCouplingMesh():_time(0.),_iteration(-1),_order(-1) { } -MEDCouplingMesh::MEDCouplingMesh(const MEDCouplingMesh& other):_name(other._name),_description(other._description), +MEDCouplingMesh::MEDCouplingMesh(const MEDCouplingMesh& other):RefCountObject(other),_name(other._name),_description(other._description), _time(other._time),_iteration(other._iteration), _order(other._order),_time_unit(other._time_unit) { @@ -56,7 +56,7 @@ bool MEDCouplingMesh::isStructured() const return getType()==CARTESIAN; } -bool MEDCouplingMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, std::string& reason) const throw(INTERP_KERNEL::Exception) +bool MEDCouplingMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, std::string& reason) const { if(!other) throw INTERP_KERNEL::Exception("MEDCouplingMesh::isEqualIfNotWhy : other instance is NULL !"); @@ -106,7 +106,7 @@ bool MEDCouplingMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, * \param [in] prec - precision value used to compare node coordinates. * \return bool - \c true if the two meshes are equal, \c false else. */ -bool MEDCouplingMesh::isEqual(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception) +bool MEDCouplingMesh::isEqual(const MEDCouplingMesh *other, double prec) const { std::string tmp; return isEqualIfNotWhy(other,prec,tmp); @@ -146,7 +146,7 @@ bool MEDCouplingMesh::isEqual(const MEDCouplingMesh *other, double prec) const t * to be compared. An interpolation using MEDCouplingRemapper class should be then used. */ void MEDCouplingMesh::checkGeoEquivalWith(const MEDCouplingMesh *other, int levOfCheck, double prec, - DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const throw(INTERP_KERNEL::Exception) + DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const { cellCor=0; nodeCor=0; @@ -224,7 +224,7 @@ DataArrayInt *MEDCouplingMesh::getCellIdsFullyIncludedInNodeIds(const int *partB /*! * This method checks fastly that \a this and \a other are equal. All common checks are done here. */ -void MEDCouplingMesh::checkFastEquivalWith(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception) +void MEDCouplingMesh::checkFastEquivalWith(const MEDCouplingMesh *other, double prec) const { if(!other) throw INTERP_KERNEL::Exception("MEDCouplingMesh::checkFastEquivalWith : input mesh is null !"); @@ -259,7 +259,7 @@ bool MEDCouplingMesh::areCompatibleForMerge(const MEDCouplingMesh *other) const * * \sa MEDCouplingMesh::buildPart */ -MEDCouplingMesh *MEDCouplingMesh::buildPartRange(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception) +MEDCouplingMesh *MEDCouplingMesh::buildPartRange(int beginCellIds, int endCellIds, int stepCellIds) const { if(beginCellIds==0 && endCellIds==getNumberOfCells() && stepCellIds==1) { @@ -279,7 +279,7 @@ MEDCouplingMesh *MEDCouplingMesh::buildPartRange(int beginCellIds, int endCellId * * \sa MEDCouplingMesh::buildPartAndReduceNodes */ -MEDCouplingMesh *MEDCouplingMesh::buildPartRangeAndReduceNodes(int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt*& arr) const throw(INTERP_KERNEL::Exception) +MEDCouplingMesh *MEDCouplingMesh::buildPartRangeAndReduceNodes(int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt*& arr) const { MEDCouplingAutoRefCountObjectPtr cellIds=DataArrayInt::Range(beginCellIds,endCellIds,stepCellIds); return buildPartAndReduceNodes(cellIds->begin(),cellIds->end(),arr); @@ -314,7 +314,7 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbO * This method copyies all tiny strings from other (name and components name). * @throw if other and this have not same mesh type. */ -void MEDCouplingMesh::copyTinyStringsFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception) +void MEDCouplingMesh::copyTinyStringsFrom(const MEDCouplingMesh *other) { if(!other) throw INTERP_KERNEL::Exception("MEDCouplingMesh::copyTinyStringsFrom : input mesh is null !"); @@ -327,12 +327,12 @@ void MEDCouplingMesh::copyTinyStringsFrom(const MEDCouplingMesh *other) throw(IN * This method copies all attributes that are \b NOT arrays in this. * All tiny attributes not usefully for state of \a this are ignored. */ -void MEDCouplingMesh::copyTinyInfoFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception) +void MEDCouplingMesh::copyTinyInfoFrom(const MEDCouplingMesh *other) { - copyTinyStringsFrom(other); _time=other->_time; _iteration=other->_iteration; _order=other->_order; + copyTinyStringsFrom(other); } /*! @@ -371,10 +371,12 @@ void MEDCouplingMesh::copyTinyInfoFrom(const MEDCouplingMesh *other) throw(INTER * \throw If the nodal connectivity of cells is not defined. * \throw If computing \a func fails. * + * \if ENABLE_EXAMPLES * \ref cpp_mcmesh_fillFromAnalytic "Here is a C++ example".
* \ref py_mcmesh_fillFromAnalytic "Here is a Python example". + * \endif */ -MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const char *func) const +MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const { MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); @@ -389,7 +391,7 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbO * function to coordinates of field location points (defined by the given field type). * For example, if \a t == ParaMEDMEM::ON_CELLS, the function is applied to cell * barycenters. This method differs from - * \ref MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const char *func) const "fillFromAnalytic()" + * \ref MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const "fillFromAnalytic()" * by the way how variable * names, used in the function, are associated with components of coordinates of field * location points; here, a variable name corresponding to a component is retrieved from @@ -421,10 +423,12 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbO * \throw If the nodal connectivity of cells is not defined. * \throw If computing \a func fails. * + * \if ENABLE_EXAMPLES * \ref cpp_mcmesh_fillFromAnalytic2 "Here is a C++ example".
* \ref py_mcmesh_fillFromAnalytic2 "Here is a Python example". + * \endif */ -MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nbOfComp, const char *func) const +MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nbOfComp, const std::string& func) const { MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); @@ -472,10 +476,12 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nb * \throw If the nodal connectivity of cells is not defined. * \throw If computing \a func fails. * + * \if ENABLE_EXAMPLES * \ref cpp_mcmesh_fillFromAnalytic3 "Here is a C++ example".
* \ref py_mcmesh_fillFromAnalytic3 "Here is a Python example". + * \endif */ -MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic3(TypeOfField t, int nbOfComp, const std::vector& varsOrder, const char *func) const +MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic3(TypeOfField t, int nbOfComp, const std::vector& varsOrder, const std::string& func) const { MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); @@ -497,7 +503,7 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic3(TypeOfField t, int nb * is no more needed. * \throw If the meshes are of different mesh type. */ -MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(const MEDCouplingMesh *mesh1, const MEDCouplingMesh *mesh2) throw(INTERP_KERNEL::Exception) +MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(const MEDCouplingMesh *mesh1, const MEDCouplingMesh *mesh2) { if(!mesh1) throw INTERP_KERNEL::Exception("MEDCouplingMesh::MergeMeshes : first parameter is an empty mesh !"); @@ -524,7 +530,7 @@ MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(const MEDCouplingMesh *mesh1, cons * \throw If \a meshes[ *i* ]->getMeshDimension() < 0. * \throw If the \a meshes are of different dimension (getMeshDimension()). */ -MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(std::vector& meshes) throw(INTERP_KERNEL::Exception) +MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(std::vector& meshes) { std::vector< MEDCouplingAutoRefCountObjectPtr > ms1(meshes.size()); std::vector< const MEDCouplingUMesh * > ms2(meshes.size()); @@ -553,7 +559,7 @@ MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(std::vector * \ref py_mcumesh_getCellsContainingPoint "Here is a Python example". + * \endif */ void MEDCouplingMesh::getCellsContainingPoint(const double *pos, double eps, std::vector& elts) const { @@ -655,8 +663,10 @@ void MEDCouplingMesh::getCellsContainingPoint(const double *pos, double eps, std * Number of cells in contact with the *i*-th point is * \a eltsIndex[ *i*+1 ] - \a eltsIndex[ *i* ]. * + * \if ENABLE_EXAMPLES * \ref cpp_mcumesh_getCellsContainingPoints "Here is a C++ example".
* \ref py_mcumesh_getCellsContainingPoints "Here is a Python example". + * \endif */ void MEDCouplingMesh::getCellsContainingPoints(const double *pos, int nbOfPoints, double eps, MEDCouplingAutoRefCountObjectPtr& elts, MEDCouplingAutoRefCountObjectPtr& eltsIndex) const { @@ -682,7 +692,7 @@ void MEDCouplingMesh::getCellsContainingPoints(const double *pos, int nbOfPoints * \param [in] fileName - the name of the file to write in. * \throw If \a fileName is not a writable file. */ -void MEDCouplingMesh::writeVTK(const char *fileName, bool isBinary) const throw(INTERP_KERNEL::Exception) +void MEDCouplingMesh::writeVTK(const std::string& fileName, bool isBinary) const { std::string cda,pda; MEDCouplingAutoRefCountObjectPtr byteArr; @@ -691,18 +701,18 @@ void MEDCouplingMesh::writeVTK(const char *fileName, bool isBinary) const throw( writeVTKAdvanced(fileName,cda,pda,byteArr); } -void MEDCouplingMesh::writeVTKAdvanced(const char *fileName, const std::string& cda, const std::string& pda, DataArrayByte *byteData) const throw(INTERP_KERNEL::Exception) +void MEDCouplingMesh::writeVTKAdvanced(const std::string& fileName, const std::string& cda, const std::string& pda, DataArrayByte *byteData) const { - std::ofstream ofs(fileName); + std::ofstream ofs(fileName.c_str()); ofs << "\n"; writeVTKLL(ofs,cda,pda,byteData); if(byteData) { ofs << "\n_1234"; ofs << std::flush; ofs.close(); - std::ofstream ofs2(fileName,std::ios_base::binary | std::ios_base::app); + std::ofstream ofs2(fileName.c_str(),std::ios_base::binary | std::ios_base::app); ofs2.write(byteData->begin(),byteData->getNbOfElems()); ofs2 << std::flush; ofs2.close(); - std::ofstream ofs3(fileName,std::ios_base::app); ofs3 << "\n\n\n"; ofs3.close(); + std::ofstream ofs3(fileName.c_str(),std::ios_base::app); ofs3 << "\n\n\n"; ofs3.close(); } else {