Salome HOME
Merge branch 'master' of ssh://git.salome-platform.org/tools/medcoupling
[tools/medcoupling.git] / src / MEDCoupling / MEDCouplingFieldInt.cxx
index 06c4447b151d8dffb22950e2c0200bf0b44a2648..f6b6fa2978130f15f38b684ea2e585b498b8c944 100644 (file)
 // 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();
 }