#include <fstream>
#include <sstream>
+#include <cstring>
+
using namespace MEDCoupling;
using namespace std;
{
_field=MEDCouplingFieldDouble::New(ON_CELLS);
array->alloc(_mesh.getNumberOfFaces(),_numberOfComponents);
- DataArrayInt *desc=DataArrayInt::New();
- DataArrayInt *descI=DataArrayInt::New();
- DataArrayInt *revDesc=DataArrayInt::New();
- DataArrayInt *revDescI=DataArrayInt::New();
+ DataArrayIdType *desc=DataArrayIdType::New();
+ DataArrayIdType *descI=DataArrayIdType::New();
+ DataArrayIdType *revDesc=DataArrayIdType::New();
+ DataArrayIdType *revDescI=DataArrayIdType::New();
MEDCouplingUMesh *m3=mu->buildDescendingConnectivity(desc,descI,revDesc,revDescI);
_field->setMesh(m3);
desc->decrRef();
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
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 ;