Salome HOME
Updated path
[tools/solverlab.git] / CDMATH / mesh / src / Field.cxx
index ad36403692359a2d75f48bca04e1d0d77469db02..b7a4e94c363105167337b89efc0127702074a129 100755 (executable)
@@ -17,6 +17,8 @@
 
 #include <fstream>
 #include <sstream>
+#include <cstring>
+
 using namespace MEDCoupling;
 using namespace std;
 
@@ -682,6 +684,39 @@ Field::getValues ( void ) const
        return _field->getArray()->getConstPointer() ;
 }
 
+//----------------------------------------------------------------------
+void
+Field::getValues ( Vector myVector ) const
+//----------------------------------------------------------------------
+{
+       if( myVector.size() != _field->getNumberOfTuples() * _field->getNumberOfComponents() )
+               throw CdmathException("Error : Field::getValues requires a vector having the same number of component as fiedl values");
+
+    const double * fieldValues = _field->getArray()->getConstPointer();
+       double * vectorValues = myVector.getValues().getValues();
+    
+       memcpy(vectorValues, fieldValues,myVector.size()*sizeof(double)) ;      
+}
+
+void 
+Field::setValues ( Vector myVector )
+//----------------------------------------------------------------------
+{
+       if( myVector.size() != _field->getNumberOfTuples() * _field->getNumberOfComponents() )
+               throw CdmathException("Error : Field::setValues requires a vector having the same number of component as fiedl values");
+               
+       double * vectorValues = myVector.getValues().getValues();
+
+       setValues ( vectorValues, myVector.size() );
+}
+
+void 
+Field::setValues ( double * values, int nbValues )
+{
+       double * fieldValues = _field->getArray()->getPointer() ;
+       memcpy(fieldValues,values,nbValues*sizeof(double)) ;    
+}
+
 //----------------------------------------------------------------------
 const string
 Field::getName ( void ) const
@@ -1073,6 +1108,15 @@ Field::getValuesOnComponent(int compo) const
        return v;
 }
 
+std::vector< double > 
+Field::getFieldValues(int compo) const 
+{
+       std::vector< double > v(getNumberOfElements());
+       for(int i=0;i<getNumberOfElements();i++)
+               v[i]=(*this)(i,compo);
+       return v;
+}
+
 std::ostream& operator<<(std::ostream& out, const Field& field )
 {
        cout << "Field " << field.getName() << " : " << endl ;