// 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);
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;i<nbOfCompo;i++)
- ret << "\"" << getArray()->getInfoOnComponent(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<int>(type,MEDCouplingTimeDiscretizationInt::New(td))
{
- return _time_discr->getArray();
}
-DataArrayInt *MEDCouplingFieldInt::getArray()
+MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCopy):MEDCouplingFieldT<int>(other,deepCopy)
{
- 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<int>(type,n,td)
{
}
-MEDCouplingFieldInt::MEDCouplingFieldInt(const MEDCouplingFieldInt& other, bool deepCopy):MEDCouplingField(other,deepCopy),_time_discr(dynamic_cast<MEDCouplingTimeDiscretizationInt *>(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<int>(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<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())
+ {
+ MCAuto<DataArrayDouble> arr(getArray()->convertToDblArr());
+ ret->setArray(arr);
+ }
+ return ret.retn();
}