X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingFieldInt.cxx;h=f6b6fa2978130f15f38b684ea2e585b498b8c944;hb=b7e277ad50223814bc479c5bd64cf12abe8fc959;hp=06c4447b151d8dffb22950e2c0200bf0b44a2648;hpb=8290d19848d70d320933e1fd944bdb61596e9865;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingFieldInt.cxx b/src/MEDCoupling/MEDCouplingFieldInt.cxx index 06c4447b1..f6b6fa297 100644 --- a/src/MEDCoupling/MEDCouplingFieldInt.cxx +++ b/src/MEDCoupling/MEDCouplingFieldInt.cxx @@ -19,93 +19,65 @@ // Author : Yann Pora (EDF R&D) #include "MEDCouplingFieldInt.hxx" +#include "MEDCouplingFieldT.txx" +#include "MEDCouplingFieldDouble.hxx" +#include "MEDCouplingFieldTemplate.hxx" +#include "MEDCouplingMesh.hxx" using namespace MEDCoupling; +template class MEDCouplingFieldT; + MEDCouplingFieldInt *MEDCouplingFieldInt::New(TypeOfField type, TypeOfTimeDiscretization td) { return new MEDCouplingFieldInt(type,td); } -void MEDCouplingFieldInt::checkConsistencyLight() const -{ - MEDCouplingField::checkConsistencyLight(); - if(_array.isNull()) - throw INTERP_KERNEL::Exception("MEDCouplingFieldInt::checkConsistencyLight : array is null !"); - _type->checkCoherencyBetween(_mesh,getArray()); -} - -std::string MEDCouplingFieldInt::simpleRepr() const -{ - return std::string(); -} - -void MEDCouplingFieldInt::reprQuickOverview(std::ostream& stream) const -{ -} - -void MEDCouplingFieldInt::setTimeUnit(const std::string& unit) +MEDCouplingFieldInt *MEDCouplingFieldInt::New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td) { - _time_discr->setTimeUnit(unit); + return new MEDCouplingFieldInt(ft,td); } -std::string MEDCouplingFieldInt::getTimeUnit() const +MEDCouplingFieldInt::MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td):MEDCouplingFieldT(type,MEDCouplingTimeDiscretizationInt::New(td)) { - 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 +MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCopy):MEDCouplingFieldT(other,deepCopy) { - return _time_discr->getTime(iteration,order); } -void MEDCouplingFieldInt::setArray(DataArrayInt *array) +MEDCouplingFieldInt::MEDCouplingFieldInt(NatureOfField n, MEDCouplingTimeDiscretizationInt *td, MEDCouplingFieldDiscretization *type):MEDCouplingFieldT(type,n,td) { - MCAuto array2(array); - if(array2.isNotNull()) - array2->incrRef(); - _array=array2; - //_time_discr->setArray(array,this); } -const DataArrayInt *MEDCouplingFieldInt::getArray() const +/*! + * ** 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) { - return _array; } -DataArrayInt *MEDCouplingFieldInt::getArray() +MEDCouplingFieldInt *MEDCouplingFieldInt::deepCopy() const { - return _array; + return cloneWithMesh(true); } -MEDCouplingFieldInt::MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td):MEDCouplingField(type),_time_discr(MEDCouplingTimeDiscretization::New(td)) +MEDCouplingFieldInt *MEDCouplingFieldInt::clone(bool recDeepCpy) const { + return new MEDCouplingFieldInt(*this,recDeepCpy); } -MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCopy):MEDCouplingField(other,deepCopy),_time_discr(other._time_discr->performCopyOrIncrRef(deepCopy)) +MEDCouplingFieldDouble *MEDCouplingFieldInt::convertToDblField() const { - if(other._array.isNull()) - return ; - if(deepCopy) + 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()) { - _array=other._array->deepCopy(); + MCAuto arr(getArray()->convertToDblArr()); + ret->setArray(arr); } - else - { - _array=other._array; - } -} - -MEDCouplingFieldInt::MEDCouplingFieldInt(NatureOfField n, MEDCouplingTimeDiscretization *td, MEDCouplingFieldDiscretization *type):MEDCouplingField(type,n),_time_discr(td) -{ -} - -MEDCouplingFieldInt::~MEDCouplingFieldInt() -{ - delete _time_discr; + return ret.retn(); }