]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
On the road
authorAnthony Geay <anthony.geay@edf.fr>
Tue, 16 May 2017 14:13:25 +0000 (16:13 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Tue, 16 May 2017 14:13:25 +0000 (16:13 +0200)
src/MEDCoupling/MEDCouplingFieldT.hxx
src/MEDCoupling/MEDCouplingFieldTemplate.cxx
src/MEDCoupling/MEDCouplingFieldTemplate.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.cxx
src/MEDCoupling/MEDCouplingTimeDiscretization.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.txx

index b9fba16bc8a93ed304fa0aedaeb7261a0641ded2..6abd6f8fb2fe7fd1bb8b15a5b5c45a5c19396dad 100644 (file)
@@ -95,8 +95,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void checkForUnserialization(const std::vector<int>& tinyInfoI, const DataArrayInt *dataInt, const std::vector<typename Traits<T>::ArrayType *>& arrays);
     MEDCOUPLING_EXPORT void finishUnserialization(const std::vector<int>& tinyInfoI, const std::vector<double>& tinyInfoD, const std::vector<std::string>& tinyInfoS);
     MEDCOUPLING_EXPORT void serialize(DataArrayInt *&dataInt, std::vector<typename Traits<T>::ArrayType *>& arrays) const;
+    MEDCOUPLING_EXPORT const MEDCouplingTimeDiscretizationTemplate<T> *timeDiscrSafe() const;
   protected:
-    const MEDCouplingTimeDiscretizationTemplate<T> *timeDiscrSafe() const;
     MEDCouplingTimeDiscretizationTemplate<T> *timeDiscrSafe();
   protected:
     MEDCouplingTimeDiscretizationTemplate<T> *_time_discr;
index 948ef2f646f1d31d39827a256a30532942990904..362b92a7b82304193055f9a2ec301def2429d4b3 100644 (file)
@@ -74,6 +74,10 @@ MEDCouplingFieldTemplate::MEDCouplingFieldTemplate(TypeOfField type):MEDCoupling
 {
 }
 
+MEDCouplingFieldTemplate::MEDCouplingFieldTemplate(const MEDCouplingFieldTemplate& other, bool deepCopy):MEDCouplingField(other,deepCopy)
+{
+}
+
 void MEDCouplingFieldTemplate::checkConsistencyLight() const
 {
   if(_mesh==0)
@@ -181,3 +185,9 @@ void MEDCouplingFieldTemplate::reprQuickOverview(std::ostream& stream) const
       stream << "\nMesh info : " << tmp.substr(0,tmp.find('\n'));
     }
 }
+
+MCAuto<MEDCouplingFieldTemplate> MEDCouplingFieldTemplate::clone(bool recDeepCpy) const
+{
+  MCAuto<MEDCouplingFieldTemplate> ret(new MEDCouplingFieldTemplate(*this,recDeepCpy));
+  return ret;
+}
index 6b27fc21847c3716ce559ffa31e8f2c313aee942..47ba2bdc68c5cbb8111aa7d7616d6812ac7b5b1b 100644 (file)
@@ -16,7 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-// Author : Anthony Geay (CEA/DEN)
+// Author : Anthony Geay (EDF R&D)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
@@ -48,6 +48,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT std::string simpleRepr() const;
     MEDCOUPLING_EXPORT std::string advancedRepr() const;
     MEDCOUPLING_EXPORT void checkConsistencyLight() const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldTemplate> clone(bool recDeepCpy) const;
     //
     MEDCOUPLING_EXPORT void getTinySerializationIntInformation(std::vector<int>& tinyInfo) const;
     MEDCOUPLING_EXPORT void getTinySerializationDbleInformation(std::vector<double>& tinyInfo) const;
@@ -62,6 +63,7 @@ namespace MEDCoupling
     MEDCouplingFieldTemplate(const MEDCouplingFieldFloat& f);
     MEDCouplingFieldTemplate(const MEDCouplingFieldInt& f);
     MEDCouplingFieldTemplate(TypeOfField type);
+    MEDCouplingFieldTemplate(const MEDCouplingFieldTemplate& other, bool deepCopy);
   };
 }
 
index 40f7921bd5f60c6e5a0a8a3b61d0e1c3683045a8..246f9a6bf89ef33077c26c6f7cbc54052392c67e 100644 (file)
@@ -828,7 +828,7 @@ std::string MEDCouplingNoTimeLabel::getStringRepr() const
 {
   std::ostringstream stream;
   stream << REPR;
-  stream << "\nTime unit is : \"" << _time_unit << "\"";
+  stream << "\nTime unit is : \"" << getTimeUnit() << "\"";
   return stream.str();
 }
 
@@ -1217,7 +1217,7 @@ std::string MEDCouplingWithTimeStep::getStringRepr() const
 {
   std::ostringstream stream;
   stream << REPR << " Time is defined by iteration=" << _tk.getIteration() << " order=" << _tk.getOrder() << " and time=" << _tk.getTimeValue() << ".";
-  stream << "\nTime unit is : \"" << _time_unit << "\"";
+  stream << "\nTime unit is : \"" << getTimeUnit() << "\"";
   return stream.str();
 }
 
