X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMultiFields.cxx;h=366f106d9c58f02a51afed2c9ff178a2f77bf470;hb=b832b15337be013a56e0976170e5e235b89fcb03;hp=5fe85bf7a19bc744d350625825065f05eae84f49;hpb=a23c622fadddf57290253debb129d9008226cdb9;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMultiFields.cxx b/src/MEDCoupling/MEDCouplingMultiFields.cxx index 5fe85bf7a..366f106d9 100644 --- a/src/MEDCoupling/MEDCouplingMultiFields.cxx +++ b/src/MEDCoupling/MEDCouplingMultiFields.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2024 CEA, EDF // // 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 @@ -22,12 +22,12 @@ #include "MEDCouplingFieldTemplate.hxx" #include "MEDCouplingFieldDouble.hxx" #include "MEDCouplingMesh.hxx" -#include "MEDCouplingAutoRefCountObjectPtr.hxx" +#include "MCAuto.hxx" #include #include -using namespace ParaMEDMEM; +using namespace MEDCoupling; MEDCouplingMultiFields *MEDCouplingMultiFields::New(const std::vector& fs) { @@ -39,7 +39,7 @@ MEDCouplingMultiFields *MEDCouplingMultiFields::New() return new MEDCouplingMultiFields; } -MEDCouplingMultiFields *MEDCouplingMultiFields::deepCpy() const +MEDCouplingMultiFields *MEDCouplingMultiFields::deepCopy() const { return new MEDCouplingMultiFields(*this); } @@ -80,7 +80,7 @@ bool MEDCouplingMultiFields::isEqual(const MEDCouplingMultiFields *other, double std::string MEDCouplingMultiFields::getName() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) if((const MEDCouplingFieldDouble *)(*it)) return (*it)->getName(); @@ -89,7 +89,7 @@ std::string MEDCouplingMultiFields::getName() const std::string MEDCouplingMultiFields::getDescription() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) if((const MEDCouplingFieldDouble *)(*it)) return (*it)->getDescription(); @@ -98,7 +98,7 @@ std::string MEDCouplingMultiFields::getDescription() const std::string MEDCouplingMultiFields::getTimeUnit() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) if((const MEDCouplingFieldDouble *)(*it)) return (*it)->getTimeUnit(); @@ -107,7 +107,7 @@ std::string MEDCouplingMultiFields::getTimeUnit() const double MEDCouplingMultiFields::getTimeResolution() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) if((const MEDCouplingFieldDouble *)(*it)) return (*it)->getTimeTolerance(); @@ -124,12 +124,12 @@ std::string MEDCouplingMultiFields::simpleRepr() const std::vector ms; std::vector refms; try - { + { ms=getDifferentMeshes(refms); ret << ms.size() << "\n"; - } + } catch(INTERP_KERNEL::Exception& /*e*/) - { ret << "Current instance is INVALID !\n"; } + { ret << "Current instance is INVALID !\n"; } return ret.str(); } @@ -151,7 +151,7 @@ bool MEDCouplingMultiFields::isEqualWithoutConsideringStr(const MEDCouplingMulti const MEDCouplingFieldDouble *MEDCouplingMultiFields::getFieldWithId(int id) const { - if(id>=(int)_fs.size() || id < 0) + if(id>=ToIdType(_fs.size()) || id < 0) throw INTERP_KERNEL::Exception("MEDCouplingMultiFields::getFieldWithId : invalid id outside boundaries !"); return _fs[id]; } @@ -170,7 +170,7 @@ int MEDCouplingMultiFields::getNumberOfFields() const const MEDCouplingFieldDouble *MEDCouplingMultiFields::getFieldAtPos(int id) const { - if(id<0 || id>=(int)_fs.size()) + if(id<0 || id>=ToIdType(_fs.size())) { std::ostringstream oss; oss << "MEDCouplingMultiFields::getFieldAtPos : Invalid given pos : should be >=0 and < " << _fs.size() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -180,7 +180,7 @@ const MEDCouplingFieldDouble *MEDCouplingMultiFields::getFieldAtPos(int id) cons void MEDCouplingMultiFields::updateTime() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) if((const MEDCouplingFieldDouble *)(*it)) (*it)->updateTime(); @@ -195,22 +195,18 @@ std::size_t MEDCouplingMultiFields::getHeapMemorySizeWithoutChildren() const return 0; } -std::vector MEDCouplingMultiFields::getDirectChildren() const +std::vector MEDCouplingMultiFields::getDirectChildrenWithNull() const { std::vector ret; - for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin();it!=_fs.end();it++) - { - const MEDCouplingFieldDouble *curF(*it); - if(curF) - ret.push_back(curF); - } + for(std::vector< MCAuto >::const_iterator it=_fs.begin();it!=_fs.end();it++) + ret.push_back((const MEDCouplingFieldDouble *)*it); return ret; } std::vector MEDCouplingMultiFields::getMeshes() const { std::vector ms; - for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin();it!=_fs.end();it++) + for(std::vector< MCAuto >::const_iterator it=_fs.begin();it!=_fs.end();it++) { const MEDCouplingMesh *m=0; if((const MEDCouplingFieldDouble *)(*it)) @@ -225,7 +221,7 @@ std::vector MEDCouplingMultiFields::getDifferentMeshes(std::v refs.resize(_fs.size()); std::vector ms; int id=0; - for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin();it!=_fs.end();it++,id++) + for(std::vector< MCAuto >::const_iterator it=_fs.begin();it!=_fs.end();it++,id++) { const MEDCouplingMesh *m=0; if((const MEDCouplingFieldDouble *)(*it)) @@ -250,7 +246,7 @@ std::vector MEDCouplingMultiFields::getDifferentMeshes(std::v std::vector MEDCouplingMultiFields::getArrays() const { std::vector tmp; - for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin();it!=_fs.end();it++) + for(std::vector< MCAuto >::const_iterator it=_fs.begin();it!=_fs.end();it++) { std::vector tmp2=(*it)->getArrays(); tmp.insert(tmp.end(),tmp2.begin(),tmp2.end()); @@ -263,7 +259,7 @@ std::vector MEDCouplingMultiFields::getDifferentArrays(std::v refs.resize(_fs.size()); int id=0; std::vector ret; - for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin();it!=_fs.end();it++,id++) + for(std::vector< MCAuto >::const_iterator it=_fs.begin();it!=_fs.end();it++,id++) { std::vector tmp2; if((const MEDCouplingFieldDouble *)(*it)) @@ -294,14 +290,14 @@ std::vector MEDCouplingMultiFields::getDifferentArrays(std::v return ret; } -void MEDCouplingMultiFields::checkCoherency() const +void MEDCouplingMultiFields::checkConsistencyLight() const { - std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_fs.begin(); + std::vector< MCAuto >::const_iterator it=_fs.begin(); for(;it!=_fs.end();it++) { if((const MEDCouplingFieldDouble *)(*it)==0) - throw INTERP_KERNEL::Exception("MEDCouplingMultiFields::checkCoherency : There is an empty Field in array..."); - (*it)->checkCoherency(); + throw INTERP_KERNEL::Exception("MEDCouplingMultiFields::checkConsistencyLight : There is an empty Field in array..."); + (*it)->checkConsistencyLight(); } } @@ -314,16 +310,16 @@ MEDCouplingMultiFields::MEDCouplingMultiFields(const std::vectorincrRef(); else throw INTERP_KERNEL::Exception("MEDCouplingMultiFields constructor : empty field found in vector !"); - (*it)->checkCoherency(); + (*it)->checkConsistencyLight(); _fs[id]=*it; } } /*! - * Performs deepCpy. + * Performs deepCopy. */ -MEDCouplingMultiFields::MEDCouplingMultiFields(const MEDCouplingMultiFields& other) +MEDCouplingMultiFields::MEDCouplingMultiFields(const MEDCouplingMultiFields& other):RefCountObject(other) { std::size_t sz=other._fs.size(); _fs.resize(sz); @@ -331,14 +327,14 @@ MEDCouplingMultiFields::MEDCouplingMultiFields(const MEDCouplingMultiFields& oth std::vector< std::vector > refs2; std::vector ms=other.getDifferentMeshes(refs); std::size_t msLgh=ms.size(); - std::vector< MEDCouplingAutoRefCountObjectPtr > ms2(msLgh); + std::vector< MCAuto > ms2(msLgh); for(std::size_t i=0;ideepCpy(); + ms2[i]=ms[i]->deepCopy(); std::vector das=other.getDifferentArrays(refs2); std::size_t dasLgth=das.size(); - std::vector< MEDCouplingAutoRefCountObjectPtr > das2(dasLgth); + std::vector< MCAuto > das2(dasLgth); for(std::size_t i=0;ideepCpy(); + das2[i]=das[i]->deepCopy(); for(std::size_t i=0;isetArrays(tmp2); - std::vector tinyInfo; + std::vector tinyInfo; std::vector tinyInfo2; other._fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationIntInformation2(tinyInfo); other._fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationDbleInformation2(tinyInfo2); @@ -371,7 +367,7 @@ MEDCouplingMultiFields::MEDCouplingMultiFields() { } -void MEDCouplingMultiFields::getTinySerializationInformation(std::vector& tinyInfo, std::vector& tinyInfo2, int& nbOfDiffMeshes, int& nbOfDiffArr) const +void MEDCouplingMultiFields::getTinySerializationInformation(std::vector& tinyInfo, std::vector& tinyInfo2, int& nbOfDiffMeshes, int& nbOfDiffArr) const { std::vector refs; std::vector ms=getDifferentMeshes(refs); @@ -380,70 +376,70 @@ void MEDCouplingMultiFields::getTinySerializationInformation(std::vector& t std::vector fs=getDifferentArrays(refs2); nbOfDiffArr=(int)fs.size(); // - std::size_t sz=refs.size();//==_fs.size() - int sz2=0; - for(std::size_t i=0;i doubleDaInd(sz); std::vector timeDiscrInt; tinyInfo.resize(sz2+5*sz+3); - tinyInfo[0]=(int)sz; + tinyInfo[0]=sz; tinyInfo[1]=sz2; - for(std::size_t i=0;i tmp; - std::vector tmp2; + std::vector tmp2; _fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationDbleInformation2(tmp); _fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationIntInformation2(tmp2); - tinyInfo[3*sz+3+i]=(int)tmp.size(); - tinyInfo[4*sz+3+i]=(int)tmp2.size(); + tinyInfo[3*sz+3+i]=ToIdType(tmp.size()); + tinyInfo[4*sz+3+i]=ToIdType(tmp2.size()); tinyInfo2.insert(tinyInfo2.end(),tmp.begin(),tmp.end()); timeDiscrInt.insert(timeDiscrInt.end(),tmp2.begin(),tmp2.end()); } - int sz3=(int)timeDiscrInt.size(); + mcIdType sz3=ToIdType(timeDiscrInt.size()); tinyInfo[2]=sz3; // - for(std::size_t i=0;igetTimeDiscretization(); + for(mcIdType i=0;igetTimeDiscretization()); int k=0; - for(std::size_t i=0;i::const_iterator it=refs2[i].begin();it!=refs2[i].end();it++,k++) tinyInfo[5*sz+k+3]=*it; tinyInfo.insert(tinyInfo.end(),timeDiscrInt.begin(),timeDiscrInt.end());//tinyInfo has lgth==sz3+sz2+5*sz+3 } -void MEDCouplingMultiFields::finishUnserialization(const std::vector& tinyInfoI, const std::vector& tinyInfoD, +void MEDCouplingMultiFields::finishUnserialization(const std::vector& tinyInfoI, const std::vector& tinyInfoD, const std::vector& ft, const std::vector& ms, const std::vector& das) { - int sz=tinyInfoI[0]; + mcIdType sz=tinyInfoI[0]; _fs.resize(sz); - int sz2=tinyInfoI[1]; + mcIdType sz2=tinyInfoI[1]; // dealing with ft with no mesh set. - for(int i=0;isetMesh(ms[meshId]); } // dealing with fieldtemplate->fielddouble - int k=0; - int offI=0; - int offD=0; - for(int i=0;i tmp(sz3); - for(int j=0;j& tinyI } _fs[i]->setArrays(tmp); // time discr tiny info - int lgthI=tinyInfoI[4*sz+3+i]; - int lgthD=tinyInfoI[3*sz+3+i]; + mcIdType lgthI=tinyInfoI[4*sz+3+i]; + mcIdType lgthD=tinyInfoI[3*sz+3+i]; // - std::vector tdInfoI(tinyInfoI.begin()+sz2+5*sz+3+offI,tinyInfoI.begin()+sz2+5*sz+3+offI+lgthI); + std::vector tdInfoI(tinyInfoI.begin()+sz2+5*sz+3+offI,tinyInfoI.begin()+sz2+5*sz+3+offI+lgthI); std::vector tdInfoD(tinyInfoD.begin()+offD,tinyInfoD.begin()+offD+lgthD); _fs[i]->getTimeDiscretizationUnderGround()->finishUnserialization2(tdInfoI,tdInfoD); //