Salome HOME
refactor!: remove adm_local/ directory
[tools/medcoupling.git] / src / ParaMEDMEM / OverlapElementLocator.hxx
index 3ffd028dbb57ce1df667e5168151499fd17bbc08..5d44c2ff97c73c236ce0f6b79face87b3d14b772 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -25,7 +25,7 @@
 #include "MEDCouplingNatureOfField.hxx"
 #include "MEDCouplingPointSet.hxx"
 #include "MEDCouplingMemArray.hxx"
-#include "MEDCouplingAutoRefCountObjectPtr.hxx"
+#include "MCAuto.hxx"
 
 #include <mpi.h>
 #include <vector>
@@ -34,7 +34,7 @@
 
 //#define DEC_DEBUG
 
-namespace ParaMEDMEM
+namespace MEDCoupling
 {
   class ParaFIELD;
   class ProcessorGroup;
@@ -55,9 +55,9 @@ namespace ParaMEDMEM
     std::string getSourceMethod() const;
     std::string getTargetMethod() const;
     const MEDCouplingPointSet *getSourceMesh(int procId) const;
-    const DataArrayInt *getSourceIds(int procId) const;
+    const DataArrayIdType *getSourceIds(int procId) const;
     const MEDCouplingPointSet *getTargetMesh(int procId) const;
-    const DataArrayInt *getTargetIds(int procId) const;
+    const DataArrayIdType *getTargetIds(int procId) const;
     bool isInMyTodoList(int i, int j) const;
     void debugPrintWorkSharing(std::ostream & ostr) const;
   private:
@@ -68,12 +68,12 @@ namespace ParaMEDMEM
     bool intersectsBoundingBox(int i, int j) const;
     void sendLocalMeshTo(int procId, bool sourceOrTarget, OverlapInterpolationMatrix& matrix) const;
     void receiveRemoteMeshFrom(int procId, bool sourceOrTarget);
-    void sendMesh(int procId, const MEDCouplingPointSet *mesh, const DataArrayInt *idsToSend) const;
-    void receiveMesh(int procId, MEDCouplingPointSet* &mesh, DataArrayInt *&ids) const;
+    void sendMesh(int procId, const MEDCouplingPointSet *mesh, const DataArrayIdType *idsToSend) const;
+    void receiveMesh(int procId, MEDCouplingPointSet* &mesh, DataArrayIdType *&ids) const;
   private:
-    typedef MEDCouplingAutoRefCountObjectPtr< MEDCouplingPointSet >  AutoMCPointSet;
-    typedef MEDCouplingAutoRefCountObjectPtr< DataArrayInt >         AutoDAInt;
-    typedef std::pair<int,bool>  Proc_SrcOrTgt;  // a key indicating a proc ID and whether the data is for source mesh/field or target mesh/field
+    typedef MCAuto< MEDCouplingPointSet >  AutoMCPointSet;
+    typedef MCAuto< DataArrayIdType >      AutoDAInt;
+    typedef std::pair<int,bool>  Proc_SrcOrTgt;  ///< a key indicating a proc ID and whether the data is for source mesh/field or target mesh/field
 
     static const int START_TAG_MESH_XCH;
 
@@ -93,14 +93,16 @@ namespace ParaMEDMEM
     std::vector< ProcCouple > _to_do_list;
     //! list of procs the local proc will have to send mesh data to:
     std::vector< Proc_SrcOrTgt > _procs_to_send_mesh;
-//    /*! list of procs the local proc will have to send field data to for the final matrix-vector computation:
-//     * This can be different from _procs_to_send_mesh (restricted to Source) because interpolation matrix bits are computed on a potentially
-//     * different proc than the target one.   */
+    /*! list of procs the local proc will have to send field data to for the final matrix-vector computation:
+     * This can be different from _procs_to_send_mesh (restricted to Source) because interpolation matrix bits are computed on a potentially
+     * different proc than the target one.   */
     std::vector< int > _procs_to_send_field;
     //! Set of distant meshes
     std::map< Proc_SrcOrTgt,  AutoMCPointSet > _remote_meshes;
     //! Set of cell ID mappings for the above distant meshes (because only part of the meshes are exchanged)
     std::map< Proc_SrcOrTgt, AutoDAInt > _remote_elems;
+    //! Bounding boxes (for source and target) for **all** procs.
+    //! Format minmax : Xmin_src,Xmax_src,Ymin_src,Ymax_src,Zmin_src,Zmax_src,Xmin_trg,Xmax_trg,Ymin_trg,Ymax_trg,Zmin_trg,Zmax_trg
     double* _domain_bounding_boxes;
     //! bounding box absolute adjustment
     double _epsAbs;