X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingFieldInt.cxx;h=8c58474405a409e45ff10f5d3c3263d552eb55ce;hb=8f2a28585bcf231a8f976f36b7fb1d2eed8801c2;hp=aab9a45f1e5091a25616ca5d74f6b183541acce3;hpb=2516e3ae71a095b1fdbffbddd253af62f8c9fc7c;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingFieldInt.cxx b/src/MEDCoupling/MEDCouplingFieldInt.cxx index aab9a45f1..8c5847440 100644 --- a/src/MEDCoupling/MEDCouplingFieldInt.cxx +++ b/src/MEDCoupling/MEDCouplingFieldInt.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 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 @@ -19,11 +19,16 @@ // Author : Yann Pora (EDF R&D) #include "MEDCouplingFieldInt.hxx" +#include "MEDCouplingFieldT.txx" +#include "MEDCouplingFieldDouble.hxx" #include "MEDCouplingFieldTemplate.hxx" #include "MEDCouplingMesh.hxx" +#include "MEDCouplingMemArray.txx" using namespace MEDCoupling; +template class MEDCoupling::MEDCouplingFieldT; + MEDCouplingFieldInt *MEDCouplingFieldInt::New(TypeOfField type, TypeOfTimeDiscretization td) { return new MEDCouplingFieldInt(type,td); @@ -34,109 +39,46 @@ MEDCouplingFieldInt *MEDCouplingFieldInt::New(const MEDCouplingFieldTemplate& ft return new MEDCouplingFieldInt(ft,td); } -void MEDCouplingFieldInt::checkConsistencyLight() const -{ - MEDCouplingField::checkConsistencyLight(); - _time_discr->checkConsistencyLight(); - _type->checkCoherencyBetween(_mesh,getArray()); -} - -std::string MEDCouplingFieldInt::simpleRepr() const -{ - std::ostringstream ret; - ret << "FieldInt with name : \"" << getName() << "\"\n"; - ret << "Description of field is : \"" << getDescription() << "\"\n"; - if(_type) - { ret << "FieldInt space discretization is : " << _type->getStringRepr() << "\n"; } - else - { ret << "FieldInt has no spatial discretization !\n"; } - if(_time_discr) - { ret << "FieldInt time discretization is : " << _time_discr->getStringRepr() << "\n"; } - else - { ret << "FieldInt has no time discretization !\n"; } - ret << "FieldInt nature of field is : \"" << MEDCouplingNatureOfField::GetReprNoThrow(_nature) << "\"\n"; - if(getArray()) - { - if(getArray()->isAllocated()) - { - int nbOfCompo=getArray()->getNumberOfComponents(); - ret << "FieldInt default array has " << nbOfCompo << " components and " << getArray()->getNumberOfTuples() << " tuples.\n"; - ret << "FieldInt default array has following info on components : "; - for(int i=0;igetInfoOnComponent(i) << "\" "; - ret << "\n"; - } - else - { - ret << "Array set but not allocated !\n"; - } - } - if(_mesh) - ret << "Mesh support information :\n__________________________\n" << _mesh->simpleRepr(); - else - ret << "Mesh support information : No mesh set !\n"; - return ret.str(); -} - -void MEDCouplingFieldInt::reprQuickOverview(std::ostream& stream) const -{ -} - -void MEDCouplingFieldInt::setTimeUnit(const std::string& unit) -{ - _time_discr->setTimeUnit(unit); -} - -std::string MEDCouplingFieldInt::getTimeUnit() const -{ - return _time_discr->getTimeUnit(); -} - -void MEDCouplingFieldInt::setTime(double val, int iteration, int order) -{ - _time_discr->setTime(val,iteration,order); -} - -double MEDCouplingFieldInt::getTime(int& iteration, int& order) const -{ - return _time_discr->getTime(iteration,order); -} - -void MEDCouplingFieldInt::setArray(DataArrayInt *array) -{ - _time_discr->setArray(array,this); -} - -const DataArrayInt *MEDCouplingFieldInt::getArray() const +MEDCouplingFieldInt::MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td):MEDCouplingFieldT(type,MEDCouplingTimeDiscretizationInt::New(td)) { - return _time_discr->getArray(); } -DataArrayInt *MEDCouplingFieldInt::getArray() +MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCpy):MEDCouplingFieldT(other,deepCpy) { - return _time_discr->getArray(); } -MEDCouplingFieldInt::MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td):MEDCouplingField(type),_time_discr(MEDCouplingTimeDiscretizationInt::New(td)) +MEDCouplingFieldInt::MEDCouplingFieldInt(NatureOfField n, MEDCouplingTimeDiscretizationInt *td, MEDCouplingFieldDiscretization *type):MEDCouplingFieldT(type,n,td) { } -MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCopy):MEDCouplingField(other,deepCopy),_time_discr(dynamic_cast(other._time_discr->performCopyOrIncrRef(deepCopy))) +/*! + * ** WARINING : This method do not deeply copy neither mesh nor spatial discretization. Only a shallow copy (reference) is done for mesh and spatial discretization ! ** + */ +MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td):MEDCouplingFieldT(ft,MEDCouplingTimeDiscretizationInt::New(td),false) { } -MEDCouplingFieldInt::MEDCouplingFieldInt(NatureOfField n, MEDCouplingTimeDiscretizationInt *td, MEDCouplingFieldDiscretization *type):MEDCouplingField(type,n),_time_discr(td) +MEDCouplingFieldInt *MEDCouplingFieldInt::deepCopy() const { + return cloneWithMesh(true); } -MEDCouplingFieldInt::~MEDCouplingFieldInt() +MEDCouplingFieldInt *MEDCouplingFieldInt::clone(bool recDeepCpy) const { - delete _time_discr; + return new MEDCouplingFieldInt(*this,recDeepCpy); } -/*! - * ** WARINING : This method do not deeply copy neither mesh nor spatial discretization. Only a shallow copy (reference) is done for mesh and spatial discretization ! ** - */ -MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td):MEDCouplingField(ft,false),_time_discr(MEDCouplingTimeDiscretizationInt::New(td)) +MEDCouplingFieldDouble *MEDCouplingFieldInt::convertToDblField() const { + MCAuto tmp(MEDCouplingFieldTemplate::New(*this)); + int t1,t2; + double t0(getTime(t1,t2)); + MCAuto ret(MEDCouplingFieldDouble::New(*tmp,getTimeDiscretization())); + ret->setTime(t0,t1,t2); + if(getArray()) + { + MCAuto arr(getArray()->convertToDblArr()); + ret->setArray(arr); + } + return ret.retn(); }