Mesh Oriented datABase  (version 5.5.1)
An array-based unstructured mesh library
ParallelData.hpp
Go to the documentation of this file.
1 #ifndef MOAB_PARALLEL_DATA_HPP
2 #define MOAB_PARALLEL_DATA_HPP
3 
4 #include "moab/Forward.hpp"
5 #include "moab/Range.hpp"
6 
7 namespace moab
8 {
9 
10 class ParallelComm;
11 
12 /**
13  * \brief Parallel data in MOAB
14  * \author Tim Tautges
15  *
16  * This class implements methods to retrieve information about
17  * the parallel mesh from MOAB. Most of this data can be retrieved
18  * directly from MOAB as sets and tags; this class provides convenience
19  * methods implemented on top of other MOAB functions.
20  *
21  */
23 {
24  public:
25  //! constructor; if non-null parallelcomm, that is used to
26  //! determine rank, otherwise rank is taken from impl
27  ParallelData( Interface* impl, ParallelComm* pcomm = NULL );
28 
29  //! return partition sets; if tag_name is input, gets sets with
30  //! that tag name, otherwise uses PARALLEL_PARTITION tag
31  ErrorCode get_partition_sets( Range& part_sets, const char* tag_name = NULL );
32 
33  //! get communication interface sets and the processors with which
34  //! this processor communicates; sets are sorted by processor
35  ErrorCode get_interface_sets( std::vector< EntityHandle >& iface_sets, std::vector< int >& iface_procs );
36 
37  private:
38  //! interface instance to which this instance corresponds
40 
41  //! ParallelComm object to which this is bound
43 };
44 
45 inline ParallelData::ParallelData( Interface* impl, ParallelComm* pcomm ) : mbImpl( impl ), parallelComm( pcomm ) {}
46 
47 } // namespace moab
48 
49 #endif