@@ -1228,8 +1228,8 @@ void MEDCouplingWithTimeStep::synchronizeTimeWith(const MEDCouplingMesh *mesh)
   int it=-1,order=-1;
   double val=mesh->getTime(it,order);
   _tk.setAllInfo(val,it,order);
-  std::string tUnit=mesh->getTimeUnit();
-  _time_unit=tUnit;
+  std::string tUnit(mesh->getTimeUnit());
+  setTimeUnit(tUnit);
 }
 
 void MEDCouplingWithTimeStep::getTinySerializationIntInformation(std::vector<int>& tinyInfo) const
@@ -1705,7 +1705,7 @@ std::string MEDCouplingConstOnTimeInterval::getStringRepr() const
   std::ostringstream stream;
   stream << REPR << " Time interval is defined by :\niteration_start=" << _start.getIteration() << " order_start=" << _start.getOrder() << " and time_start=" << _start.getTimeValue() << "\n";
   stream << "iteration_end=" << _end.getIteration() << " order_end=" << _end.getOrder() << " and end_time=" << _end.getTimeValue() << "\n";
-  stream << "\nTime unit is : \"" << _time_unit << "\"";
+  stream << "\nTime unit is : \"" << getTimeUnit() << "\"";
   return stream.str();
 }
 
@@ -1718,7 +1718,7 @@ void MEDCouplingConstOnTimeInterval::synchronizeTimeWith(const MEDCouplingMesh *
   _start.setAllInfo(val,it,order);
   _end.setAllInfo(val,it,order);
   std::string tUnit(mesh->getTimeUnit());
-  _time_unit=tUnit;
+  setTimeUnit(tUnit);
 }
 
 MEDCouplingTimeDiscretization *MEDCouplingConstOnTimeInterval::performCopyOrIncrRef(bool deepCopy) const
@@ -2090,8 +2090,8 @@ void MEDCouplingTwoTimeSteps::synchronizeTimeWith(const MEDCouplingMesh *mesh)
   double val=mesh->getTime(it,order);
   _start.setAllInfo(val,it,order);
   _end.setAllInfo(val,it,order);
-  std::string tUnit=mesh->getTimeUnit();
-  _time_unit=tUnit;
+  std::string tUnit(mesh->getTimeUnit());
+  setTimeUnit(tUnit);
 }
 
 std::size_t MEDCouplingTwoTimeSteps::getHeapMemorySizeWithoutChildren() const
@@ -2399,7 +2399,7 @@ std::string MEDCouplingLinearTime::getStringRepr() const
   std::ostringstream stream;
   stream << REPR << " Time interval is defined by :\niteration_start=" << _start.getIteration() << " order_start=" << _start.getOrder() << " and time_start=" << _start.getTimeValue() << "\n";
   stream << "iteration_end=" << _end.getIteration() << " order_end=" << _end.getOrder() << " and end_time=" << _end.getTimeValue() << "\n";
-  stream << "Time unit is : \"" << _time_unit << "\"";
+  stream << "Time unit is : \"" << getTimeUnit() << "\"";
   return stream.str();
 }
 
index 0edcddba3d028b88d28dcc90808285788776086b..12829a2ea087c91305268ee980b18a91a1f76606 100644 (file)
@@ -35,24 +35,35 @@ namespace MEDCoupling
   class DataArrayDouble;
   class TimeLabel;
 
+  class TimeHolder
+  {
+  public:
+    MEDCOUPLING_EXPORT std::string getTimeUnit() const { return _time_unit; }
+    MEDCOUPLING_EXPORT void setTimeUnit(const std::string& unit) { _time_unit=unit; }
+    MEDCOUPLING_EXPORT double getTime(int& iteration, int& order) const { return getStartTime(iteration,order); }
+    MEDCOUPLING_EXPORT virtual double getStartTime(int& iteration, int& order) const = 0;
+    void copyTinyAttrFrom(const TimeHolder& other) { _time_unit=other._time_unit; }
+  protected:
+    TimeHolder() { }
+    TimeHolder(const TimeHolder& other):_time_unit(other._time_unit) { }
+  private:
+    std::string _time_unit;
+  };
+
   template<class T>
