X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingCommon.i;h=e8d5a9db85e5f77ca8b9e03a04022d5f2f4c9c9d;hb=06a1e47785f4fc717910e0ba2fd562a238e5e932;hp=a8036fbba97366da860c0e68de2665d20ff41435;hpb=3bf53b32e90b05848102ebbee3853ed63b66bfba;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingCommon.i b/src/MEDCoupling_Swig/MEDCouplingCommon.i index a8036fbba..e8d5a9db8 100644 --- a/src/MEDCoupling_Swig/MEDCouplingCommon.i +++ b/src/MEDCoupling_Swig/MEDCouplingCommon.i @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D +// Copyright (C) 2017 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -16,9 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// Author : Anthony Geay (CEA/DEN) - -%module MEDCoupling +// Author : Anthony Geay (EDF R&D) #ifdef WITH_DOCSTRINGS %include MEDCoupling_doc.i @@ -38,6 +36,7 @@ #include "MEDCouplingField.hxx" #include "MEDCouplingFieldDouble.hxx" #include "MEDCouplingFieldInt.hxx" +#include "MEDCouplingFieldFloat.hxx" #include "MEDCouplingFieldTemplate.hxx" #include "MEDCouplingGaussLocalization.hxx" #include "MCAuto.hxx" @@ -145,6 +144,18 @@ using namespace INTERP_KERNEL; } //$$$$$$$$$$$$$$$$$$ +//////////////////// +%typemap(out) MEDCoupling::MEDCouplingField* +{ + $result=convertField($1,$owner); +} + +%typemap(out) MEDCouplingField* +{ + $result=convertField($1,$owner); +} +//$$$$$$$$$$$$$$$$$$ + //////////////////// %typemap(out) MEDCoupling::MEDCouplingMultiFields* { @@ -173,6 +184,8 @@ using namespace INTERP_KERNEL; %init %{ import_array(); %} #endif +%init %{ initializeMe(); %} + %feature("autodoc", "1"); %feature("docstring"); @@ -185,6 +198,7 @@ using namespace INTERP_KERNEL; %newobject MEDCoupling::MEDCouplingFieldDouble::MergeFields; %newobject MEDCoupling::MEDCouplingFieldDouble::MeldFields; %newobject MEDCoupling::MEDCouplingFieldDouble::convertToIntField; +%newobject MEDCoupling::MEDCouplingFieldDouble::convertToFloatField; %newobject MEDCoupling::MEDCouplingFieldDouble::doublyContractedProduct; %newobject MEDCoupling::MEDCouplingFieldDouble::determinant; %newobject MEDCoupling::MEDCouplingFieldDouble::eigenValues; @@ -239,6 +253,18 @@ using namespace INTERP_KERNEL; %newobject MEDCoupling::MEDCouplingFieldInt::deepCopy; %newobject MEDCoupling::MEDCouplingFieldInt::clone; %newobject MEDCoupling::MEDCouplingFieldInt::cloneWithMesh; +%newobject MEDCoupling::MEDCouplingFieldInt::buildSubPart; +%newobject MEDCoupling::MEDCouplingFieldInt::buildSubPartRange; +%newobject MEDCoupling::MEDCouplingFieldInt::__getitem__; +%newobject MEDCoupling::MEDCouplingFieldFloat::New; +%newobject MEDCoupling::MEDCouplingFieldFloat::convertToDblField; +%newobject MEDCoupling::MEDCouplingFieldFloat::getArray; +%newobject MEDCoupling::MEDCouplingFieldFloat::deepCopy; +%newobject MEDCoupling::MEDCouplingFieldFloat::clone; +%newobject MEDCoupling::MEDCouplingFieldFloat::cloneWithMesh; +%newobject MEDCoupling::MEDCouplingFieldFloat::buildSubPart; +%newobject MEDCoupling::MEDCouplingFieldFloat::buildSubPartRange; +%newobject MEDCoupling::MEDCouplingFieldFloat::__getitem__; %newobject MEDCoupling::MEDCouplingFieldTemplate::New; %newobject MEDCoupling::MEDCouplingMesh::deepCopy; %newobject MEDCoupling::MEDCouplingMesh::clone; @@ -297,7 +323,9 @@ using namespace INTERP_KERNEL; %newobject MEDCoupling::MEDCouplingUMesh::ComputeSpreadZoneGraduallyFromSeed; %newobject MEDCoupling::MEDCouplingUMesh::buildNewNumberingFromCommNodesFrmt; %newobject MEDCoupling::MEDCouplingUMesh::conformize2D; +%newobject MEDCoupling::MEDCouplingUMesh::conformize3D; %newobject MEDCoupling::MEDCouplingUMesh::colinearize2D; +%newobject MEDCoupling::MEDCouplingUMesh::colinearizeKeepingConform2D; %newobject MEDCoupling::MEDCouplingUMesh::rearrange2ConsecutiveCellTypes; %newobject MEDCoupling::MEDCouplingUMesh::sortCellsInMEDFileFrmt; %newobject MEDCoupling::MEDCouplingUMesh::getRenumArrForMEDFileFrmt; @@ -334,6 +362,7 @@ using namespace INTERP_KERNEL; %newobject MEDCoupling::MEDCouplingUMesh::getBoundingBoxForBBTreeFast; %newobject MEDCoupling::MEDCouplingUMesh::getBoundingBoxForBBTree2DQuadratic; %newobject MEDCoupling::MEDCouplingUMesh::getBoundingBoxForBBTree1DQuadratic; +%newobject MEDCoupling::MEDCouplingUMesh::convertDegeneratedCellsAndRemoveFlatOnes; %newobject MEDCoupling::MEDCouplingUMeshCellByTypeEntry::__iter__; %newobject MEDCoupling::MEDCouplingUMeshCellEntry::__iter__; %newobject MEDCoupling::MEDCoupling1GTUMesh::New; @@ -408,15 +437,12 @@ using namespace INTERP_KERNEL; %newobject MEDCoupling::DenseMatrix::__add__; %newobject MEDCoupling::DenseMatrix::__sub__; %newobject MEDCoupling::DenseMatrix::__mul__; -%newobject MEDCoupling::PartDefinition::New; -%newobject MEDCoupling::PartDefinition::toDAI; -%newobject MEDCoupling::PartDefinition::__add__; -%newobject MEDCoupling::PartDefinition::composeWith; -%newobject MEDCoupling::PartDefinition::tryToSimplify; -%newobject MEDCoupling::DataArrayPartDefinition::New; -%newobject MEDCoupling::SlicePartDefinition::New; %newobject MEDCoupling::MEDCouplingGaussLocalization::localizePtsInRefCooForEachCell; %newobject MEDCoupling::MEDCouplingGaussLocalization::buildRefCell; +%newobject MEDCoupling::MEDCouplingSkyLineArray::BuildFromPolyhedronConn; +%newobject MEDCoupling::MEDCouplingSkyLineArray::getSuperIndexArray; +%newobject MEDCoupling::MEDCouplingSkyLineArray::getIndexArray; +%newobject MEDCoupling::MEDCouplingSkyLineArray::getValuesArray; %feature("unref") MEDCouplingPointSet "$this->decrRef();" %feature("unref") MEDCouplingMesh "$this->decrRef();" @@ -435,6 +461,8 @@ using namespace INTERP_KERNEL; %feature("unref") MEDCouplingFieldDiscretizationGaussNE "$this->decrRef();" %feature("unref") MEDCouplingFieldDiscretizationKriging "$this->decrRef();" %feature("unref") MEDCouplingFieldDouble "$this->decrRef();" +%feature("unref") MEDCouplingFieldFloat "$this->decrRef();" +%feature("unref") MEDCouplingFieldInt "$this->decrRef();" %feature("unref") MEDCouplingMultiFields "$this->decrRef();" %feature("unref") MEDCouplingFieldTemplate "$this->decrRef();" %feature("unref") MEDCouplingMultiFields "$this->decrRef();" @@ -447,9 +475,7 @@ using namespace INTERP_KERNEL; %feature("unref") MEDCouplingDataForGodFather "$this->decrRef();" %feature("unref") MEDCouplingAMRAttribute "$this->decrRef();" %feature("unref") DenseMatrix "$this->decrRef();" -%feature("unref") PartDefinition "$this->decrRef();" -%feature("unref") DataArrayPartDefinition "$this->decrRef();" -%feature("unref") SlicePartDefinition "$this->decrRef();" +%feature("unref") MEDCouplingSkyLineArray "$this->decrRef();" %rename(assign) *::operator=; %ignore MEDCoupling::MEDCouplingGaussLocalization::pushTinySerializationIntInfo; @@ -464,6 +490,18 @@ using namespace INTERP_KERNEL; %include "MEDCouplingRefCountObject.i" %include "MEDCouplingMemArray.i" +%{ + void initializeMe() + {// AGY : here initialization of C++ traits in MEDCouplingDataArrayTypemaps.i for code factorization. Awful, I know, but no other solutions. + SWIGTITraits::TI=SWIGTYPE_p_MEDCoupling__DataArrayDouble; + SWIGTITraits::TI=SWIGTYPE_p_MEDCoupling__DataArrayFloat; + SWIGTITraits::TI=SWIGTYPE_p_MEDCoupling__DataArrayInt; + SWIGTITraits::TI_TUPLE=SWIGTYPE_p_MEDCoupling__DataArrayDoubleTuple; + SWIGTITraits::TI_TUPLE=SWIGTYPE_p_MEDCoupling__DataArrayFloatTuple; + SWIGTITraits::TI_TUPLE=SWIGTYPE_p_MEDCoupling__DataArrayIntTuple; + } +%} + namespace INTERP_KERNEL { /*! @@ -676,43 +714,36 @@ namespace MEDCoupling return ret; } - PyObject *getCellsContainingPoints(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception) + PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception) { - MCAuto elts,eltsIndex; + double val; + DataArrayDouble *a; + DataArrayDoubleTuple *aa; + std::vector bb; + int sw; int spaceDim=self->getSpaceDimension(); - void *da=0; - int res1=SWIG_ConvertPtr(p,&da,SWIGTYPE_p_MEDCoupling__DataArrayDouble, 0 | 0 ); - if (!SWIG_IsOK(res1)) - { - int size; - INTERP_KERNEL::AutoCPtr tmp=convertPyToNewDblArr2(p,&size); - int nbOfPoints=size/spaceDim; - if(size%spaceDim!=0) - { - throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Invalid list length ! Must be a multiple of self.getSpaceDimension() !"); - } - self->getCellsContainingPoints(tmp,nbOfPoints,eps,elts,eltsIndex); - } - else - { - DataArrayDouble *da2=reinterpret_cast< DataArrayDouble * >(da); - if(!da2) - throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Not null DataArrayDouble instance expected !"); - da2->checkAllocated(); - int size=da2->getNumberOfTuples(); - int nbOfCompo=da2->getNumberOfComponents(); - if(nbOfCompo!=spaceDim) - { - throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Invalid DataArrayDouble nb of components ! Expected same as self.getSpaceDimension() !"); - } - self->getCellsContainingPoints(da2->getConstPointer(),size,eps,elts,eltsIndex); - } + const char msg[]="Python wrap of MEDCouplingMesh::getCellsContainingPointsLinearPartOnlyOnNonDynType : "; + const double *pos=convertObjToPossibleCpp5_Safe(p,sw,val,a,aa,bb,msg,nbOfPoints,spaceDim,true); + MCAuto elts,eltsIndex; + self->getCellsContainingPointsLinearPartOnlyOnNonDynType(pos,nbOfPoints,eps,elts,eltsIndex); PyObject *ret=PyTuple_New(2); PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(elts.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(eltsIndex.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); return ret; } + PyObject *getCellsContainingPoints(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception) + { + auto getCellsContainingPointsFunc=[self](const double *a, int b,double c, MCAuto& d, MCAuto& e) { self->getCellsContainingPoints(a,b,c,d,e); }; + return Mesh_getCellsContainingPointsLike(p,eps,self,getCellsContainingPointsFunc); + } + + PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception) + { + auto getCellsContainingPointsFunc=[self](const double *a, int b,double c, MCAuto& d, MCAuto& e) { self->getCellsContainingPointsLinearPartOnlyOnNonDynType(a,b,c,d,e); }; + return Mesh_getCellsContainingPointsLike(p,eps,self,getCellsContainingPointsFunc); + } + PyObject *getCellsContainingPoint(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception) { double val; @@ -746,7 +777,7 @@ namespace MEDCoupling { int sw,sz(-1); int v0; std::vector v1; - const int *ids(convertObjToPossibleCpp1_Safe(li,sw,sz,v0,v1)); + const int *ids(convertIntStarLikePyObjToCppIntStar(li,sw,sz,v0,v1)); self->renumberCells(ids,check); } @@ -828,7 +859,7 @@ namespace MEDCoupling int spaceDim=self->getSpaceDimension(); INTERP_KERNEL::AutoPtr tmp=new double[2*spaceDim]; self->getBoundingBox(tmp); - PyObject *ret=convertDblArrToPyListOfTuple(tmp,2,spaceDim); + PyObject *ret=convertDblArrToPyListOfTuple(tmp,2,spaceDim); return ret; } @@ -848,7 +879,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingMesh *ret=self->buildPart(tmp,tmp+szArr); if(sw==3)//DataArrayInt { @@ -866,7 +897,7 @@ namespace MEDCoupling int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; DataArrayInt *arr=0; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingMesh *ret=self->buildPartAndReduceNodes(tmp,tmp+szArr,arr); if(sw==3)//DataArrayInt { @@ -928,12 +959,12 @@ namespace MEDCoupling return self->checkTypeConsistencyAndContig(code,idsPerType); } - PyObject *splitProfilePerType(const DataArrayInt *profile) const throw(INTERP_KERNEL::Exception) + PyObject *splitProfilePerType(const DataArrayInt *profile, bool smartPflKiller=true) const throw(INTERP_KERNEL::Exception) { std::vector code; std::vector idsInPflPerType; std::vector idsPerType; - self->splitProfilePerType(profile,code,idsInPflPerType,idsPerType); + self->splitProfilePerType(profile,code,idsInPflPerType,idsPerType,smartPflKiller); PyObject *ret=PyTuple_New(3); // if(code.size()%3!=0) @@ -1047,14 +1078,6 @@ namespace MEDCoupling self->resizeForUnserialization(tinyInfo,a1,a2,littleStrings); } - PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception) - {// put an empty dict in input to say to __new__ to call __init__... - PyObject *ret(PyTuple_New(1)); - PyObject *ret0(PyDict_New()); - PyTuple_SetItem(ret,0,ret0); - return ret; - } - PyObject *__getstate__() const throw(INTERP_KERNEL::Exception) { PyObject *ret0(MEDCoupling_MEDCouplingMesh_getTinySerializationInformation(self)); @@ -1186,24 +1209,129 @@ namespace MEDCoupling class MEDCouplingSkyLineArray { - public: - MEDCouplingSkyLineArray(); - MEDCouplingSkyLineArray( const MEDCouplingSkyLineArray &myArray ); - MEDCouplingSkyLineArray( DataArrayInt* index, DataArrayInt* value ); - MEDCouplingSkyLineArray( const std::vector& index, const std::vector& value ); + public: + static MEDCouplingSkyLineArray *BuildFromPolyhedronConn( const DataArrayInt* c, const DataArrayInt* cI ) throw(INTERP_KERNEL::Exception); void set( DataArrayInt* index, DataArrayInt* value ); + void set3( DataArrayInt* superIndex, DataArrayInt* index, DataArrayInt* value ); + + int getSuperNumberOf() const; int getNumberOf() const; int getLength() const; - DataArrayInt* getIndexArray() const; - DataArrayInt* getValueArray() const; - %extend + + void deletePack(const int i, const int j) throw(INTERP_KERNEL::Exception); + + void deleteSimplePack(const int i) throw(INTERP_KERNEL::Exception); + void deleteSimplePacks(const DataArrayInt* idx) throw(INTERP_KERNEL::Exception); + + %extend + { + MEDCouplingSkyLineArray() throw(INTERP_KERNEL::Exception) + { + return MEDCouplingSkyLineArray::New(); + } + + MEDCouplingSkyLineArray( const std::vector& index, const std::vector& value) throw(INTERP_KERNEL::Exception) + { + return MEDCouplingSkyLineArray::New(index, value); + } + + MEDCouplingSkyLineArray( DataArrayInt* index, DataArrayInt* value ) throw(INTERP_KERNEL::Exception) + { + return MEDCouplingSkyLineArray::New(index, value); + } + + MEDCouplingSkyLineArray( const MEDCouplingSkyLineArray & other ) throw(INTERP_KERNEL::Exception) + { + return MEDCouplingSkyLineArray::New(other); + } + + std::string __str__() const throw(INTERP_KERNEL::Exception) + { + return self->simpleRepr(); + } + + DataArrayInt *getSuperIndexArray() const + { + DataArrayInt *ret(self->getSuperIndexArray()); + if(ret) + ret->incrRef(); + return ret; + } + + DataArrayInt *getIndexArray() const + { + DataArrayInt *ret(self->getIndexArray()); + if(ret) + ret->incrRef(); + return ret; + } + + DataArrayInt *getValuesArray() const + { + DataArrayInt *ret(self->getValuesArray()); + if(ret) + ret->incrRef(); + return ret; + } + + PyObject *getSimplePackSafe(int absolutePackId) const throw(INTERP_KERNEL::Exception) + { + std::vector ret; + self->getSimplePackSafe(absolutePackId,ret); + return convertIntArrToPyList2(ret); + } + + PyObject *findPackIds(PyObject *superPackIndices, PyObject *pack) const throw(INTERP_KERNEL::Exception) + { + std::vector vpack, vspIdx, out; + + convertPyToNewIntArr3(superPackIndices,vspIdx); + convertPyToNewIntArr3(pack,vpack); + + self->findPackIds(vspIdx, vpack.data(), vpack.data()+vpack.size(), out); + return convertIntArrToPyList2(out); + } + + void pushBackPack(const int i, PyObject *pack) throw(INTERP_KERNEL::Exception) + { + std::vector vpack; + convertPyToNewIntArr3(pack,vpack); + self->pushBackPack(i,vpack.data(), vpack.data()+vpack.size()); + } + + void replaceSimplePack(const int idx, PyObject *pack) throw(INTERP_KERNEL::Exception) + { + std::vector vpack; + convertPyToNewIntArr3(pack,vpack); + self->replaceSimplePack(idx, vpack.data(), vpack.data()+vpack.size()); + } + + void replaceSimplePacks(const DataArrayInt* idx, PyObject *listePacks) throw(INTERP_KERNEL::Exception) + { + std::vector packs; + convertFromPyObjVectorOfObj(listePacks,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",packs); + self->replaceSimplePacks(idx, packs); + } + + void replacePack(const int superIdx, const int idx, PyObject *pack) throw(INTERP_KERNEL::Exception) + { + std::vector vpack; + convertPyToNewIntArr3(pack,vpack); + self->replacePack(superIdx, idx, vpack.data(), vpack.data()+vpack.size()); + } + + PyObject *convertToPolyhedronConn() const throw(INTERP_KERNEL::Exception) { - std::string __str__() const throw(INTERP_KERNEL::Exception) - { - return self->simpleRepr(); - } - } + MCAuto d0=DataArrayInt::New(); + MCAuto d1=DataArrayInt::New(); + self->convertToPolyhedronConn(d0,d1); + PyObject *ret=PyTuple_New(2); + PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + return ret; + } + } }; } @@ -1245,6 +1373,7 @@ namespace MEDCoupling virtual void renumberNodesWithOffsetInConn(int offset) throw(INTERP_KERNEL::Exception); virtual bool areAllNodesFetched() const throw(INTERP_KERNEL::Exception); virtual MEDCouplingFieldDouble *computeDiameterField() const throw(INTERP_KERNEL::Exception); + virtual void invertOrientationOfAllCells() throw(INTERP_KERNEL::Exception); %extend { std::string __str__() const throw(INTERP_KERNEL::Exception) @@ -1284,7 +1413,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingPointSet *ret=self->buildPartOfMySelf(tmp,tmp+szArr,keepCoords); if(sw==3)//DataArrayInt { @@ -1301,7 +1430,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingPointSet *ret=self->buildPartOfMySelfNode(tmp,tmp+szArr,fullyIn); if(sw==3)//DataArrayInt { @@ -1318,7 +1447,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingPointSet *ret=self->buildPartOfMySelfKeepCoords(tmp,tmp+szArr); if(sw==3)//DataArrayInt { @@ -1341,7 +1470,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); MEDCouplingPointSet *ret=self->buildFacePartOfMySelfNode(tmp,tmp+szArr,fullyIn); if(sw==3)//DataArrayInt { @@ -1358,7 +1487,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberNodes(tmp,newNbOfNodes); } @@ -1366,7 +1495,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberNodesCenter(tmp,newNbOfNodes); } @@ -1378,8 +1507,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 1st paramater for point."; - const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 1st parameter for point."; + const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 2nd parameter for vector."; const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); std::vector nodes; @@ -1397,8 +1526,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 1st paramater for point."; - const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 1st parameter for point."; + const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 2nd parameter for vector."; const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); std::vector nodes; @@ -1483,7 +1612,7 @@ namespace MEDCoupling std::vector multiVal; std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; - convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -1499,7 +1628,7 @@ namespace MEDCoupling virtual PyObject *findCommonCells(int compType, int startCellId=0) const throw(INTERP_KERNEL::Exception) { - DataArrayInt *v0=0,*v1=0; + DataArrayInt *v0(nullptr),*v1(nullptr); self->findCommonCells(compType,startCellId,v0,v1); PyObject *res = PyList_New(2); PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(v0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); @@ -1510,8 +1639,17 @@ namespace MEDCoupling virtual void renumberNodesInConn(PyObject *li) throw(INTERP_KERNEL::Exception) { - void *da=0; - int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 | 0 ); + void *da(nullptr); + { + int res1(SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__MapII, 0 | 0 )); + if(SWIG_IsOK(res1)) + { + MapII *da2(reinterpret_cast(da)); + self->renumberNodesInConn(da2->data()); + return ; + } + } + int res1(SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 | 0 )); if (!SWIG_IsOK(res1)) { int size; @@ -1520,7 +1658,7 @@ namespace MEDCoupling } else { - DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da); + DataArrayInt *da2(reinterpret_cast< DataArrayInt * >(da)); if(!da2) throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !"); da2->checkAllocated(); @@ -1540,11 +1678,11 @@ namespace MEDCoupling virtual DataArrayInt *fillCellIdsToKeepFromNodeIds(PyObject *li, bool fullyIn) const { - DataArrayInt *ret=0; + DataArrayInt *ret(nullptr); // int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->fillCellIdsToKeepFromNodeIds(tmp,tmp+szArr,fullyIn,ret); return ret; } @@ -1601,7 +1739,7 @@ namespace MEDCoupling std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; int nbc=self->getNumberOfCells(); - convertObjToPossibleCpp2(listOrDataArrI,nbc,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(listOrDataArrI,nbc,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -1813,7 +1951,9 @@ namespace MEDCoupling MEDCouplingUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception); //tools DataArrayInt *conformize2D(double eps) throw(INTERP_KERNEL::Exception); + DataArrayInt *conformize3D(double eps) throw(INTERP_KERNEL::Exception); DataArrayInt *colinearize2D(double eps) throw(INTERP_KERNEL::Exception); + DataArrayInt *colinearizeKeepingConform2D(double eps) throw(INTERP_KERNEL::Exception); void shiftNodeNumbersInConn(int delta) throw(INTERP_KERNEL::Exception); std::vector getQuadraticStatus() const throw(INTERP_KERNEL::Exception); DataArrayInt *findCellIdsOnBoundary() const throw(INTERP_KERNEL::Exception); @@ -1837,6 +1977,7 @@ namespace MEDCoupling void convertQuadraticCellsToLinear() throw(INTERP_KERNEL::Exception); DataArrayInt *convertLinearCellsToQuadratic(int conversionType=0) throw(INTERP_KERNEL::Exception); void convertDegeneratedCells() throw(INTERP_KERNEL::Exception); + DataArrayInt *convertDegeneratedCellsAndRemoveFlatOnes() throw(INTERP_KERNEL::Exception); bool areOnlySimplexCells() const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *getEdgeRatioField() const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *getAspectRatioField() const throw(INTERP_KERNEL::Exception); @@ -1848,10 +1989,10 @@ namespace MEDCoupling DataArrayInt *findAndCorrectBadOriented3DExtrudedCells() throw(INTERP_KERNEL::Exception); DataArrayInt *findAndCorrectBadOriented3DCells() throw(INTERP_KERNEL::Exception); MEDCoupling::MEDCoupling1GTUMesh *convertIntoSingleGeoTypeMesh() const throw(INTERP_KERNEL::Exception); + MEDCouplingSkyLineArray *generateGraph() const throw(INTERP_KERNEL::Exception); DataArrayInt *convertNodalConnectivityToStaticGeoTypeMesh() const throw(INTERP_KERNEL::Exception); DataArrayInt *buildUnionOf2DMesh() const throw(INTERP_KERNEL::Exception); DataArrayInt *buildUnionOf3DMesh() const throw(INTERP_KERNEL::Exception); - MEDCouplingSkyLineArray *generateGraph() const throw(INTERP_KERNEL::Exception); DataArrayInt *orderConsecutiveCells1D() const throw(INTERP_KERNEL::Exception); DataArrayDouble *getBoundingBoxForBBTreeFast() const throw(INTERP_KERNEL::Exception); DataArrayDouble *getBoundingBoxForBBTree2DQuadratic(double arcDetEps=1e-12) const throw(INTERP_KERNEL::Exception); @@ -1874,12 +2015,6 @@ namespace MEDCoupling return MEDCouplingUMesh::New(meshName,meshDim); } - // serialization - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingUMesh"); - } - std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -1921,7 +2056,7 @@ namespace MEDCoupling std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; int nbc=self->getNumberOfCells(); - convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -1979,7 +2114,7 @@ namespace MEDCoupling std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; int nbc=self->getNumberOfCells(); - convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2038,7 +2173,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); if(size>szArr) { std::ostringstream oss; oss << "Wrap of MEDCouplingUMesh::insertNextCell : request of connectivity with length " << size << " whereas the length of input is " << szArr << " !"; @@ -2051,7 +2186,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->insertNextCell(type,szArr,tmp); } @@ -2074,7 +2209,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *seedPtr=convertObjToPossibleCpp1_Safe(seed,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *seedPtr=convertIntStarLikePyObjToCppIntStar(seed,sw,szArr,iTypppArr,stdvecTyyppArr); int nbOfDepthPeelingPerformed=0; DataArrayInt *ret0=MEDCouplingUMesh::ComputeSpreadZoneGraduallyFromSeed(seedPtr,seedPtr+szArr,arrIn,arrIndxIn,nbOfDepthPeeling,nbOfDepthPeelingPerformed); PyObject *res=PyTuple_New(2); @@ -2225,7 +2360,7 @@ namespace MEDCoupling std::vector multiVal; std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; - convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2246,7 +2381,7 @@ namespace MEDCoupling std::vector multiVal; std::pair > slic; MEDCoupling::DataArrayInt *daIntTyypp=0; - convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2260,6 +2395,14 @@ namespace MEDCoupling } } + void attractSeg3MidPtsAroundNodes(double ratio, PyObject *nodeIds) throw(INTERP_KERNEL::Exception) + { + int szArr,sw,iTypppArr; + std::vector stdvecTyyppArr; + const int *nodeIdsPtr(convertIntStarLikePyObjToCppIntStar(nodeIds,sw,szArr,iTypppArr,stdvecTyyppArr)); + self->attractSeg3MidPtsAroundNodes(ratio,nodeIdsPtr,nodeIdsPtr+szArr); + } + PyObject *getLevArrPerCellTypes(PyObject *li) const throw(INTERP_KERNEL::Exception) { int sz; @@ -2343,7 +2486,7 @@ namespace MEDCoupling MEDCoupling::DataArrayInt *daIntTyypp=0; if(!arrIndx) throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : null pointer as arrIndex !"); - convertObjToPossibleCpp2(li,arrIndx->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,arrIndx->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2367,7 +2510,7 @@ namespace MEDCoupling MEDCoupling::DataArrayInt *daIntTyypp=0; if(!arrIndxIn) throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : null pointer as arrIndxIn !"); - convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2409,13 +2552,12 @@ namespace MEDCoupling if(!PySlice_Check(slic)) throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : the first param is not a pyslice !"); Py_ssize_t strt=2,stp=2,step=2; - PySliceObject *sliC=reinterpret_cast(slic); if(!arrIndxIn) throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : last array is null !"); arrIndxIn->checkAllocated(); if(arrIndxIn->getNumberOfComponents()!=1) throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : number of components of last argument must be equal to one !"); - GetIndicesOfSlice(sliC,arrIndxIn->getNumberOfTuples(),&strt,&stp,&step,"ExtractFromIndexedArraysSlice (wrap) : Invalid slice regarding nb of elements !"); + GetIndicesOfSlice(slic,arrIndxIn->getNumberOfTuples(),&strt,&stp,&step,"ExtractFromIndexedArraysSlice (wrap) : Invalid slice regarding nb of elements !"); DataArrayInt *arrOut=0,*arrIndexOut=0; MEDCouplingUMesh::ExtractFromIndexedArraysSlice(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut); PyObject *ret=PyTuple_New(2); @@ -2436,7 +2578,7 @@ namespace MEDCoupling MEDCoupling::DataArrayInt *daIntTyypp=0; if(!arrIndxIn) throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : null pointer as arrIndex !"); - convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2473,7 +2615,7 @@ namespace MEDCoupling MEDCoupling::DataArrayInt *daIntTyypp=0; if(!arrIndxIn) throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : null pointer as arrIndex !"); - convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); + convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp); switch(sw) { case 1: @@ -2546,7 +2688,7 @@ namespace MEDCoupling double vals[6]; std::copy(vec,vec+3,vals); std::copy(pos,pos+3,vals+3); - return convertDblArrToPyListOfTuple(vals,3,2); + return convertDblArrToPyListOfTuple(vals,3,2); } static MEDCouplingUMesh *MergeUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception) @@ -2596,6 +2738,19 @@ namespace MEDCoupling return ret; } + PyObject *explodeIntoEdges() const throw(INTERP_KERNEL::Exception) + { + MCAuto desc,descIndex,revDesc,revDescIndx; + MCAuto m(self->explodeIntoEdges(desc,descIndex,revDesc,revDescIndx)); + PyObject *ret=PyTuple_New(5); + PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(m.retn()),SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(desc.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(descIndex.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,3,SWIG_NewPointerObj(SWIG_as_voidptr(revDesc.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,4,SWIG_NewPointerObj(SWIG_as_voidptr(revDescIndx.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + return ret; + } + PyObject *explodeMeshIntoMicroEdges() const throw(INTERP_KERNEL::Exception) { MCAuto d0=DataArrayInt::New(); @@ -2663,6 +2818,16 @@ namespace MEDCoupling PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(neighborsIdx),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); return ret; } + + PyObject *computeEnlargedNeighborsOfNodes() const throw(INTERP_KERNEL::Exception) + { + MCAuto neighbors,neighborsIdx; + self->computeEnlargedNeighborsOfNodes(neighbors,neighborsIdx); + PyObject *ret=PyTuple_New(2); + PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(neighbors.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(neighborsIdx.retn()),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); + return ret; + } PyObject *computeCellNeighborhoodFromNodesOne(const DataArrayInt *nodeNeigh, const DataArrayInt *nodeNeighI) const throw(INTERP_KERNEL::Exception) { @@ -2782,8 +2947,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 1st paramater for origin."; - const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 1st parameter for origin."; + const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 2nd parameter for vector."; const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); // @@ -2805,8 +2970,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 1st paramater for origin."; - const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 1st parameter for origin."; + const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 2nd parameter for vector."; const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); // @@ -2825,8 +2990,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 1st paramater for origin."; - const char msg2[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 1st parameter for origin."; + const char msg2[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 2nd parameter for vector."; const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,3,true); const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,3,true); MCAuto ret(self->clipSingle3DCellByPlane(orig,vect,eps)); @@ -2843,8 +3008,8 @@ namespace MEDCoupling DataArrayDoubleTuple *aa,*aa2; std::vector bb,bb2; int sw; - const char msg[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 1st paramater for origin."; - const char msg2[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 1st parameter for origin."; + const char msg2[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 2nd parameter for vector."; const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); return self->getCellIdsCrossingPlane(orig,vect,eps); @@ -2857,7 +3022,7 @@ namespace MEDCoupling std::vector pos2; DataArrayInt *pos3=0; DataArrayIntTuple *pos4=0; - convertObjToPossibleCpp1(li,sw,pos1,pos2,pos3,pos4); + convertIntStarLikePyObjToCpp(li,sw,pos1,pos2,pos3,pos4); switch(sw) { case 1: @@ -2880,7 +3045,7 @@ namespace MEDCoupling default: throw INTERP_KERNEL::Exception("MEDCouplingUMesh::convertToPolyTypes : unexpected input array type recognized !"); } - } + } } void convertAllToPoly(); void convertExtrudedPolyhedra() throw(INTERP_KERNEL::Exception); @@ -2916,11 +3081,6 @@ namespace MEDCoupling { return MEDCouplingMappedExtrudedMesh::New(); } - - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingMappedExtrudedMesh"); - } std::string __str__() const throw(INTERP_KERNEL::Exception) { @@ -2975,7 +3135,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->insertNextCell(tmp,tmp+szArr); } @@ -3026,11 +3186,6 @@ namespace MEDCoupling return MEDCoupling1SGTUMesh::New(m); } - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCoupling1SGTUMesh"); - } - std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -3098,11 +3253,6 @@ namespace MEDCoupling return MEDCoupling1DGTUMesh::New(m); } - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCoupling1DGTUMesh"); - } - std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -3222,7 +3372,7 @@ namespace MEDCoupling // int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp4=convertObjToPossibleCpp1_Safe(st,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp4=convertIntStarLikePyObjToCppIntStar(st,sw,szArr,iTypppArr,stdvecTyyppArr); std::vector tmp5(tmp4,tmp4+szArr); // return MEDCouplingStructuredMesh::BuildExplicitIdsFrom(tmp5,inp); @@ -3280,7 +3430,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); return MEDCouplingStructuredMesh::Build1GTNodalConnectivity(tmp,tmp+szArr); } @@ -3288,7 +3438,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp(convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr)); + const int *tmp(convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr)); return MEDCouplingStructuredMesh::Build1GTNodalConnectivityOfSubLevelMesh(tmp,tmp+szArr); } @@ -3342,10 +3492,10 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); int szArr2,sw2,iTypppArr2; std::vector stdvecTyyppArr2; - const int *tmp2=convertObjToPossibleCpp1_Safe(st,sw2,szArr2,iTypppArr2,stdvecTyyppArr2); + const int *tmp2=convertIntStarLikePyObjToCppIntStar(st,sw2,szArr2,iTypppArr2,stdvecTyyppArr2); std::vector tmp3(tmp2,tmp2+szArr2); std::vector< std::pair > partCompactFormat; bool ret0=MEDCouplingStructuredMesh::IsPartStructured(tmp,tmp+szArr,tmp3,partCompactFormat); @@ -3447,11 +3597,6 @@ namespace MEDCoupling { return MEDCouplingCMesh::New(meshName); } - // serialization - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingCMesh"); - } std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -3491,10 +3636,6 @@ namespace MEDCoupling { return MEDCouplingCurveLinearMesh::New(meshName); } - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingCurveLinearMesh"); - } std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -3516,7 +3657,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(gridStruct,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(gridStruct,sw,szArr,iTypppArr,stdvecTyyppArr); self->setNodeGridStructure(tmp,tmp+szArr); } } @@ -3556,7 +3697,7 @@ namespace MEDCoupling const double *originPtr(0),*dxyzPtr(0); int sw,sz,val0; std::vector bb0; - nodeStrctPtr=convertObjToPossibleCpp1_Safe(nodeStrct,sw,sz,val0,bb0); + nodeStrctPtr=convertIntStarLikePyObjToCppIntStar(nodeStrct,sw,sz,val0,bb0); // double val,val2; std::vector bb,bb2; @@ -3572,16 +3713,11 @@ namespace MEDCoupling return MEDCoupling_MEDCouplingIMesh_New__SWIG_1(meshName,spaceDim,nodeStrct,origin,dxyz); } - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingIMesh"); - } - void setNodeStruct(PyObject *nodeStrct) throw(INTERP_KERNEL::Exception) { int sw,sz,val0; std::vector bb0; - const int *nodeStrctPtr(convertObjToPossibleCpp1_Safe(nodeStrct,sw,sz,val0,bb0)); + const int *nodeStrctPtr(convertIntStarLikePyObjToCppIntStar(nodeStrct,sw,sz,val0,bb0)); self->setNodeStruct(nodeStrctPtr,nodeStrctPtr+sz); } @@ -3668,8 +3804,6 @@ namespace MEDCoupling public: virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception); virtual bool areCompatibleForMerge(const MEDCouplingField *other) const throw(INTERP_KERNEL::Exception); - virtual bool isEqual(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception); - virtual bool isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception); virtual void copyTinyStringsFrom(const MEDCouplingField *other) throw(INTERP_KERNEL::Exception); void setMesh(const MEDCoupling::MEDCouplingMesh *mesh) throw(INTERP_KERNEL::Exception); void setName(const char *name) throw(INTERP_KERNEL::Exception); @@ -3715,18 +3849,6 @@ namespace MEDCoupling return convertIntArrToPyList3(ret); } - PyObject *isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception) - { - std::string ret1; - bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1); - PyObject *ret=PyTuple_New(2); - PyObject *ret0Py=ret0?Py_True:Py_False; - Py_XINCREF(ret0Py); - PyTuple_SetItem(ret,0,ret0Py); - PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); - return ret; - } - PyObject *buildSubMeshData(PyObject *li) const throw(INTERP_KERNEL::Exception) { DataArrayInt *ret1=0; @@ -3774,7 +3896,7 @@ namespace MEDCoupling { int sw,sz(-1); int v0; std::vector v1; - const int *cellIdsBg(convertObjToPossibleCpp1_Safe(cellIds,sw,sz,v0,v1)); + const int *cellIdsBg(convertIntStarLikePyObjToCppIntStar(cellIds,sw,sz,v0,v1)); return self->computeTupleIdsToSelectFromCellIds(cellIdsBg,cellIdsBg+sz); } @@ -3824,10 +3946,13 @@ namespace MEDCoupling { public: static MEDCouplingFieldTemplate *New(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception); + static MEDCouplingFieldTemplate *New(const MEDCouplingFieldFloat& f) throw(INTERP_KERNEL::Exception); static MEDCouplingFieldTemplate *New(const MEDCouplingFieldInt& f) throw(INTERP_KERNEL::Exception); static MEDCouplingFieldTemplate *New(TypeOfField type); std::string simpleRepr() const throw(INTERP_KERNEL::Exception); std::string advancedRepr() const throw(INTERP_KERNEL::Exception); + bool isEqual(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception); + bool isEqualWithoutConsideringStr(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception); %extend { MEDCouplingFieldTemplate(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception) @@ -3835,6 +3960,11 @@ namespace MEDCoupling return MEDCouplingFieldTemplate::New(f); } + MEDCouplingFieldTemplate(const MEDCouplingFieldFloat& f) throw(INTERP_KERNEL::Exception) + { + return MEDCouplingFieldTemplate::New(f); + } + MEDCouplingFieldTemplate(const MEDCouplingFieldInt& f) throw(INTERP_KERNEL::Exception) { return MEDCouplingFieldTemplate::New(f); @@ -3856,16 +3986,45 @@ namespace MEDCoupling self->reprQuickOverview(oss); return oss.str(); } + + PyObject *isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception) + { + std::string ret1; + bool ret0=self->isEqualIfNotWhy(other,meshPrec,ret1); + PyObject *ret=PyTuple_New(2); + PyObject *ret0Py=ret0?Py_True:Py_False; + Py_XINCREF(ret0Py); + PyTuple_SetItem(ret,0,ret0Py); + PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); + return ret; + } } }; + + template + class MEDCouplingFieldT : public MEDCoupling::MEDCouplingField + { + public: + TypeOfTimeDiscretization getTimeDiscretization() const throw(INTERP_KERNEL::Exception); + protected: + MEDCouplingFieldT(); + ~MEDCouplingFieldT(); + }; + + %template(MEDCouplingFieldTdouble) MEDCoupling::MEDCouplingFieldT; + %template(MEDCouplingFieldTfloat) MEDCoupling::MEDCouplingFieldT; + %template(MEDCouplingFieldTint) MEDCoupling::MEDCouplingFieldT; class MEDCouplingFieldInt; + class MEDCouplingFieldFloat; - class MEDCouplingFieldDouble : public MEDCoupling::MEDCouplingField + class MEDCouplingFieldDouble : public MEDCouplingFieldT { public: static MEDCouplingFieldDouble *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME); static MEDCouplingFieldDouble *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME); + bool isEqual(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception); + bool isEqualWithoutConsideringStr(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception); void setTimeUnit(const std::string& unit); std::string getTimeUnit() const; void synchronizeTimeWithSupport() throw(INTERP_KERNEL::Exception); @@ -3875,13 +4034,13 @@ namespace MEDCoupling std::string advancedRepr() const throw(INTERP_KERNEL::Exception); std::string writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception); MEDCouplingFieldInt *convertToIntField() const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldFloat *convertToFloatField() const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *clone(bool recDeepCpy) const; MEDCouplingFieldDouble *cloneWithMesh(bool recDeepCpy) const; MEDCouplingFieldDouble *deepCopy() const; MEDCouplingFieldDouble *buildNewTimeReprFromThis(TypeOfTimeDiscretization td, bool deepCopy) const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *nodeToCellDiscretization() const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *cellToNodeDiscretization() const throw(INTERP_KERNEL::Exception); - TypeOfTimeDiscretization getTimeDiscretization() const throw(INTERP_KERNEL::Exception); double getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception); double getIJK(int cellId, int nodeIdInCell, int compoId) const throw(INTERP_KERNEL::Exception); void synchronizeTimeWithMesh() throw(INTERP_KERNEL::Exception); @@ -3937,12 +4096,12 @@ namespace MEDCoupling double getMinValue() const throw(INTERP_KERNEL::Exception); double getAverageValue() const throw(INTERP_KERNEL::Exception); double norm2() const throw(INTERP_KERNEL::Exception); - double normMax() const throw(INTERP_KERNEL::Exception); //do not put a default value to isWAbs because confusion in python with overloaded getWeightedAverageValue method double getWeightedAverageValue(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception); double integral(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception); double normL1(int compId) const throw(INTERP_KERNEL::Exception); double normL2(int compId) const throw(INTERP_KERNEL::Exception); + double normMax(int compId) const throw(INTERP_KERNEL::Exception); DataArrayInt *findIdsInRange(double vmin, double vmax) const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception); static MEDCouplingFieldDouble *MergeFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception); @@ -3982,6 +4141,18 @@ namespace MEDCoupling self->reprQuickOverview(oss); return oss.str(); } + + PyObject *isEqualIfNotWhy(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception) + { + std::string ret1; + bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1); + PyObject *ret=PyTuple_New(2); + PyObject *ret0Py=ret0?Py_True:Py_False; + Py_XINCREF(ret0Py); + PyTuple_SetItem(ret,0,ret0Py); + PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); + return ret; + } MEDCouplingFieldDouble *voronoize(double eps) const throw(INTERP_KERNEL::Exception) { @@ -4070,7 +4241,7 @@ namespace MEDCoupling int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr res=new double[sz]; self->getValueOn(spaceLoc,res); - return convertDblArrToPyList(res,sz); + return convertDblArrToPyList(res,sz); } PyObject *getValueOnPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception) @@ -4078,7 +4249,7 @@ namespace MEDCoupling int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr res=new double[sz]; self->getValueOnPos(i,j,k,res); - return convertDblArrToPyList(res,sz); + return convertDblArrToPyList(res,sz); } DataArrayDouble *getValueOnMulti(PyObject *locs) const throw(INTERP_KERNEL::Exception) @@ -4112,7 +4283,7 @@ namespace MEDCoupling int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr res=new double[sz]; self->getValueOn(spaceLoc,time,res); - return convertDblArrToPyList(res,sz); + return convertDblArrToPyList(res,sz); } void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception) @@ -4164,41 +4335,48 @@ namespace MEDCoupling int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr tmp=new double[sz]; self->accumulate(tmp); - return convertDblArrToPyList(tmp,sz); + return convertDblArrToPyList(tmp,sz); } PyObject *integral(bool isWAbs) const throw(INTERP_KERNEL::Exception) { int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr tmp=new double[sz]; self->integral(isWAbs,tmp); - return convertDblArrToPyList(tmp,sz); + return convertDblArrToPyList(tmp,sz); } PyObject *getWeightedAverageValue(bool isWAbs=true) const throw(INTERP_KERNEL::Exception) { int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr tmp=new double[sz]; self->getWeightedAverageValue(tmp,isWAbs); - return convertDblArrToPyList(tmp,sz); + return convertDblArrToPyList(tmp,sz); } PyObject *normL1() const throw(INTERP_KERNEL::Exception) { int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr tmp=new double[sz]; self->normL1(tmp); - return convertDblArrToPyList(tmp,sz); + return convertDblArrToPyList(tmp,sz); } PyObject *normL2() const throw(INTERP_KERNEL::Exception) { int sz=self->getNumberOfComponents(); INTERP_KERNEL::AutoPtr tmp=new double[sz]; self->normL2(tmp); - return convertDblArrToPyList(tmp,sz); + return convertDblArrToPyList(tmp,sz); + } + PyObject *normMax() const throw(INTERP_KERNEL::Exception) + { + int sz=self->getNumberOfComponents(); + INTERP_KERNEL::AutoPtr tmp=new double[sz]; + self->normMax(tmp); + return convertDblArrToPyList(tmp,sz); } void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception) { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberCells(tmp,check); } @@ -4206,7 +4384,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberCellsWithoutMesh(tmp,check); } @@ -4214,7 +4392,7 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberNodes(tmp,eps); } @@ -4222,125 +4400,18 @@ namespace MEDCoupling { int szArr,sw,iTypppArr; std::vector stdvecTyyppArr; - const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr); + const int *tmp=convertIntStarLikePyObjToCppIntStar(li,sw,szArr,iTypppArr,stdvecTyyppArr); self->renumberNodesWithoutMesh(tmp,newNbOfNodes,eps); } MEDCouplingFieldDouble *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception) { - int sw; - int singleVal; - std::vector multiVal; - std::pair > slic; - MEDCoupling::DataArrayInt *daIntTyypp=0; - const MEDCouplingMesh *mesh=self->getMesh(); - if(!mesh) - throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : field lies on a null mesh !"); - int nbc=mesh->getNumberOfCells(); - convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp); - switch(sw) - { - case 1: - { - if(singleVal>=nbc) - { - std::ostringstream oss; - oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !"; - throw INTERP_KERNEL::Exception(oss.str().c_str()); - } - if(singleVal>=0) - return self->buildSubPart(&singleVal,&singleVal+1); - else - { - if(nbc+singleVal>0) - { - int tmp=nbc+singleVal; - return self->buildSubPart(&tmp,&tmp+1); - } - else - { - std::ostringstream oss; - oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !"; - throw INTERP_KERNEL::Exception(oss.str().c_str()); - } - } - } - case 2: - { - return self->buildSubPart(&multiVal[0],&multiVal[0]+multiVal.size()); - } - case 3: - { - return self->buildSubPartRange(slic.first,slic.second.first,slic.second.second); - } - case 4: - { - if(!daIntTyypp) - throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : null instance has been given in input !"); - daIntTyypp->checkAllocated(); - return self->buildSubPart(daIntTyypp->begin(),daIntTyypp->end()); - } - default: - throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : unrecognized type in input ! Possibilities are : int, list or tuple of int DataArrayInt instance !"); - } + return fieldT_buildSubPart(self,li); } MEDCouplingFieldDouble *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception) { - const char msg[]="MEDCouplingFieldDouble::__getitem__ : invalid call Available API are : \n-myField[dataArrayInt]\n-myField[slice]\n-myField[pythonListOfCellIds]\n-myField[integer]\n-myField[dataArrayInt,1]\n-myField[slice,1]\n-myField[pythonListOfCellIds,1]\n-myField[integer,1]\n"; - if(PyTuple_Check(li)) - { - Py_ssize_t sz=PyTuple_Size(li); - if(sz!=2) - throw INTERP_KERNEL::Exception(msg); - PyObject *elt0=PyTuple_GetItem(li,0),*elt1=PyTuple_GetItem(li,1); - int sw; - int singleVal; - std::vector multiVal; - std::pair > slic; - MEDCoupling::DataArrayInt *daIntTyypp=0; - if(!self->getArray()) - throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::__getitem__ : no array set on field to deduce number of components !"); - try - { convertObjToPossibleCpp2(elt1,self->getArray()->getNumberOfComponents(),sw,singleVal,multiVal,slic,daIntTyypp); } - catch(INTERP_KERNEL::Exception& e) - { std::ostringstream oss; oss << "MEDCouplingFieldDouble::__getitem__ : invalid type in 2nd parameter (compo) !" << e.what(); throw INTERP_KERNEL::Exception(oss.str().c_str()); } - MCAuto ret0=MEDCoupling_MEDCouplingFieldDouble_buildSubPart(self,elt0); - DataArrayDouble *ret0Arr=ret0->getArray(); - if(!ret0Arr) - throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::__getitem__ : no array exists to apply restriction on component on it !"); - switch(sw) - { - case 1: - { - std::vector v2(1,singleVal); - MCAuto aarr(ret0Arr->keepSelectedComponents(v2)); - ret0->setArray(aarr); - return ret0.retn(); - } - case 2: - { - MCAuto aarr(ret0Arr->keepSelectedComponents(multiVal)); - ret0->setArray(aarr); - return ret0.retn(); - } - case 3: - { - int nbOfComp=DataArray::GetNumberOfItemGivenBESRelative(slic.first,slic.second.first,slic.second.second,"MEDCouplingFieldDouble::__getitem__ : invalid range in 2nd parameter (components) !"); - std::vector v2(nbOfComp); - for(int i=0;i aarr(ret0Arr->keepSelectedComponents(v2)); - ret0->setArray(aarr); - return ret0.retn(); - } - default: - throw INTERP_KERNEL::Exception(msg); - } - - } - else - return MEDCoupling_MEDCouplingFieldDouble_buildSubPart(self,li); + return fieldT__getitem__(self,li); } PyObject *getMaxValue2() const throw(INTERP_KERNEL::Exception) @@ -4385,8 +4456,8 @@ namespace MEDCoupling std::vector bb,bb2; int sw; int spaceDim=3; - const char msg[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 1st paramater for origin."; - const char msg2[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 2nd paramater for vector."; + const char msg[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 1st parameter for origin."; + const char msg2[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 2nd parameter for vector."; const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true); const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true); // @@ -4423,7 +4494,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4505,7 +4576,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4579,7 +4650,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4655,7 +4726,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4721,7 +4792,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4787,7 +4858,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4853,7 +4924,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4921,7 +4992,7 @@ namespace MEDCoupling DataArrayDoubleTuple *aa; std::vector bb; int sw; - convertObjToPossibleCpp5(obj,sw,val,a,aa,bb); + convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb); switch(sw) { case 1: @@ -4979,156 +5050,22 @@ namespace MEDCoupling PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception) { - std::vector a0; - std::vector a1; - std::vector a2; - self->getTinySerializationDbleInformation(a0); - self->getTinySerializationIntInformation(a1); - self->getTinySerializationStrInformation(a2); - // - PyObject *ret(PyTuple_New(3)); - PyTuple_SetItem(ret,0,convertDblArrToPyList2(a0)); - PyTuple_SetItem(ret,1,convertIntArrToPyList2(a1)); - int sz(a2.size()); - PyObject *ret2(PyList_New(sz)); - { - for(int i=0;i(self); } PyObject *serialize() const throw(INTERP_KERNEL::Exception) { - DataArrayInt *ret0(0); - std::vector ret1; - self->serialize(ret0,ret1); - if(ret0) - ret0->incrRef(); - std::size_t sz(ret1.size()); - PyObject *ret(PyTuple_New(2)); - PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 )); - PyObject *ret1Py(PyList_New(sz)); - for(std::size_t i=0;iincrRef(); - PyList_SetItem(ret1Py,i,SWIG_NewPointerObj(SWIG_as_voidptr(ret1[i]),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 )); - } - PyTuple_SetItem(ret,1,ret1Py); - return ret; - } - - static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception) - { - static const char MSG[]="MEDCouplingFieldDouble.__new__ : the args in input is expected to be a tuple !"; - if(!PyTuple_Check(args)) - throw INTERP_KERNEL::Exception(MSG); - PyObject *builtinsd(PyEval_GetBuiltins());//borrowed - PyObject *obj(PyDict_GetItemString(builtinsd,"object"));//borrowed - PyObject *selfMeth(PyObject_GetAttrString(obj,"__new__")); - // - PyObject *tmp0(PyTuple_New(1)); - PyTuple_SetItem(tmp0,0,cls); Py_XINCREF(cls); - PyObject *instance(PyObject_CallObject(selfMeth,tmp0)); - Py_DECREF(tmp0); - Py_DECREF(selfMeth); - if(PyTuple_Size(args)==2 && PyDict_Check(PyTuple_GetItem(args,1)) && PyDict_Size(PyTuple_GetItem(args,1))==1 ) - {// NOT general case. only true if in unpickeling context ! call __init__. Because for all other cases, __init__ is called right after __new__ ! - PyObject *initMeth(PyObject_GetAttrString(instance,"__init__")); - //// - PyObject *a(PyInt_FromLong(0)); - PyObject *uniqueElt(PyDict_GetItem(PyTuple_GetItem(args,1),a)); - Py_DECREF(a); - if(!uniqueElt) - throw INTERP_KERNEL::Exception(MSG); - if(!PyTuple_Check(uniqueElt) || PyTuple_Size(uniqueElt)!=2) - throw INTERP_KERNEL::Exception(MSG); - PyObject *tmp2(PyObject_CallObject(initMeth,uniqueElt)); - Py_XDECREF(tmp2); - //// - Py_DECREF(initMeth); - } - return instance; - } - - PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception) - {// put an empty dict in input to say to __new__ to call __init__... - self->checkConsistencyLight(); - PyObject *ret(PyTuple_New(1)); - PyObject *ret0(PyDict_New()); - { - PyObject *a(PyInt_FromLong(0)),*b(PyInt_FromLong(self->getTypeOfField())),*c(PyInt_FromLong(self->getTimeDiscretization())); - PyObject *d(PyTuple_New(2)); PyTuple_SetItem(d,0,b); PyTuple_SetItem(d,1,c); - PyDict_SetItem(ret0,a,d); - Py_DECREF(a); Py_DECREF(d); - } - PyTuple_SetItem(ret,0,ret0); - return ret; + return field_serialize(self); } PyObject *__getstate__() const throw(INTERP_KERNEL::Exception) { - self->checkConsistencyLight(); - PyObject *ret0(MEDCoupling_MEDCouplingFieldDouble_getTinySerializationInformation(self)); - PyObject *ret1(MEDCoupling_MEDCouplingFieldDouble_serialize(self)); - const MEDCouplingMesh *mesh(self->getMesh()); - if(mesh) - mesh->incrRef(); - PyObject *ret(PyTuple_New(3)); - PyTuple_SetItem(ret,0,ret0); - PyTuple_SetItem(ret,1,ret1); - PyTuple_SetItem(ret,2,convertMesh(const_cast(mesh),SWIG_POINTER_OWN | 0 )); - return ret; + return field__getstate__(self,MEDCoupling_MEDCouplingFieldDouble_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldDouble_serialize); } void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception) { - static const char MSG[]="MEDCouplingFieldDouble.__setstate__ : expected input is a tuple of size 3 !"; - if(!PyTuple_Check(inp)) - throw INTERP_KERNEL::Exception(MSG); - int sz(PyTuple_Size(inp)); - if(sz!=3) - throw INTERP_KERNEL::Exception(MSG); - // mesh - PyObject *elt2(PyTuple_GetItem(inp,2)); - void *argp=0; - int status(SWIG_ConvertPtr(elt2,&argp,SWIGTYPE_p_MEDCoupling__MEDCouplingMesh,0|0)); - if(!SWIG_IsOK(status)) - throw INTERP_KERNEL::Exception(MSG); - self->setMesh(reinterpret_cast< const MEDCouplingUMesh * >(argp)); - // - PyObject *elt0(PyTuple_GetItem(inp,0)); - PyObject *elt1(PyTuple_GetItem(inp,1)); - std::vector a0; - std::vector a1; - std::vector a2; - DataArrayInt *b0(0); - std::vectorb1; - { - if(!PyTuple_Check(elt0) && PyTuple_Size(elt0)!=3) - throw INTERP_KERNEL::Exception(MSG); - PyObject *a0py(PyTuple_GetItem(elt0,0)),*a1py(PyTuple_GetItem(elt0,1)),*a2py(PyTuple_GetItem(elt0,2)); - int tmp(-1); - fillArrayWithPyListDbl3(a0py,tmp,a0); - convertPyToNewIntArr3(a1py,a1); - fillStringVector(a2py,a2); - } - { - if(!PyTuple_Check(elt1) && PyTuple_Size(elt1)!=2) - throw INTERP_KERNEL::Exception(MSG); - PyObject *b0py(PyTuple_GetItem(elt1,0)),*b1py(PyTuple_GetItem(elt1,1)); - void *argp(0); - int status(SWIG_ConvertPtr(b0py,&argp,SWIGTYPE_p_MEDCoupling__DataArrayInt,0|0)); - if(!SWIG_IsOK(status)) - throw INTERP_KERNEL::Exception(MSG); - b0=reinterpret_cast(argp); - convertFromPyObjVectorOfObj(b1py,SWIGTYPE_p_MEDCoupling__DataArrayDouble,"DataArrayDouble",b1); - } - self->checkForUnserialization(a1,b0,b1); - // useless here to call resizeForUnserialization because arrays are well resized. - self->finishUnserialization(a1,a0,a2); + field__setstate__(self,inp); } } }; @@ -5290,11 +5227,13 @@ namespace MEDCoupling } }; - class MEDCouplingFieldInt : public MEDCouplingField + class MEDCouplingFieldInt : public MEDCouplingFieldT { public: static MEDCouplingFieldInt *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME); static MEDCouplingFieldInt *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME); + bool isEqual(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception); + bool isEqualWithoutConsideringStr(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception); void setTimeUnit(const std::string& unit) throw(INTERP_KERNEL::Exception); std::string getTimeUnit() const throw(INTERP_KERNEL::Exception); void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception); @@ -5303,6 +5242,7 @@ namespace MEDCoupling MEDCouplingFieldInt *clone(bool recDeepCpy) const throw(INTERP_KERNEL::Exception); MEDCouplingFieldInt *cloneWithMesh(bool recDeepCpy) const throw(INTERP_KERNEL::Exception); MEDCouplingFieldDouble *convertToDblField() const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldInt *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception); %extend { MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME) { @@ -5314,6 +5254,18 @@ namespace MEDCoupling return MEDCouplingFieldInt::New(ft,td); } + PyObject *isEqualIfNotWhy(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception) + { + std::string ret1; + bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1); + PyObject *ret=PyTuple_New(2); + PyObject *ret0Py=ret0?Py_True:Py_False; + Py_XINCREF(ret0Py); + PyTuple_SetItem(ret,0,ret0Py); + PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); + return ret; + } + std::string __str__() const throw(INTERP_KERNEL::Exception) { return self->simpleRepr(); @@ -5326,13 +5278,23 @@ namespace MEDCoupling return oss.str(); } + MEDCouplingFieldInt *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception) + { + return fieldT_buildSubPart(self,li); + } + + MEDCouplingFieldInt *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception) + { + return fieldT__getitem__(self,li); + } + DataArrayInt *getArray() throw(INTERP_KERNEL::Exception) - { - DataArrayInt *ret=self->getArray(); - if(ret) - ret->incrRef(); - return ret; - } + { + DataArrayInt *ret=self->getArray(); + if(ret) + ret->incrRef(); + return ret; + } PyObject *getTime() throw(INTERP_KERNEL::Exception) { @@ -5344,6 +5306,128 @@ namespace MEDCoupling PyList_SetItem(res,2,SWIG_From_int(tmp2)); return res; } + + PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception) + { + return field_getTinySerializationInformation(self); + } + + PyObject *serialize() const throw(INTERP_KERNEL::Exception) + { + return field_serialize(self); + } + + PyObject *__getstate__() const throw(INTERP_KERNEL::Exception) + { + return field__getstate__(self,MEDCoupling_MEDCouplingFieldInt_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldInt_serialize); + } + + void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception) + { + field__setstate__(self,inp); + } + } + }; + + class MEDCouplingFieldFloat : public MEDCouplingFieldT + { + public: + static MEDCouplingFieldFloat *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME); + static MEDCouplingFieldFloat *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME); + bool isEqual(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception); + bool isEqualWithoutConsideringStr(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception); + void setTimeUnit(const std::string& unit) throw(INTERP_KERNEL::Exception); + std::string getTimeUnit() const throw(INTERP_KERNEL::Exception); + void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception); + void setArray(DataArrayFloat *array) throw(INTERP_KERNEL::Exception); + MEDCouplingFieldFloat *deepCopy() const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldFloat *clone(bool recDeepCpy) const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldFloat *cloneWithMesh(bool recDeepCpy) const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldDouble *convertToDblField() const throw(INTERP_KERNEL::Exception); + MEDCouplingFieldFloat *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception); + %extend { + MEDCouplingFieldFloat(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME) + { + return MEDCouplingFieldFloat::New(type,td); + } + + MEDCouplingFieldFloat(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME) + { + return MEDCouplingFieldFloat::New(ft,td); + } + + PyObject *isEqualIfNotWhy(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception) + { + std::string ret1; + bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1); + PyObject *ret=PyTuple_New(2); + PyObject *ret0Py=ret0?Py_True:Py_False; + Py_XINCREF(ret0Py); + PyTuple_SetItem(ret,0,ret0Py); + PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); + return ret; + } + + std::string __str__() const throw(INTERP_KERNEL::Exception) + { + return self->simpleRepr(); + } + + std::string __repr__() const throw(INTERP_KERNEL::Exception) + { + std::ostringstream oss; + self->reprQuickOverview(oss); + return oss.str(); + } + + MEDCouplingFieldFloat *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception) + { + return fieldT_buildSubPart(self,li); + } + + MEDCouplingFieldFloat *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception) + { + return fieldT__getitem__(self,li); + } + + DataArrayFloat *getArray() throw(INTERP_KERNEL::Exception) + { + DataArrayFloat *ret=self->getArray(); + if(ret) + ret->incrRef(); + return ret; + } + + PyObject *getTime() throw(INTERP_KERNEL::Exception) + { + int tmp1,tmp2; + double tmp0=self->getTime(tmp1,tmp2); + PyObject *res = PyList_New(3); + PyList_SetItem(res,0,SWIG_From_double(tmp0)); + PyList_SetItem(res,1,SWIG_From_int(tmp1)); + PyList_SetItem(res,2,SWIG_From_int(tmp2)); + return res; + } + + PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception) + { + return field_getTinySerializationInformation(self); + } + + PyObject *serialize() const throw(INTERP_KERNEL::Exception) + { + return field_serialize(self); + } + + PyObject *__getstate__() const throw(INTERP_KERNEL::Exception) + { + return field__getstate__(self,MEDCoupling_MEDCouplingFieldFloat_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldFloat_serialize); + } + + void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception) + { + field__setstate__(self,inp); + } } }; @@ -5715,7 +5799,7 @@ namespace MEDCoupling const double *originPtr(0),*dxyzPtr(0); int sw,sz,val0; std::vector bb0; - nodeStrctPtr=convertObjToPossibleCpp1_Safe(nodeStrct,sw,sz,val0,bb0); + nodeStrctPtr=convertIntStarLikePyObjToCppIntStar(nodeStrct,sw,sz,val0,bb0); // double val,val2; std::vector bb,bb2; @@ -5941,113 +6025,41 @@ namespace MEDCoupling #endif } }; - - class PartDefinition : public RefCountObject, public TimeLabel - { - public: - static PartDefinition *New(int start, int stop, int step) throw(INTERP_KERNEL::Exception); - static PartDefinition *New(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception); - virtual DataArrayInt *toDAI() const throw(INTERP_KERNEL::Exception); - virtual int getNumberOfElems() const throw(INTERP_KERNEL::Exception); - virtual std::string getRepr() const throw(INTERP_KERNEL::Exception); - virtual PartDefinition *composeWith(const PartDefinition *other) const throw(INTERP_KERNEL::Exception); - virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception); - virtual PartDefinition *tryToSimplify() const throw(INTERP_KERNEL::Exception); - %extend - { - virtual PartDefinition *__add__(const PartDefinition& other) const throw(INTERP_KERNEL::Exception) - { - return (*self)+other; - } - - virtual PyObject *isEqual(const PartDefinition *other) const throw(INTERP_KERNEL::Exception) - { - std::string ret1; - bool ret0(self->isEqual(other,ret1)); - PyObject *ret=PyTuple_New(2); - PyObject *ret0Py=ret0?Py_True:Py_False; - Py_XINCREF(ret0Py); - PyTuple_SetItem(ret,0,ret0Py); - PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str())); - return ret; - } - - virtual PyObject *deepCopy() const throw(INTERP_KERNEL::Exception) - { - return convertPartDefinition(self->deepCopy(),SWIG_POINTER_OWN | 0); - } - } - protected: - virtual ~PartDefinition(); - }; - - class DataArrayPartDefinition : public PartDefinition - { - public: - static DataArrayPartDefinition *New(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception); - %extend - { - DataArrayPartDefinition(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception) - { - return DataArrayPartDefinition::New(listOfIds); - } - - std::string __str__() const throw(INTERP_KERNEL::Exception) - { - return self->getRepr(); - } - - std::string __repr__() const throw(INTERP_KERNEL::Exception) - { - std::ostringstream oss; oss << "DataArrayPartDefinition C++ instance at " << self << "." << std::endl; - oss << self->getRepr(); - return oss.str(); - } - } - protected: - virtual ~DataArrayPartDefinition(); - }; - - class SlicePartDefinition : public PartDefinition - { - public: - static SlicePartDefinition *New(int start, int stop, int step) throw(INTERP_KERNEL::Exception); - int getEffectiveStop() const throw(INTERP_KERNEL::Exception); - %extend - { - SlicePartDefinition(int start, int stop, int step) throw(INTERP_KERNEL::Exception) - { - return SlicePartDefinition::New(start,stop,step); - } - - PyObject *getSlice() const throw(INTERP_KERNEL::Exception) - { - int a,b,c; - self->getSlice(a,b,c); - return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(c)); - } - - std::string __str__() const throw(INTERP_KERNEL::Exception) - { - return self->getRepr(); - } - - std::string __repr__() const throw(INTERP_KERNEL::Exception) - { - std::ostringstream oss; oss << "SlicePartDefinition C++ instance at " << self << "." << std::endl; - oss << self->getRepr(); - return oss.str(); - } - } - protected: - virtual ~SlicePartDefinition(); - }; } +%pythoncode %{ +def MEDCouplingUMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCouplingUMesh,((),(self.__getstate__()),)) +def MEDCouplingCMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCouplingCMesh,((),(self.__getstate__()),)) +def MEDCouplingIMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCouplingIMesh,((),(self.__getstate__()),)) +def MEDCouplingMappedExtrudedMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCouplingMappedExtrudedMesh,((),(self.__getstate__()),)) +def MEDCouplingCurveLinearMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCouplingCurveLinearMesh,((),(self.__getstate__()),)) +def MEDCoupling1SGTUMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCoupling1SGTUMesh,((),(self.__getstate__()),)) +def MEDCoupling1DGTUMeshReduce(self): + return MEDCouplingStdReduceFunct,(MEDCoupling1DGTUMesh,((),(self.__getstate__()),)) +def MEDCouplingFieldDoubleReduce(self): + self.checkConsistencyLight() + d=(self.getTypeOfField(),self.getTimeDiscretization()) + return MEDCouplingStdReduceFunct,(MEDCouplingFieldDouble,(d,(self.__getstate__()),)) +def MEDCouplingFieldIntReduce(self): + self.checkConsistencyLight() + d=(self.getTypeOfField(),self.getTimeDiscretization()) + return MEDCouplingStdReduceFunct,(MEDCouplingFieldInt,(d,(self.__getstate__()),)) +def MEDCouplingFieldFloatReduce(self): + self.checkConsistencyLight() + d=(self.getTypeOfField(),self.getTimeDiscretization()) + return MEDCouplingStdReduceFunct,(MEDCouplingFieldFloat,(d,(self.__getstate__()),)) +%} + %pythoncode %{ import os __filename=os.environ.get('PYTHONSTARTUP') if __filename and os.path.isfile(__filename): - execfile(__filename) + exec(open(__filename).read()) pass %}