X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMultiFields.cxx;h=039c8ca29dabeae3a09b3b0c93ab08223e55e428;hb=e7835cba1eb17f50ef4e130c2cb8d0f54bc25083;hp=94856e43d37ae78583cc142d0242f9f9d0545fb0;hpb=293a6104470482e450701aa8061d9b244f2057d5;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMultiFields.cxx b/src/MEDCoupling/MEDCouplingMultiFields.cxx index 94856e43d..039c8ca29 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-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 // 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,7 +149,7 @@ 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) throw INTERP_KERNEL::Exception("MEDCouplingMultiFields::getFieldWithId : invalid id outside boundaries !"); @@ -168,7 +168,7 @@ 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()) { @@ -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,10 +190,23 @@ void MEDCouplingMultiFields::updateTime() const updateTimeWith(*(*it)); } -std::vector MEDCouplingMultiFields::getMeshes() const throw(INTERP_KERNEL::Exception) +std::size_t MEDCouplingMultiFields::getHeapMemorySizeWithoutChildren() const +{ + return 0; +} + +std::vector MEDCouplingMultiFields::getDirectChildrenWithNull() const +{ + 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 { 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)) @@ -203,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)) @@ -230,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()); @@ -241,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)) @@ -277,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++) @@ -297,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); @@ -314,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]]); @@ -421,7 +434,7 @@ void MEDCouplingMultiFields::finishUnserialization(const std::vector& tinyI int offD=0; for(int i=0;i tmp(sz3); for(int j=0;j