-  class MEDCouplingTimeDiscretizationTemplate : public TimeLabel, public BigMemoryObject
+  class MEDCouplingTimeDiscretizationTemplate : public TimeLabel, public BigMemoryObject, public TimeHolder
   {
   public:
     MEDCOUPLING_EXPORT void updateTime() const;
     MEDCOUPLING_EXPORT virtual void setArray(typename Traits<T>::ArrayType *array, TimeLabel *owner);
     MEDCOUPLING_EXPORT typename Traits<T>::ArrayType *getArray() { return _array; }
     MEDCOUPLING_EXPORT const typename Traits<T>::ArrayType *getArray() const { return _array; }
-    MEDCOUPLING_EXPORT void setTimeUnit(const std::string& unit) { _time_unit=unit; }
-    MEDCOUPLING_EXPORT std::string getTimeUnit() const { return _time_unit; }
     MEDCOUPLING_EXPORT void setTimeTolerance(double val) { _time_tolerance=val; }
     MEDCOUPLING_EXPORT double getTimeTolerance() const { return _time_tolerance; }
-    MEDCOUPLING_EXPORT double getTime(int& iteration, int& order) const { return getStartTime(iteration,order); }
     MEDCOUPLING_EXPORT void setTime(double time, int iteration, int order) { setStartTime(time,iteration,order); }
     MEDCOUPLING_EXPORT void setIteration(int it) { setStartIteration(it); }
     MEDCOUPLING_EXPORT void setOrder(int order) { setStartOrder(order); }
     MEDCOUPLING_EXPORT void setTimeValue(double val) { setStartTimeValue(val); }
-    MEDCOUPLING_EXPORT virtual double getStartTime(int& iteration, int& order) const = 0;
     MEDCOUPLING_EXPORT virtual void setStartIteration(int it) = 0;
     MEDCOUPLING_EXPORT virtual void setStartOrder(int order) = 0;
     MEDCOUPLING_EXPORT virtual void setStartTime(double time, int iteration, int order) = 0;
@@ -97,7 +108,6 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT MEDCouplingTimeDiscretizationTemplate();
     MEDCOUPLING_EXPORT MEDCouplingTimeDiscretizationTemplate(const MEDCouplingTimeDiscretizationTemplate<T>& other, bool deepCopy);
   protected:
-    std::string _time_unit;
     double _time_tolerance;
     typename Traits<T>::ArrayType *_array;
   protected:
index a53e36db243b5d74bb008c630dfd8e7856497145..54a0b19f0f072e8e1d1e310cde2df1e79d28144c 100644 (file)
@@ -60,14 +60,14 @@ namespace MEDCoupling
   template<class T>
   void MEDCouplingTimeDiscretizationTemplate<T>::copyTinyAttrFrom(const MEDCouplingTimeDiscretizationTemplate<T>& other)
   {
+    TimeHolder::copyTinyAttrFrom(other);
     _time_tolerance=other._time_tolerance;
-    _time_unit=other._time_unit;
   }
   
   template<class T>
   void MEDCouplingTimeDiscretizationTemplate<T>::copyTinyStringsFrom(const MEDCouplingTimeDiscretizationTemplate<T>& other)
   {
-    _time_unit=other._time_unit;
+    TimeHolder::copyTinyAttrFrom(other);
     if(_array && other._array)
       _array->copyStringInfoFrom(*other._array);
   }
@@ -75,7 +75,7 @@ namespace MEDCoupling
   template<class T>
   std::size_t MEDCouplingTimeDiscretizationTemplate<T>::getHeapMemorySizeWithoutChildren() const
   {
-    return _time_unit.capacity();
+    return getTimeUnit().capacity();
   }
   
   template<class T>
@@ -99,9 +99,9 @@ namespace MEDCoupling
   bool MEDCouplingTimeDiscretizationTemplate<T>::areStrictlyCompatible(const MEDCouplingTimeDiscretizationTemplate<T> *other, std::string& reason) const
   {
     std::ostringstream oss; oss.precision(15);
-    if(_time_unit!=other->_time_unit)
+    if(getTimeUnit()!=other->getTimeUnit())
       {
-        oss << "Field discretizations differ : this time unit = \"" << _time_unit << "\" and other time unit = \"" << other->_time_unit << "\" !";
+        oss << "Field discretizations differ : this time unit = \"" << getTimeUnit() << "\" and other time unit = \"" << other->getTimeUnit() << "\" !";
         reason=oss.str();
         return false;
       }
@@ -176,7 +176,7 @@ namespace MEDCoupling
   }
 
   template<class T>
-  MEDCouplingTimeDiscretizationTemplate<T>::MEDCouplingTimeDiscretizationTemplate(const MEDCouplingTimeDiscretizationTemplate<T>& other, bool deepCopy):_time_unit(other._time_unit),_time_tolerance(other._time_tolerance)
+  MEDCouplingTimeDiscretizationTemplate<T>::MEDCouplingTimeDiscretizationTemplate(const MEDCouplingTimeDiscretizationTemplate<T>& other, bool deepCopy):TimeHolder(other),_time_tolerance(other._time_tolerance)
   {
     if(other._array)
       _array=other._array->performCopyOrIncrRef(deepCopy);
@@ -304,7 +304,7 @@ namespace MEDCoupling
   {
     std::ostringstream stream;
     stream << REPR << " Time is defined by iteration=" << _tk.getIteration() << " order=" << _tk.getOrder() << " and time=" << _tk.getTimeValue() << ".";
-    stream << "\nTime unit is : \"" << this->_time_unit << "\"";
+    stream << "\nTime unit is : \"" << this->getTimeUnit() << "\"";
     return stream.str();
   }