// 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<int>;
+
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<int>(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<int>(other,deepCopy)
{
- return _time_discr->getTime(iteration,order);
}
-void MEDCouplingFieldInt::setArray(DataArrayInt *array)
+MEDCouplingFieldInt::MEDCouplingFieldInt(NatureOfField n, MEDCouplingTimeDiscretizationInt *td, MEDCouplingFieldDiscretization *type):MEDCouplingFieldT<int>(type,n,td)
{
- MCAuto<DataArrayInt> 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<int>(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<MEDCouplingFieldTemplate> tmp(MEDCouplingFieldTemplate::New(*this));
+ int t1,t2;
+ double t0(getTime(t1,t2));
+ MCAuto<MEDCouplingFieldDouble> ret(MEDCouplingFieldDouble::New(*tmp,getTimeDiscretization()));
+ ret->setTime(t0,t1,t2);
+ if(getArray())
{
- _array=other._array->deepCopy();
+ MCAuto<DataArrayDouble> 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();
}