X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMesh.cxx;h=8dc00b5eff30e2249a3b749fb44ea8f9a4f736ab;hb=3e9ebc98a6bc02022900a8b2295e1a775d78ece0;hp=3de265f1fe3ee0b81bfbd6a40f94a3aed7e6100b;hpb=606690f432f99cdd93ff2e8d3a6382db74cdec3b;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMesh.cxx b/src/MEDCoupling/MEDCouplingMesh.cxx index 3de265f1f..8dc00b5ef 100644 --- a/src/MEDCoupling/MEDCouplingMesh.cxx +++ b/src/MEDCoupling/MEDCouplingMesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D +// Copyright (C) 2007-2016 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 @@ -20,10 +20,10 @@ #include "MEDCouplingMesh.hxx" #include "MEDCouplingUMesh.hxx" -#include "MEDCouplingMemArray.hxx" +#include "MEDCouplingMemArray.txx" #include "MEDCouplingFieldDouble.hxx" #include "MEDCouplingFieldDiscretization.hxx" -#include "MEDCouplingAutoRefCountObjectPtr.hxx" +#include "MCAuto.hxx" #include #include @@ -31,7 +31,7 @@ #include #include -using namespace ParaMEDMEM; +using namespace MEDCoupling; MEDCouplingMesh::MEDCouplingMesh():_time(0.),_iteration(-1),_order(-1) { @@ -237,7 +237,7 @@ void MEDCouplingMesh::checkFastEquivalWith(const MEDCouplingMesh *other, double } /*! - * This method is very poor and looks only if \a this and \a other are candidate for merge of fields lying repectively on them. + * This method is very poor and looks only if \a this and \a other are candidate for merge of fields lying respectively on them. */ bool MEDCouplingMesh::areCompatibleForMerge(const MEDCouplingMesh *other) const { @@ -269,7 +269,7 @@ MEDCouplingMesh *MEDCouplingMesh::buildPartRange(int beginCellIds, int endCellId } else { - MEDCouplingAutoRefCountObjectPtr cellIds=DataArrayInt::Range(beginCellIds,endCellIds,stepCellIds); + MCAuto cellIds=DataArrayInt::Range(beginCellIds,endCellIds,stepCellIds); return buildPart(cellIds->begin(),cellIds->end()); } } @@ -281,7 +281,7 @@ MEDCouplingMesh *MEDCouplingMesh::buildPartRange(int beginCellIds, int endCellId */ 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); + MCAuto cellIds=DataArrayInt::Range(beginCellIds,endCellIds,stepCellIds); return buildPartAndReduceNodes(cellIds->begin(),cellIds->end(),arr); } @@ -303,7 +303,7 @@ MEDCouplingMesh *MEDCouplingMesh::buildPartRangeAndReduceNodes(int beginCellIds, */ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, FunctionToEvaluate func) const { - MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); + MCAuto ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); ret->fillFromAnalytic(nbOfComp,func); ret->synchronizeTimeWithSupport(); @@ -340,7 +340,7 @@ void MEDCouplingMesh::copyTinyInfoFrom(const MEDCouplingMesh *other) * Creates a new MEDCouplingFieldDouble of a given type, one time, with given number of * components, lying on \a this mesh, with contents got by applying a specified * 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 + * For example, if \a t == MEDCoupling::ON_CELLS, the function is applied to cell * barycenters.
* For more info on supported expressions that can be used in the function, see \ref * MEDCouplingArrayApplyFuncExpr. The function can include arbitrary named variables @@ -378,7 +378,7 @@ void MEDCouplingMesh::copyTinyInfoFrom(const MEDCouplingMesh *other) */ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const { - MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); + MCAuto ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); ret->fillFromAnalytic(nbOfComp,func); ret->synchronizeTimeWithSupport(); @@ -389,7 +389,7 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbO * Creates a new MEDCouplingFieldDouble of a given type, one time, with given number of * components, lying on \a this mesh, with contents got by applying a specified * 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 + * For example, if \a t == MEDCoupling::ON_CELLS, the function is applied to cell * barycenters. This method differs from * \ref MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const "fillFromAnalytic()" * by the way how variable @@ -428,11 +428,11 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic(TypeOfField t, int nbO * \ref py_mcmesh_fillFromAnalytic2 "Here is a Python example". * \endif */ -MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nbOfComp, const std::string& func) const +MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalyticCompo(TypeOfField t, int nbOfComp, const std::string& func) const { - MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); + MCAuto ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); - ret->fillFromAnalytic2(nbOfComp,func); + ret->fillFromAnalyticCompo(nbOfComp,func); ret->synchronizeTimeWithSupport(); return ret.retn(); } @@ -441,7 +441,7 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nb * Creates a new MEDCouplingFieldDouble of a given type, one time, with given number of * components, lying on \a this mesh, with contents got by applying a specified * 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 + * For example, if \a t == MEDCoupling::ON_CELLS, the function is applied to cell * barycenters. This method differs from \ref \ref mcmesh_fillFromAnalytic * "fillFromAnalytic()" by the way how variable * names, used in the function, are associated with components of coordinates of field @@ -481,11 +481,11 @@ MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic2(TypeOfField t, int nb * \ref py_mcmesh_fillFromAnalytic3 "Here is a Python example". * \endif */ -MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalytic3(TypeOfField t, int nbOfComp, const std::vector& varsOrder, const std::string& func) const +MEDCouplingFieldDouble *MEDCouplingMesh::fillFromAnalyticNamedCompo(TypeOfField t, int nbOfComp, const std::vector& varsOrder, const std::string& func) const { - MEDCouplingAutoRefCountObjectPtr ret=MEDCouplingFieldDouble::New(t,ONE_TIME); + MCAuto ret=MEDCouplingFieldDouble::New(t,ONE_TIME); ret->setMesh(this); - ret->fillFromAnalytic3(nbOfComp,varsOrder,func); + ret->fillFromAnalyticNamedCompo(nbOfComp,varsOrder,func); ret->synchronizeTimeWithSupport(); return ret.retn(); } @@ -532,7 +532,7 @@ MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(const MEDCouplingMesh *mesh1, cons */ MEDCouplingMesh *MEDCouplingMesh::MergeMeshes(std::vector& meshes) { - std::vector< MEDCouplingAutoRefCountObjectPtr > ms1(meshes.size()); + std::vector< MCAuto > ms1(meshes.size()); std::vector< const MEDCouplingUMesh * > ms2(meshes.size()); for(std::size_t i=0;i - * \ref py_mcumesh_getCellsContainingPoint "Here is a Python example". - * \endif - */ -void MEDCouplingMesh::getCellsContainingPoint(const double *pos, double eps, std::vector& elts) const -{ - int ret=getCellContainingPoint(pos,eps); - elts.push_back(ret); -} - /*! * Finds cells in contact with several balls (i.e. points with precision). * This method is an extension of getCellContainingPoint() and @@ -668,7 +647,7 @@ void MEDCouplingMesh::getCellsContainingPoint(const double *pos, double eps, std * \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 +void MEDCouplingMesh::getCellsContainingPoints(const double *pos, int nbOfPoints, double eps, MCAuto& elts, MCAuto& eltsIndex) const { eltsIndex=DataArrayInt::New(); elts=DataArrayInt::New(); eltsIndex->alloc(nbOfPoints+1,1); eltsIndex->setIJ(0,0,0); elts->alloc(0,1); int *eltsIndexPtr(eltsIndex->getPointer()); @@ -676,14 +655,10 @@ void MEDCouplingMesh::getCellsContainingPoints(const double *pos, int nbOfPoints const double *work(pos); for(int i=0;i=0) - { - elts->pushBackSilent(ret); - eltsIndexPtr[i+1]=eltsIndexPtr[i]+1; - } - else - eltsIndexPtr[i+1]=eltsIndexPtr[i]; + std::vector ret; + getCellsContainingPoint(work,eps,ret); + elts->insertAtTheEnd(ret.begin(),ret.end()); + eltsIndexPtr[i+1]=elts->getNumberOfTuples(); } } @@ -700,7 +675,7 @@ std::string MEDCouplingMesh::writeVTK(const std::string& fileName, bool isBinary std::string ret(getVTKFileNameOf(fileName)); // std::string cda,pda; - MEDCouplingAutoRefCountObjectPtr byteArr; + MCAuto byteArr; if(isBinary) { byteArr=DataArrayByte::New(); byteArr->alloc(0,1); } writeVTKAdvanced(ret,cda,pda,byteArr);