X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMultiFields.cxx;h=9f69557766cc02b779013330652a6bd9c95f4443;hb=90b7c9c73054965b8085ab0ecd2646a3d59f475a;hp=d261867686ec8fbb85741bc74a69fe90e443b66c;hpb=887d0e1efce4f46f68d2596dcd801f02f5c1f99e;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMultiFields.cxx b/src/MEDCoupling/MEDCouplingMultiFields.cxx index d26186768..9f6955776 100644 --- a/src/MEDCoupling/MEDCouplingMultiFields.cxx +++ b/src/MEDCoupling/MEDCouplingMultiFields.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2012 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 // 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,14 +22,14 @@ #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) throw(INTERP_KERNEL::Exception) +MEDCouplingMultiFields *MEDCouplingMultiFields::New(const std::vector& fs) { return new MEDCouplingMultiFields(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,16 +98,16 @@ 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(); return std::string(); } -double MEDCouplingMultiFields::getTimeResolution() const throw(INTERP_KERNEL::Exception) +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"; } + } + catch(INTERP_KERNEL::Exception& /*e*/) + { ret << "Current instance is INVALID !\n"; } return ret.str(); } @@ -149,9 +149,9 @@ bool MEDCouplingMultiFields::isEqualWithoutConsideringStr(const MEDCouplingMulti return true; } -const MEDCouplingFieldDouble *MEDCouplingMultiFields::getFieldWithId(int id) const throw(INTERP_KERNEL::Exception) +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]; } @@ -168,9 +168,9 @@ int MEDCouplingMultiFields::getNumberOfFields() const return (int)_fs.size(); } -const MEDCouplingFieldDouble *MEDCouplingMultiFields::getFieldAtPos(int id) const throw(INTERP_KERNEL::Exception) +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(); @@ -190,26 +190,23 @@ void MEDCouplingMultiFields::updateTime() const updateTimeWith(*(*it)); } -std::size_t MEDCouplingMultiFields::getHeapMemorySize() const +std::size_t MEDCouplingMultiFields::getHeapMemorySizeWithoutChildren() const +{ + return 0; +} + +std::vector MEDCouplingMultiFields::getDirectChildrenWithNull() const { - std::vector tmp; - std::vector< std::vector > tmp2; - std::vector ms=getDifferentMeshes(tmp); - std::vector arrs=getDifferentArrays(tmp2); - std::size_t ret=0; - for(std::vector::const_iterator it=ms.begin();it!=ms.end();it++) - if(*it) - ret+=(*it)->getHeapMemorySize(); - for(std::vector::const_iterator it=arrs.begin();it!=arrs.end();it++) - if(*it) - ret+=(*it)->getHeapMemorySize(); + std::vector ret; + 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 throw(INTERP_KERNEL::Exception) +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)) @@ -219,12 +216,12 @@ std::vector MEDCouplingMultiFields::getMeshes() const throw(I return ms; } -std::vector MEDCouplingMultiFields::getDifferentMeshes(std::vector& refs) const throw(INTERP_KERNEL::Exception) +std::vector MEDCouplingMultiFields::getDifferentMeshes(std::vector& refs) const { 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)) @@ -246,10 +243,10 @@ std::vector MEDCouplingMultiFields::getDifferentMeshes(std::v return ms; } -std::vector MEDCouplingMultiFields::getArrays() const throw(INTERP_KERNEL::Exception) +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()); @@ -257,12 +254,12 @@ std::vector MEDCouplingMultiFields::getArrays() const throw(I return tmp; } -std::vector MEDCouplingMultiFields::getDifferentArrays(std::vector< std::vector >& refs) const throw(INTERP_KERNEL::Exception) +std::vector MEDCouplingMultiFields::getDifferentArrays(std::vector< std::vector >& refs) const { 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)) @@ -293,18 +290,18 @@ std::vector MEDCouplingMultiFields::getDifferentArrays(std::v return ret; } -void MEDCouplingMultiFields::checkCoherency() const throw(INTERP_KERNEL::Exception) +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(); } } -MEDCouplingMultiFields::MEDCouplingMultiFields(const std::vector& fs) throw(INTERP_KERNEL::Exception):_fs(fs.size()) +MEDCouplingMultiFields::MEDCouplingMultiFields(const std::vector& fs):_fs(fs.size()) { int id=0; for(std::vector< MEDCouplingFieldDouble * >::const_iterator it=fs.begin();it!=fs.end();it++,id++) @@ -313,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); @@ -330,20 +327,20 @@ 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;igetTimeDiscretization()); + MEDCouplingFieldTemplate *tmp=MEDCouplingFieldTemplate::New(*other._fs[i]); + _fs[i]=MEDCouplingFieldDouble::New(*tmp,other._fs[i]->getTimeDiscretization()); tmp->decrRef(); if(refs[i]!=-1) _fs[i]->setMesh(ms2[refs[i]]); @@ -357,7 +354,7 @@ MEDCouplingMultiFields::MEDCouplingMultiFields(const MEDCouplingMultiFields& oth tmp2[j]=0; } _fs[i]->setArrays(tmp2); - std::vector tinyInfo; + std::vector tinyInfo; std::vector tinyInfo2; other._fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationIntInformation2(tinyInfo); other._fs[i]->getTimeDiscretizationUnderGround()->getTinySerializationDbleInformation2(tinyInfo2); @@ -370,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); @@ -379,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); //