X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=CDMATH%2Fmesh%2Fsrc%2FField.cxx;h=b7a4e94c363105167337b89efc0127702074a129;hb=5d4794c32fc8a63c040a9b80c2c01b297d4c09bd;hp=699285d0faab1fbb84ec51cbeb450ce5df66272e;hpb=73fd276900065e404d9220a49f765a3c69f080e0;p=tools%2Fsolverlab.git diff --git a/CDMATH/mesh/src/Field.cxx b/CDMATH/mesh/src/Field.cxx index 699285d..b7a4e94 100755 --- a/CDMATH/mesh/src/Field.cxx +++ b/CDMATH/mesh/src/Field.cxx @@ -17,6 +17,8 @@ #include #include +#include + using namespace MEDCoupling; using namespace std; @@ -68,10 +70,10 @@ void Field::buildFieldMemoryStructure() { _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(); @@ -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