-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2016 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
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include "MEDPARTITIONER.hxx"
#include "MEDCouplingUMesh.hxx"
+#include "BBTree.txx"
#include <string>
#include <vector>
MEDPARTITIONER_EXPORT void FieldShortDescriptionToData(const std::string& description,
std::string& fieldName, int& typeField, int& entity, int& DT, int& IT);
- ParaMEDMEM::DataArrayInt *CreateDataArrayIntFromVector(const std::vector<int>& v);
- ParaMEDMEM::DataArrayInt *CreateDataArrayIntFromVector(const std::vector<int>& v, const int nbComponents);
- ParaMEDMEM::DataArrayDouble *CreateDataArrayDoubleFromVector(const std::vector<double>& v);
+ MEDCoupling::DataArrayInt *CreateDataArrayIntFromVector(const std::vector<int>& v);
+ MEDCoupling::DataArrayInt *CreateDataArrayIntFromVector(const std::vector<int>& v, const int nbComponents);
+ MEDCoupling::DataArrayDouble *CreateDataArrayDoubleFromVector(const std::vector<double>& v);
- ParaMEDMEM::MEDCouplingUMesh *CreateEmptyMEDCouplingUMesh();
+ MEDCoupling::MEDCouplingUMesh *CreateEmptyMEDCouplingUMesh();
- std::vector<std::string> BrowseFieldDouble(const ParaMEDMEM::MEDCouplingFieldDouble* fd);
+ std::vector<std::string> BrowseFieldDouble(const MEDCoupling::MEDCouplingFieldDouble* fd);
std::vector<std::string> BrowseAllFields(const std::string& myfile);
std::vector<std::string> BrowseAllFieldsOnMesh(const std::string& myfile, const std::string& mymesh, const int idomain);
std::vector<std::string> GetInfosOfField(const char *fileName, const char *meshName, const int idomain );
-#ifdef HAVE_MPI2
+#ifdef HAVE_MPI
//not adviced, interblocking, use sendAndReceive
//void SendVectorOfString(const std::vector<std::string>& vec, const int target);
//std::vector<std::string> RecvVectorOfString(const int source);
std::vector<int>* RecvIntVec(int source);
void RecvIntVec(std::vector<int>& vec, const int source);
- void SendDataArrayInt(const ParaMEDMEM::DataArrayInt* da, const int target);
- ParaMEDMEM::DataArrayInt *RecvDataArrayInt(const int source);
- void SendDataArrayDouble(const ParaMEDMEM::DataArrayDouble* da, const int target);
- ParaMEDMEM::DataArrayDouble *RecvDataArrayDouble(const int source);
+ void SendDataArrayInt(const MEDCoupling::DataArrayInt* da, const int target);
+ MEDCoupling::DataArrayInt *RecvDataArrayInt(const int source);
+ void SendDataArrayDouble(const MEDCoupling::DataArrayDouble* da, const int target);
+ MEDCoupling::DataArrayDouble *RecvDataArrayDouble(const int source);
void TestVectorOfStringMpi();
void TestMapOfStringIntMpi();
static int _Randomize;
static int _Atomize;
static int _Creates_Boundary_Faces;
+ static int _Create_Joints;
static int _Is0verbose; //trace cout if rank 0 and verbose
static std::vector<std::string> _File_Names; //on [iold]
static std::vector<std::string> _Mesh_Names; //on [iold]
/*! used for descriptions of components of fields for example...*/
static std::vector<std::string> _General_Informations;
};
+
+
+
+ /*!
+ * \brief Class encapsulating BBTree of dimension given at construction and
+ * providing all features of BBTree
+ */
+ class BBTreeOfDim
+ {
+ void * _tree;
+ void (BBTreeOfDim::*_PgetElementsAroundPoint)( const double* coordsPtr,
+ std::vector<int>& elems ) const;
+ void (BBTreeOfDim::*_PgetIntersectingElems)( const double* bb,
+ std::vector<int>& elems ) const;
+
+ template< int dim>
+ void _getElementsAroundPoint( const double* coordsPtr,
+ std::vector<int>& elems ) const
+ {
+ ((BBTree<dim,int>*)_tree)->getElementsAroundPoint( coordsPtr, elems );
+ }
+ template< int dim>
+ void _getIntersectingElems(const double* bb,
+ std::vector<int>& elems) const
+ {
+ ((BBTree<dim,int>*)_tree)->getIntersectingElems( bb, elems );
+ }
+ public:
+
+ BBTreeOfDim( int dim,
+ const double* bbs,
+ int* elems,
+ int level,
+ int nbelems,
+ double epsilon=1e-12);
+ ~BBTreeOfDim();
+ void getElementsAroundPoint(const double* coordsPtr, std::vector<int>& elems ) const;
+ void getIntersectingElems (const double* bb, std::vector<int>& elems) const;
+ };
}
#endif