Salome HOME
Added functions to set and extract field values
authormichael <michael@localhost.localdomain>
Sat, 12 Dec 2020 13:00:48 +0000 (14:00 +0100)
committermichael <michael@localhost.localdomain>
Sat, 12 Dec 2020 13:00:48 +0000 (14:00 +0100)
CDMATH/mesh/inc/Field.hxx
CDMATH/mesh/src/Field.cxx

index 4323fe0594373942134333546d86e83b04f60890..70cfc8046a8f6c1148cf80ed90a9d20fc3ab65dd 100755 (executable)
@@ -225,6 +225,12 @@ class Field
 
     const double* getValues ( void ) const ;
 
+    void getValues ( Vector myVector ) const ;
+
+    void setValues ( Vector values ) ;
+
+    void setValues ( double * values, int nbValues ) ;
+
     const std::string getName ( void ) const;
 
     const Mesh& getMesh ( void ) const ;
index ad36403692359a2d75f48bca04e1d0d77469db02..2934d6a922de1d4de2019957fa1d4d26f4ee1809 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