X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FParaMEDMEM_Swig%2FParaMEDMEMCommon.i;h=290da2a8a008e39bbe4787b4bec22efad6ced024;hb=aafcf704892f03308a84407e898d9e8b19496a1c;hp=995df1d24618357dbe1d5608cfca19b854c479a7;hpb=ffb8188e28b2b60ee207a8644286821bc4e8fcdc;p=tools%2Fmedcoupling.git diff --git a/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i b/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i index 995df1d24..290da2a8a 100644 --- a/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i +++ b/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2020 CEA/DEN, EDF R&D +// Copyright (C) 2017-2022 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 @@ -30,11 +30,15 @@ #include "InterpKernelDEC.hxx" #include "NonCoincidentDEC.hxx" #include "StructuredCoincidentDEC.hxx" +#include "OverlapDEC.hxx" #include "ParaMESH.hxx" #include "ParaFIELD.hxx" -#include "ICoCoMEDField.hxx" +#include "ICoCoMEDDoubleField.hxx" +#include "ICoCoMEDIntField.hxx" #include "ComponentTopology.hxx" #include "ParaUMesh.hxx" +#include "ParaSkyLineArray.hxx" +#include "ParaDataArray.hxx" using namespace INTERP_KERNEL; using namespace MEDCoupling; @@ -52,12 +56,29 @@ using namespace ICoCo; %include "DisjointDEC.hxx" %include "InterpKernelDEC.hxx" %include "StructuredCoincidentDEC.hxx" +%include "OverlapDEC.hxx" -%include "ICoCoField.hxx" -%rename(ICoCoMEDField) ICoCo::MEDField; -%include "ICoCoMEDField.hxx" - +%newobject MEDCoupling::ParaUMesh::New; +%newobject MEDCoupling::ParaUMesh::getMesh; +%newobject MEDCoupling::ParaUMesh::getGlobalCellIds; +%newobject MEDCoupling::ParaUMesh::getGlobalNodeIds; %newobject MEDCoupling::ParaUMesh::getCellIdsLyingOnNodes; +%newobject MEDCoupling::ParaUMesh::redistributeCells; +%newobject MEDCoupling::ParaUMesh::redistributeCellField; +%newobject MEDCoupling::ParaUMesh::redistributeNodeField; +%newobject MEDCoupling::ParaDataArrayInt32::New; +%newobject MEDCoupling::ParaDataArrayInt32::buildComplement; +%newobject MEDCoupling::ParaDataArrayInt64::New; +%newobject MEDCoupling::ParaDataArrayInt64::buildComplement; +%newobject MEDCoupling::ParaSkyLineArray::New; +%newobject MEDCoupling::ParaSkyLineArray::equiRedistribute; +%newobject MEDCoupling::ParaSkyLineArray::getSkyLineArray; +%newobject MEDCoupling::ParaSkyLineArray::getGlobalIdsArray; + +%feature("unref") ParaSkyLineArray "$this->decrRef();" +%feature("unref") ParaUMesh "$this->decrRef();" +%feature("unref") ParaDataArrayInt32 "$this->decrRef();" +%feature("unref") ParaDataArrayInt64 "$this->decrRef();" %nodefaultctor; @@ -121,14 +142,64 @@ namespace MEDCoupling int reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) const; int allReduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) const; + %extend + { + PyObject *allGatherArrays(const DataArrayIdType *array) const + { + std::vector< MCAuto > ret; + self->allGatherArrays(MPI_COMM_WORLD,array,ret); + return convertFromVectorAutoObjToPyObj(ret,SWIGTITraits::TI); + } + + PyObject *allToAllArrays(PyObject *arrays) const + { + std::vector< DataArrayIdType * > arraysIn; + std::vector< MCAuto > arrayOut; + convertFromPyObjVectorOfObj(arrays,SWIGTITraits::TI,"DataArrayIdType",arraysIn); + std::vector< MCAuto > arraysIn2(FromVecToVecAuto(arraysIn)); + self->allToAllArrays(MPI_COMM_WORLD,arraysIn2,arrayOut); + return convertFromVectorAutoObjToPyObj(arrayOut,SWIGTITraits::TI); + } + } }; - class ParaUMesh + class ParaUMesh : public RefCountObject { public: - ParaUMesh(MEDCouplingUMesh *mesh, DataArrayIdType *globalCellIds, DataArrayIdType *globalNodeIds); + static ParaUMesh *New(MEDCouplingUMesh *mesh, DataArrayIdType *globalCellIds, DataArrayIdType *globalNodeIds); + ParaUMesh *redistributeCells(const DataArrayIdType *globalCellIds) const; + DataArrayIdType *redistributeCellField(const DataArrayIdType *globalCellIds, const DataArrayIdType *fieldValueToRed) const; + DataArrayDouble *redistributeCellField(const DataArrayIdType *globalCellIds, const DataArrayDouble *fieldValueToRed) const; + DataArrayIdType *redistributeNodeField(const DataArrayIdType *globalCellIds, const DataArrayIdType *fieldValueToRed) const; + DataArrayDouble *redistributeNodeField(const DataArrayIdType *globalCellIds, const DataArrayDouble *fieldValueToRed) const; %extend { + ParaUMesh(MEDCouplingUMesh *mesh, DataArrayIdType *globalCellIds, DataArrayIdType *globalNodeIds) + { + return ParaUMesh::New(mesh,globalCellIds,globalNodeIds); + } + + MEDCouplingUMesh *getMesh() + { + MEDCouplingUMesh *ret(self->getMesh()); + if(ret) ret->incrRef(); + return ret; + } + + DataArrayIdType *getGlobalCellIds() + { + DataArrayIdType *ret(self->getGlobalCellIds()); + if(ret) ret->incrRef(); + return ret; + } + + DataArrayIdType *getGlobalNodeIds() + { + DataArrayIdType *ret(self->getGlobalNodeIds()); + if(ret) ret->incrRef(); + return ret; + } + DataArrayIdType *getCellIdsLyingOnNodes(const DataArrayIdType *globalNodeIds, bool fullyIn) const { MCAuto ret(self->getCellIdsLyingOnNodes(globalNodeIds,fullyIn)); @@ -136,6 +207,73 @@ namespace MEDCoupling } } }; + + class ParaDataArray : public RefCountObject + { + }; + + class ParaDataArrayInt32 : public ParaDataArray + { + public: + static ParaDataArrayInt32 *New(DataArrayInt32 *seqDa); + DataArrayIdType *buildComplement(int nbOfElems) const; + %extend + { + ParaDataArrayInt32(DataArrayInt32 *seqDa) + { + return ParaDataArrayInt32::New(seqDa); + } + } + }; + + class ParaDataArrayInt64 : public ParaDataArray + { + public: + static ParaDataArrayInt64 *New(DataArrayInt64 *seqDa); + DataArrayIdType *buildComplement(long nbOfElems) const; + %extend + { + ParaDataArrayInt64(DataArrayInt64 *seqDa) + { + return ParaDataArrayInt64::New(seqDa); + } + } + }; + + class ParaSkyLineArray : public RefCountObject + { + public: + static ParaSkyLineArray *New(MEDCouplingSkyLineArray *ska, DataArrayIdType *globalIds); + %extend + { + ParaSkyLineArray(MEDCouplingSkyLineArray *ska, DataArrayIdType *globalIds) + { + return ParaSkyLineArray::New(ska,globalIds); + } + + ParaSkyLineArray *equiRedistribute(mcIdType nbOfEntities) const + { + MCAuto ret(self->equiRedistribute(nbOfEntities)); + return ret.retn(); + } + + MEDCouplingSkyLineArray *getSkyLineArray() const + { + MEDCouplingSkyLineArray *ret(self->getSkyLineArray()); + if(ret) + ret->incrRef(); + return ret; + } + + DataArrayIdType *getGlobalIdsArray() const + { + DataArrayIdType *ret(self->getGlobalIdsArray()); + if(ret) + ret->incrRef(); + return ret; + } + } + }; } /* This object can be used only if MED_ENABLE_FVM is defined*/ @@ -179,3 +317,10 @@ public: return ret; } } + +%pythoncode %{ +if MEDCouplingUse64BitIDs(): + ParaDataArrayInt = ParaDataArrayInt64 +else: + ParaDataArrayInt = ParaDataArrayInt32 +%}